MPxNode中的非Maya c++对象属性



我正在开发一个c++插件,我想知道一种通过场景与非玛雅类对象一起工作的方法。我的意思是,我想有一个类的实例外部玛雅API作为节点类的属性。该类相当复杂,由多个类组成。

我所看到的是,一个节点可以给我结构化数据存储,但据我所知,它只适用于Maya类型,这对我的目的是不够的。

现在我使用MPxCommand来执行该对象的计算,但是一旦它完成,它就被销毁了。我想让它在场景中保持活力,所以我需要以某种方式使用节点。目前没有必要存储这些数据。

那么,你知道在Maya中做一个典型的OOP类的等效方法吗?我没有在devkit或文档中找到任何示例。

class Foo : public MPxNode
{
    public:
        Foo () {};
    virtual         ~Foo () {};
    virtual MStatus compute(const MPlug& plug, MDataBlock& data);
    static  void*   creator();
    static  MStatus initialize();
    static MObject  inputMesh;
    static MTypeId  id;
    // I want to keep it alive through the scene.
    // static ClassBar  myBarObject; // How can I do this??
    // barFunction(...); // use ClassBar myBarObj
};
MObject Foo::inputMesh;
MTypeId Foo::id( 0x80000 );
//ClassBar  Foo::myBarObj; // ????

非常感谢

不,没有办法让你从纯粹的面向对象的角度创建一个玛雅节点,并从我们的库中派生出任何类。Maya MPxNode是一个代理类,封装了Maya内部节点逻辑。但是,当您实现自定义节点时,您将描述属性应该是什么,因此Maya可以处理您的数据并在DG中创建连接。设置和处理属性的方式由您决定。当Maya请求重新计算属性值时,您需要将自己的逻辑放入computer()方法中。

有关定制节点和库集成的更多详细信息,请参阅此处发布的文章http://around-the-corner.typepad.com/

相关内容

  • 没有找到相关文章

最新更新