将自定义数据传递给MPxLocator (Maya API)的属性

Pass custom data to attributes of MPxLocator (Maya API)

本文关键字:API Maya 属性 MPxLocator 数据 自定义      更新时间:2023-10-16

在使用Maya API的cpp类中,我启动了一个名为myLocatorNode的自定义MPxLocator实例,并将其属性传递给一些变量:

MDagModifier dagMod;
MDGModifier mdgMod;
    myObj=dagMod.createNode("myLocatorNode", <existing transform MObject>);
    dagMod.doIt();
    MFnDagNode myDagNode(myObj);
    myDagNode.findPlug("attributeOne").setValue(1.5);
    myDagNode.findPlug("attributeTwo").setValue(2.0);
    myDagNode.findPlug("attributeThree").setValue(3.1);
    myDagNode.findPlug("classAttrib").setValue(classPointer); // <- which type should I use ?

自定义定位器类:

MStatus myLocatorNode::initialize()
{
    MFnNumericAttribute nAttr;
    MFn???Attribute customAttr;  <-- What can I use here ?
    attr1= nAttr.create( "attributeOne", "ao", MFnNumericData::kFloat,1.0 );
    attr2= nAttr.create( "attributeTwo", "ao", MFnNumericData::kFloat,1.0 );
    attr3= nAttr.create( "attributeThree", "ao", MFnNumericData::kFloat,1.0 );
    attr4= customAttr.create("classAttrib","ca", MyCustomClass *); <-- and here ?
        ...   
    }

我想传递给属性/插入指向自定义类的指针。定位器类中的哪个属性类型能帮我做到这一点?由于

最惠国吗? ?属性customAttr;<——这里可以用什么?

你说的类指针是指内存地址吗?在x64位机器上,指针是int64型的,所以需要存储int64型的整数。您可以使用MFnNumericAttribute::createAddress()方式或存储您自己的int64,如下所述:http://around-the-corner.typepad.com/adn/2012/11/no-64bit-integer-attribute-in-maya-no-way.html