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);
我发现如果您只是将空格形式MSpace::world更改为MSpace::object,则您提供的先前方法就可以了。也许是因为平移变换是最终世界矩阵的一部分,而这个函数的变换空间可能意味着将添加变换矩阵的空间。
改变:
fn.setTranslation(trans, MSpace::kWorld);
自:
fn.setTranslation(trans, MSpace::kObject);
对不起,我想我错了。使用 MSpace::kWorld 将返回失败,因为 MFnTransform 对象不是由 dagPath 对象创建的,在这种情况下,使用 MSpace::kObject 不会返回失败。
相关文章:
- 将对象移动到std::shared_ptr
- std::使用内部对象移动 - 与调用不匹配
- 基于范围的 for 循环将对象移动到另一个容器中?
- 将列表的对象C++移动到另一个对象
- 从移出对象移动
- C++如何将对象移动到 nullptr
- Qt 通过将对象移动到线程来跨线程发出信号
- 如何将对象移动到std::async()
- 2D 阵列/网格中的对象移动
- 无法将套接字对象移动到std::vector中
- 在将对象移动到另一个线程后,不能简单地删除该对象
- 如何将相互依赖的对象移动到一起并维护内部引用
- 在OpenGL中将2D对象移动到一个点
- 如何将对象移动到未初始化的内存中
- 复制构造函数并通过跟踪对象移动语义
- SFML -将对象移动到coord
- 在堆栈程序中实现一个计数器,用于计算对象移动的次数
- Std::将Std::unique_ptr对象移动到STL容器中.(MSVC编译器问题)
- 将临时对象移动到矢量中
- 将c++对象移动到内存位置