0

インポート アプリで C++ Maya API を使用して .mb を解析しているときに、ユーザーがカスタム マテリアルのフィールドに入力したデータを抽出するにはどうすればよいですか? (ユーザーの入力を含む MObject に既にアクセスしていると思われますが、それを抽出する方法がわかりません)

より詳細な状況は次のとおりです。

  • C++ Maya API を使用してカスタム マテリアルを定義しました (カスタム MPxNode を定義する .mll を作成し、それによってユーザーのいくつかの float および enum フィールドを定義します)。
  • Maya では、カスタム マテリアルを使用してオブジェクトに「新しいマテリアルを割り当て」、カスタム マテリアルのデータ フィールドを変更して .mb を保存できます。
  • 私の C++ Maya インポーターで、DAG と DG をトラバースし、予想どおり、カスタム マテリアルの 1 つのオカレンスに注意します (そのため、マテリアル MObject を呼び出し MObject::hasFn(MFn::kPluginDependNode) が返す唯一のものとして識別することによって注意します)。真実)
  • MFnDependencyNode::attribute("datafieldName") を使用して、カスタム シェーダの各データ フィールドを名前で抽出できます -- 存在しないデータ フィールドを抽出しようとすると、期待どおりに失敗します

...しかし、これらの抽出されたデータフィールドは MObject のものであり、ユーザーが Maya のカスタム マテリアル インスタンスに入力したデータを抽出する方法がわかりません。

ここで正しいアプローチは何ですか?

4

1 に答える 1

0

これが私が探していたミッシングリンクです:

MFnDependencyNode::findPlug("datafieldName") は MPlug を返し、MPlug はユーザが入力したデータへのアクセスを提供します。

(「属性」や「データフィールド」などの名前を検索していましたが、「プラグ」と呼ばれるものを探すことは思いつきませんでした)

于 2012-11-30T23:04:43.923 に答える