メッシュへ変形時にモーフとが正しく動作しない場合の解決法


https://www.youtube.com/watch?v=XGjeN_lkYLM

今回はスケルトンやデフォーマなどでメッシュを変形しているときに、同時にモーフを設定しても、モーフが正しく動作しない場合の解決法をご紹介します。

例えば、キャラクタアニメーションなど、キャラクタのメッシュがスケルトンで動き、さらに顔の表情をモーフで動かすといった複数のメッシュの変形を行うケースが多々あります。サンプルとなるシーンには顔のメッシュに対して、あらかじめ目を閉じるモーフマップを用意しています。まずは顔のメッシュ全体に対して変形を施してみます。

今回は簡単に説明するため、スケルトンではなくデフォーマを適用してみます。顔のメッシュを選択し、デフォーマタブからベンドデフォーマを適用します。ベンドエフェクタの長さを、顔のメッシュに合わせます。Bend EffectorをY軸に対して回転させ、角度を調整してみると、顔が左右に曲がっていくのが確認できます。

ではこの状態で、モーフに対してモーフインフルエンスを追加してみます。すると目を閉じた状態になるはずが、ベンドの角度が大きいほど、モーフが正しく動作しなくなってきます。これはデフォーマの順番が関係しています。今回、まず最初に顔のメッシュ全体の動きを設定するために顔に対するデフォーマを設定してから、さらに細部となるモーフのデフォーマを設定しました。

デフォーマを管理するデフォーマのタブを見てみましょう。そうすると、モーフのデフォーマとベンドのデフォーマとがリストされています。このデフォーマのリストの順番はシェーダツリーと同様、下から上に従って実行されます。ですので、まず先にモーフのデフォーマで目の開閉をコントロールしてから、その変形も併せて顔の変形を行うようにすれば、問題を解決することができます。順序を入れ替えるにはドラッグアンドドロップで、簡単に変更することができます。モーフのデフォーマをベンドのデフォーマよりも下へと配置しなおしてみると、どんなにベンドデフォーマで激しく変形させても、まぶたの開閉は問題なく行えるようになっているのが確認できます。

このように、デフォーマを複数重ねている場合、この順番によってモーフの表現などがうまくいかないような場合など、デフォーマの順番に注意して設定するようにしてみてください。