如何将 MPxData 传输到 Maya 的计算功能

How to transmit MPxData to the compute function of Maya

我有一个定义 MPxNode 的 Maya api(在 C++ 中),以及一些实例化该 MPxNode 的主要代码。

我如何将数据传递到 MPxNode,以便可以从计算方法访问数据? 来自主要代码:

myMpxObj=dagMod.createNode("myMpxNode");

在 MyMPxNode 中:

MStatus myMpxNode::compute( const MPlug& plug, MDataBlock& block )
{
// How to get here values from the main part ?
    return MS::kUnknownParameter;
}

谢谢。

找到了:

int value;
MObject thisObj = thisMObject();
MFnDependencyNode dgNode( thisObj );
dgNode.findPlug("myAttribute").getValue(value);

当您想在 MpxNode 的计算函数中获取值时,更有效的方法是获取 MDataBlock 中您的属性的 MDataHandle。

findPlug() 速度较慢,但​​在您无权访问数据块的情况下是必需的,例如在命令插件的 doit() 方法或定位器中的 draw() 中。

MStatus myMpxNode::compute( const MPlug& plug, MDataBlock& block )
{
    if (plug != myOutPlug) return MS::kUnknownParameter;

    int value = block.inputValue(myAttribute).asInt();
    // set output
    return MS::kSuccess;
}

这是文档中的 dependency node example