如何将 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。
我有一个定义 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。