Maya Api中的deleteNode使Viewport 2.0中的Maya崩溃
deleteNode in Maya Api crashes Maya in Viewport 2.0
我有一个Maya api cpp代码,创建许多相同实例的mpxlocator。
initializePlugin功能:
pluginFn.registerNode(
"unitNode",
unitNode::id,
&unitNode::creator,
&unitNode::initialize,
MPxNode::kLocatorNode,
&unitNode::drawDbClassification);
MHWRender::MDrawRegistry::registerDrawOverrideCreator(
unitNode::drawDbClassification,
unitNode::drawRegistrantId,
unitNodeDrawOverride::Creator);
节点创建功能:
MDagModifier dagMod;
for (int i=0;i<100;i++)
externalClass->objArray[i]=dagMod.createNode("unitNode", MObject::kNullObj);
删除(从节点#15启动,例如在属性更改后):
MDGModifier mdg;
mdg.deleteNode(externalClass->objArray[99]);
当其中一个定位器中的特定属性被更改时,我将删除另一个给定的定位器(因此永远不会删除其本身)。MDGModifer::deleteNode功能运行良好,但maya随后立即崩溃(仅在Viewport 2.0中,而不是在常规Viewport中)。
我的假设是,玛雅仍然有在其队列中启动prepareForDraw和绘制函数为所有定位器,但当我删除其中一个,玛雅崩溃。如何在属性更改后安全地删除节点?
如果不查看要调试的代码,很难确定导致崩溃的原因,但在您的情况下,我会尝试先断开要删除的节点的所有传入和传出连接,然后再尝试删除节点。
我最终使用MGlobal::executeCommand("delete <nodename>");
不会崩溃maya。它似乎比deleteNode api做了别的事情。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- .cpp和.h文件中的模板专用化声明
- 反向给定链表中的K节点
- 正在查找文档以获得PS4平台的C++中的设备信息
- enum是C++中的宏变量还是整数变量
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 将字符串存储在c++中的稳定内存中
- 文本文件中的单词链表
- 递归函数计算序列中的平方和(并输出过程)
- 如何从C++中的依赖类型中获得它所依赖的类型
- 使用 Python API 获取 Maya 中的引用节点列表
- 在 Python 中打开 Maya callBacks 或C++查询内存中的所有回调
- Maya API中的计算WorldMatrix
- maya自定义图像平面中的公共可见自定义属性
- 将自定义属性分组到 Maya 中的节点
- MPxNode中的非Maya c++对象属性
- Maya Api中的deleteNode使Viewport 2.0中的Maya崩溃
- 如何在maya中加载qt编译的c++代码
- 如何在Maya中创建带有边界框的MPxTransform节点
- Maya API (c++) -类静态成员变量及其在其他实例中的个性