Maya c++ API,移动对象?

Maya c++ API, moving an object?

我正在尝试编写 Maya C++ 插件,但遇到了一些问题。

我只想创建一个相机,然后在视口中移动它。我有:

    MObject camera;
    MDagPath cameraPath;
    // create new camera
    MFnCamera fnCamera;
    fnCamera.create(camera);
    fnCamera.getPath(cameraPath);

    MFnTransform fn(camera);
    MVector trans(12, 12, 12);
    fn.setTranslation(trans, MSpace::kWorld);

这可以很好地创建相机,但不会移动它。我缺少什么来翻译创建的对象?谢谢。

啊,我完全错了。这有效:

MDagModifier dagModifier;

    //Create the camera transform node.
    MObject cameraTransformObj = dagModifier.createNode("transform");
    dagModifier.renameNode(cameraTransformObj, "myCameraTransform");

    //Create the camera shape node as a child of the camera transform node.
    MObject cameraShapeObj = dagModifier.createNode("camera", cameraTransformObj);
    dagModifier.renameNode(cameraShapeObj, "myCameraShape");

    dagModifier.doIt();

MFnTransform transformFn(cameraTransformObj);
transformFn.setTranslation(MVector(0, 5, 30), MSpace::kTransform);

我发现只要把space的形式MSpace::world改成MSpace::object,你之前提供的方法就可以了。也许是因为平移变换是最终世界矩阵的一部分,这个函数的变换space可能意味着space将添加变换矩阵。

变化:

fn.setTranslation(trans, MSpace::kWorld);

至:

fn.setTranslation(trans, MSpace::kObject);

对不起,我想我错了。使用 MSpace::kWorld 会 return 失败,因为 MFnTransform 对象不是由 dagPath 对象创建的,在这种情况下使用 MSpace::kObject 不会 return 失败。