このチュートリアルでは、変形メッシュで張力の可視化を設定し、リギングおよびキャラクタ FX のパイプラインでダイナミック ジオメトリ アトリビュートを使用するための主要なワークフローについて学習します。最終的に、メッシュ上の伸長データと収縮データを可視化する方法を理解できます。

ダイナミック ジオメトリ アトリビュートのワークフロー
始める前に
必要なもの:
- 変形メッシュ(この例では、スカッシュ デフォーマを含む円柱を使用します)
- Maya ノード エディタの基本知識
-
重要: キャッシュの再生(Cache Playback)は無効にしてください(Maya インターフェイス右下)。キャッシュ再生により、DGA ノードが正しく更新されない場合があります。
手順 1: シーンをセットアップする
単純なテスト シーンを作成して、張力の動作を確認します。
- ビューポートに十分な解像度のポリゴン円柱を作成します。
- 張力を視覚的にわかりやすくするには、高さ(Height)を 6、高さのサブディビジョン(Height Subdivisions)を 12 以上に設定します。
- 半径のサブディビジョン(Radius Subdivisions)を 8 以上に設定します。
- 円柱にスカッシュデフォーマを追加します(デフォーム > ノンリニア > 収縮 (Deform > Nonlinear > Squash))。
- スカッシュ デフォーマの係数(Factor)アトリビュートをアニメートし(-2 から 2 の間の値を試します)、円柱が圧縮、伸長する様子を確認します。
-
注: タイムライン コントロールでキャッシュの再生(Cache Playback)が無効になっていることを確認してください。
これにより、時間の経過とともに変形するメッシュが得られ、張力の計算に最適です。
手順 2: ノード エディタを準備する
必要なすべての接続が表示されるようにノード エディタを設定します。
- ノード エディタを開きます(ウィンドウ > ノードエディタ(Windows > Node Editor))。
- アウトライナ(Outliner)で円柱シェイプ ノードを選択し、ノード エディタ(Node Editor)に追加します。
- 展開矢印(ノード エディタ(Node Editor)の右上)を複数回クリックすると、デフォーマで作成されたオリジナル ジオメトリを含め、すべての接続が表示されます。
- これで、変形した円柱シェイプと元のジオメトリ ノードの両方が表示されます。
手順 3: 張力ノードを作成する
メッシュで伸長と収縮が発生している場所を計算します。
- ノード エディタ(Node Editor)で、Tab キーを押すか、右クリックして dgaTension ノードを作成します。
- 重要: dgaTension ノードを右クリックし、すべてのアトリビュートを表示(Show All Attributes)を選択します(一部のノードでは既定で出力のみが表示されます)。
- 次の接続を行います。
- オリジナル ジオメトリの outMesh を dgaTension の元のジオメトリ(Original Geometry)入力に接続します。
- スカッシュ デフォーマで outputGeometry を展開し、出力ジオメトリ(Output Geometry)[0]を dgaTension の入力ジオメトリ(Input Geometry)に接続します。
dgaTension ノードは、変形したメッシュを元のメッシュと比較し、その変形に基づいて表面張力を計算します。
手順 4: 結果を可視化する
これらの張力の値を、次のものに変換します。
- ノード エディタで dgaVisualizer ノードを作成します。
- dgaVisualizer ノードを選択します。
- dgaVisualizer ノードのアトリビュート エディタ(Attribute Editor)を開きます。
- 可視化アトリビュート(Visualization Attributes)セクションでソロ アトリビュート(Solo Attribute)を探します。
- 次の接続を行います。
- dgaTension の出力アトリビュート(Output Attributes)を dgaVisualizer の入力アトリビュートに接続します。
- dgaTension の出力ジオメトリ(Output Geometry)を dgaVisualizer の入力ジオメトリに接続します。
- dgaVisualizer の出力ジオメトリ(Output Geometry)を円柱シェイプの inMesh 入力に接続します。
- ソロ アトリビュート(Solo Attribute)の値を伸長(Stretch)に設定します。
- ノード エディタ(Node Editor)で dgaVisualizer ノードを右クリックし、すべてのアトリビュートを表示(Show All Attributes)を選択します。
-
カラー表示を有効化: モデリング(Modeling)モード(左上のメニュー セット)に切り替えて、メッシュ表示 > 表示カラー アトリビュートの切り替え(Mesh Display > Toggle Display Colors Attribute)に移動します。
- タイムラインをスクラブします。これで、円柱が変形するときの張力を示すヒート マップが円柱に表示されます。
可視化を微調整する
より良い結果を得るには、可視化を調整します。
- dgaTension ノードを選択し、アトリビュート エディタ(Attribute Editor)を開きます。
- 別の設定を試します。
-
張力モード(Tension Mode): UV
-
張力の正規化(Normalize Tensions): 有効にすると、一貫性のある可視化が可能になります。
- 最大収縮(Max Squash)/伸長(Stretch): 範囲をより正確にキャプチャするには、これらを期待値に調整します。
- dgaVisualizer ノードを選択し、次のように調整します。
-
可視化モード(Visualization Mode): 張力、伸長、収縮を切り替えます。
-
正規化モード(Normalization Mode): 「ダイナミック(Dynamic)」に設定します。
- カラー ランプ(Color Ramp): 好みに合わせてカラー グラデーションをカスタマイズします。
トラブルシューティング
メッシュにカラーが表示されない場合:
- メッシュ表示(Mesh Display)メニューで、表示カラー アトリビュートの切り替え(Toggle Display Colors Attribute)が有効になっていることを確認します。
- キャッシュの再生(Cache Playback)が無効になっていることを確認します。
- すべてのノード接続が正しいことを確認します。
- 正規化モード(Normalization Mode)を「ダイナミック(Dynamic)」に切り替えます。
ノードに入力アトリビュートが表示されない場合:
- 各ノードを右クリックし、すべてのアトリビュートを表示(Show All Attributes)を選択します。
スクラブしても色が更新されない場合:
- キャッシュの再生を無効にします(これが最も一般的な問題です)。
- すべてのジオメトリ接続が正しく作成されていることを確認します。
次のトピック
基本的なワークフローを理解したところで、次のアイデアを試してみてください。
- メッシュの特定の領域を解析するには、dgaTension ノードの ComponentTagExpression アトリビュートを使用します。
- エッジと UV の計算方法を試して、ジオメトリに最適な方法を見つけます。
- 張力データをデフォーマ ウェイト リストに関連付けて、補正ブレンド シェイプを自動的に駆動します。
- dgaDelta ノードを使用して、2 つのまったく異なるメッシュ状態を比較します。
詳細設定: Arnold との統合(オプション)
スクリプト作成に慣れているユーザーの場合、張力データを Arnold に書き出すことができます。
- dgaToArray ノードを作成します。
- dgaTension の出力アトリビュート(Output Attributes)を展開し、出力値(Output Values) を dgaToArray のDouble 型入力値(Input Double Values)に接続します。
- ジオメトリを dgaToArray の入力ジオメトリ(Input Geometry)に接続します。
- MEL を使用してカスタム アトリビュートを作成します。
addAttr -ln "mtoa_varying_tension" -dt "doubleArray" yourMeshShape;
- dgaToArray の出力をカスタム アトリビュートに接続します。
- マテリアル グラフで aiUserDataFloat を「tension」というアトリビュート名で使用します。
ダイナミック ジオメトリ アトリビュート(Dynamic Geometry Attributes)を使用すると、キャラクタの変形方法を正確にコントロールできます。問題のあるスキニングの修正、リアルな布地のしわの作成、プロシージャル サーフェスのディテールの追加など、このツールセットで自在に操作できます。