2017-05-10 6 views
0

PolyModifierNodeを使用している場合、ノードにはinMeshoutMeshという属性/プラグがあり、inMeshは非表示になり、outMeshに置き換えられます。 しかし、一般的なMPxNodeには、多くの入力と出力があり、複雑な方法でネットワーク化することができます。MPxNodeの出力メッシュはどのようになっていますか?

MPxNodeの構造を理解する上での私の問題は、入力のどのオブジェクトがどの出力オブジェクトにどのように変換されるのかを私は知りません。 グラフの最後のノードのoutMeshのようなものがありますが、SceneRenderer.inputMeshesプラグに接続されていますが、mayaは何らかの方法で自動的に検出されたようです。outMeshプラグをレンダリングする必要があります。

最後に、入力メッシュと追加のコントロールメッシュの配列を取得し、元のメッシュを置き換える修正メッシュの配列を出力するノードを作成します。

私は、グループ内のすべてのオブジェクトが互いに影響を及ぼしている計算を使用しているため、1つずつ行うことはできません。入力ごとに1つのノードを使用することは可能ですが、計算機能は他のすべての入力メッシュに対しても計算をトリガする必要があります。

答えて

3

Mayaは未接続のプラグを検出しません。代わりに、ノードのネットワーク内の何かが変更されたときに要求を評価し、必要に応じて再評価を強制します。 MPxNode::attributeAffects()またはその同等のPythonを使用してノードを初期化するときに気にする条件を設定します。入力に対する変更は、必要に応じて他のノードによって下流にプッシュされます。あなたのノードに変更が入ると、適切なプラグを引数としてMPxNode::compute compute()に渡します。ノードは出力を更新し、チェーンに沿って他のノードに渡します。

おそらく、ノードに入力ノードの配列を返し、出力の配列を返したいとは思わないでしょう。一度に1つのノードだけを変更するノードを作成する方が簡単で、より多くのマヤ・エスクが必要です。これは、依存関係グラフ内のチャンネルをローカライズし、シーンをより速く実行させるのに役立ちます。

+0

私は出力メッシュを自分で作成する必要があります。つまり、ノードを作成するコマンドですか?私はオブジェクトが相互に影響を与えているので、共通のノードを持っている必要があります。それは次々に計算することができません。私は、変換(つまりグループ)のためのノードやセットのためのノードを持つことが好きでしたが、これはうまくいくようには見えません。セットを元に戻すことはできません。ノードをトランスフォームで使用すると問題が発生しました。 – allo

+0

もう1つの短い質問:典型的なノードが(ビューからアウトライナーに)オリジナルを隠して結果を作成する方法は共通の方法ですか?それはDAGから削除されているのか、何らかの方法で隠されていますか? – allo

+0

この場合、オブジェクト空間内のすべてのジオメトリ操作を実行して、ジオメトリシェイプの内容を変更し、変換階層だけを残してください。一度に複数の図形を管理する必要がある場合は、複数の属性を作成できます。私はただ1つのメッシュを出力し、次に複数の出力メッシュを管理するのではなく、古い古いMaya 'polySeparate'ノードを使って再び分割することを試みます。 もう1つは、これはノードである必要がありますか?コマンドやスクリプトを作成する方がはるかに簡単です。 – theodox

関連する問題