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