如何使用Maya C+从.mb格式的自定义材质中提取用户数据+;应用程序编程接口? 当我在导入的应用程序中用C++ Maya API解析.MB时,如何提取用户输入到我自定义材料字段中的数据?(我怀疑我已经可以访问包含用户输入的MObject,但不知道如何提取它)

如何使用Maya C+从.mb格式的自定义材质中提取用户数据+;应用程序编程接口? 当我在导入的应用程序中用C++ Maya API解析.MB时,如何提取用户输入到我自定义材料字段中的数据?(我怀疑我已经可以访问包含用户输入的MObject,但不知道如何提取它),c++,import,export,maya,C++,Import,Export,Maya,以下是更详细的情况: 用C++马亚阿丕定义了一个自定义材料(我创建了一个.MLL,定义了一个自定义的MPXNoad,它又为用户定义了一些浮动和枚举字段) 在Maya中,我可以使用自定义材质为对象“指定新材质”,然后修改自定义材质的数据字段并保存.mb 在我的C++玛雅导入器中,我遍历DAG和DG,并且如预期的那样,注意到一个自定义材料的出现(通过标识MObject作为唯一调用的对象:HASFN(MFN::KPuLUnListNo结)返回true)来注意。 我可以使用MFnDependencyN

以下是更详细的情况:

  • 用C++马亚阿丕定义了一个自定义材料(我创建了一个.MLL,定义了一个自定义的MPXNoad,它又为用户定义了一些浮动和枚举字段)
  • 在Maya中,我可以使用自定义材质为对象“指定新材质”,然后修改自定义材质的数据字段并保存.mb
  • 在我的C++玛雅导入器中,我遍历DAG和DG,并且如预期的那样,注意到一个自定义材料的出现(通过标识MObject作为唯一调用的对象:HASFN(MFN::KPuLUnListNo结)返回true)来注意。
  • 我可以使用MFnDependencyNode::attribute(“datafieldName”)按名称提取每个自定义着色器的数据字段——尝试提取不存在的数据字段会按预期失败
…但这些提取的数据字段是MObject的,我不知道如何提取用户在Maya的自定义材质实例中输入的数据


正确的方法是什么?

以下是我一直在寻找的缺失链接:

MFnDependencyNode::findPlug(“datafieldName”)返回一个MPlug,然后提供对用户输入数据的访问


(我在搜索“属性”和“数据字段”之类的名称——我没有想到要查找任何称为“插件”的名称。)

插件有点像属性的一半。这就是为什么它有自己的术语。用户永远不会暴露在api中提供的位置。@joojaa您能详细说明调用插件“半个属性”的含义吗?我现在认为属性是一个数据字段,就像C中结构的一个成员。那么,“半个属性”是什么呢?属性是计算指令,存储是可选函数。建立连接时,插头将在连接另一端读取时触发属性。现在,另一侧的插头可能是也可能不是完全合格的值存储。可能是Maya实际上仅使用源插件中连接的数据字段一次。目标可能只是存储的幻觉,除非属性设置为缓存。@joojaa因此,将插件连接到属性会导致该属性从该插件读取——而该插件可能是存储的数据字段,或者是一次性计算的值(或者可能是每次查询时都重新计算的值),这听起来正确吗?是的。如果需要更改,很可能是缓存和计算的值。不读取数据字段始终要求Maya进行计算。这将使Maya决定计算效果最佳的动作。