0

我正在学习 Maya C++ API,并且被困在最简单的任务上。

我有一个对象(定位器):

MObject locatorObj = dagModifier.createNode("transform");
MObject locShapeObj = dagModifier.createNode("locator", locatorObj);
dagModifier.renameNode(locatorObj, "root");
dagModifier.renameNode(locShapeObj, "rootShape");

另一个:

//root loc
MObject locatorObj2 = dagModifier.createNode("transform");
MObject locShapeObj2 = dagModifier.createNode("locator", locatorObj);
dagModifier.renameNode(locatorObj2, "root2");
dagModifier.renameNode(locShapeObj2, "root2Shape");

我想把第二个放在第一个下面。我努力了:

//parent t
MStatus status;
MFnDagNode fnRoot(locatorObj);

status = fnRoot.addChild(locatorObj2, MFnDagNode::kNextPos, true);

但是当我运行它时 Maya 崩溃了。我在这里使用正确MFnDagNode吗?我也试过:

MFnTransform rootTransform (locatorObj);
status = rootTransform.addChild(locatorObj2, MFnDagNode::kNextPos, true);

但我也遇到了崩溃。我哪里错了?谢谢你。

4

1 回答 1

0

我最终使用关节而不是定位器。这有效:

MFnIkJoint* rootJoint = new MFnIkJoint();
MObject rootTransform = rootJoint->create(MObject::kNullObj, &status);

MFnIkJoint* Joint = new MFnIkJoint();
MObject Transform = Joint->create(MObject::kNullObj, &status);

MStatus status = rootJoint ->addChild(Transform , MFnDagNode::kNextPos, false);
于 2018-02-18T12:54:14.510 回答