元記事:
blender.org - Mesh Deform
Mesh Deform モディファイア
MeshDeform モディファイアは、Mesh を別の「ケージ」Mesh でデフォームすることができます。Lattice モディファイアと似ていますが、Lattice では一定の格子のレイアウトに制限されていますが、ケージ Mesh は対象 Mesh にもっとフィットさせた形にすることができます。
チンチラが MeshDeform モディファイアでデフォームされている様子。モデルとリグは Peach チーム作
使用方法
ケージ Mesh は通常の Mesh オブジェクトですが、デフォームされる Mesh のパーツを取り囲む、閉じたケージでなければなりません。このケージ内の Vertex のみが変形されます。通常、このケージ Mesh はターゲットの Mesh よりはるかに少ない Vertex 数で作成します。
ケージの Vertex とターゲット Mesh との距離は影響を調整するのに便利です。ケージを離すと、スムーズですが、直下の Mesh に対するローカルな影響が少なくなります。一方、ケージを近づけると、よりローカルにコントロールできますが、影響範囲外ではスムーズさに欠けます。
ケージ Mesh をモデリングした後、MeshDeform モディファイアを追加し、ケージ Mesh オブジェクトの名前を入れ、
[Bind]ボタンを押します。これでバインディング(関連付け)ウェイトがしばらく計算されます。これは指定された Precision(精度)によって数秒から数分かかります。Precision を高く設定すると、精度が高くなりますが、バインディング処理がかなり遅くなります。
高い Precision 値でのバインディングは大量のメモリと長い時間を消費します。残念ながら、ケージ Mesh がデフォームする Mesh に近い場合、高いレベルでの結果でさえ、まだ不正確になってしまうことがあり、これはケージを180度のように大きく回転する時に顕著になります。
回避方法として、最初にケージとデフォームする Mesh の両方の親オブジェクトを大体正しい位置に回転し、その後 Mesh デフォームにより、細かく変形して下さい。将来的には、この MeshDeform モディファイアの精度とパフォーマンスの両方を改良したいと思います。
注意:Mesh Deform は Multi-res では動作しません。
ケージ Mesh のオフセットの効果:左側の大きいケージでは、右側の小さいケージに比べ丸みを帯びたデフォームになる
内部コントロール
ケージに更に Face を内部に追加したり、特別なコントロールに使用するための大まかな、もしくは成形された別の小さなケージを追加することができます。このような小さなケージはメインケージと重複することもあります。例えば、目を特別にコントロールするために、二つの小さな球のケージを目の周りに追加するなどです。
ダイナミックバインディング
[Dynamic]ボタンを ON にすることで、その Mesh がケージ Mesh 内を動けるようになり、それに合わせてデフォームされるようになります。もし、ケージ Mesh の外に出た場合、その結果は未定です。速度が遅く、メモリを多く消費してしまうため、このオプションはデフォルトでは OFF になっています。
これが便利になると思われる例として、メインのデフォームを Mesh Deform モディファイアで、そして、ShapeKey を使用して顔の表情を行う、というのが挙げられます。
実装
下記の論文を元に実装されています。
Harmonic Coordinates for Character Articulation Pushkar Joshi, Mark Meyer, Tony DeRose, Brian Green and Tom Sanocki, SIGGRAPH 2007.
サンプル
チンチラデモファイル
元記事:
blender.org - Mesh Deform