インポート アプリで 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 のカスタム マテリアル インスタンスに入力したデータを抽出する方法がわかりません。
ここで正しいアプローチは何ですか?