Maya Api中的deleteNode在Viewport 2.0

时间:2015-07-20 10:09:37

标签: c++ events attributes nodes maya

我有一个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中)。

我的假设是Maya仍然在其队列中启动prepareForDraw和绘制函数对于所有定位器,但是当我删除其中一个时,Maya正在崩溃。如何在属性更改后安全删除节点?

2 个答案:

答案 0 :(得分:0)

如果不查看要调试的代码,很难确定可能导致崩溃的原因,但在您的情况下,我会先尝试先删除要删除的节点的所有传入和传出连接,然后再尝试删除节点

答案 1 :(得分:0)

我最终使用MGlobal::executeCommand("delete <nodename>");并没有崩溃maya。它似乎除了deleteNode api之外还有其他功能。