Maya c++ API,将一个对象作为另一个对象的父对象?

Maya c++ API, parenting one object to another?

我正在学习 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);

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

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

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);