【问题标题】:3ds Max C++ Plugin Modifier - Saving Topology Data for Modifiers3ds Max C++ 插件修改器 - 为修改器保存拓扑数据
【发布时间】:2014-07-08 00:45:04
【问题描述】:

现在我正试图找到一种方法来避免在制作动画时每帧重建我的 MNMesh 拓扑。每次我从 ModifyObject 开始时,我都会得到一个全新的网格,它没有被任何东西触及,然后我在我的修改器中进行细分。完成并返回到我的修改器进行另一次传递后,我将未修改原始网格。

我想做的是在我的修饰符中保存一个指向 Face 数据和 Mapping 数据的指针。如果没有拓扑或我的修饰符设置更改,我只想重用那些指向该数据的指针。这将提高性能,因此唯一需要更新的是我的顶点数据。

问题是当我的修改器完成时,3ds max 会清理 MNMesh 的面数据和映射数据。指针最终指向垃圾数据。

有什么方法可以防止每次调用我的修改器时删除人脸和地图数据?

感谢您的宝贵时间。

【问题讨论】:

    标签: c++ 3dsmax


    【解决方案1】:

    我最终为自己找到了解决办法......

    现在在 PolyObject 上,我为 TriObject 调用 ConvertToType 并将其存储为它创建一个新对象,而不是只给我一个指向旧对象的指针(Max 不会删除它)。然后下一个周期我检查是否有任何改变,如果没有,那么我在 3ds 传入的对象上调用 FreeChannels 来获取我传入的通道。然后我在这些相同的通道上使用 ShallowCopy,但这只会创建指向该信息的指针用于传入的Object,当它传回Max时将被删除。在 ShallowCopy 以防止删除之后,我在那些通道上调用 NewAndCopyChannels,这将为这些指针提供它们自己的数据指向,因此我存储的对象不会被删除。

    所以现在解决了我遇到的问题,我不确定我是否会遇到与此更改相关的任何其他问题,但这是我需要的优化修复。

    【讨论】:

      猜你喜欢
      • 2014-06-23
      • 2014-03-29
      • 2016-12-18
      • 1970-01-01
      • 2019-03-06
      • 2021-01-02
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      相关资源
      最近更新 更多