LightWave 3D の Bone スキニング(変形)には大きく3通りのアプローチがあり、それぞれに特徴があります。(Boneプロパティで設定) 詳しい設定はマニュアルを参照してください。考え方として押さえておくと習得し易いと思われるポイントについて説明します。
Modeler の ”スケルゴン回転” で確認出来る Bone スキニングのタイプは、レイアウトの Bone プロパティでいう所の "ウェイトマップのみ" によるスキニング手法に限定されます。本稿ではこの手法を使用する事を前提にしています。
レイアウトの Bone では、Bone 回転時に変形を加える手法に複数の方法が用意されており、また、モデラー上のスケルゴン回転では確認出来ないスキニングの補正機能があります。最終的にこれらを機能を理解した上で判断する必要があります。3つのBoneスキニング タイプに分類し、それぞれの特徴と補正機能について解説します。
ウェイトマップを必要としないスキニングです。Boneの長さから頂点までの距離(Falloff)を計算して影響範囲が決まります。モデラーのVertexPaintプラグイン で Falloff Distance を実行した直後のスキニング結果に近い結果が得られます。
ボーンウェイトマップを (none) に設定する必要があります。
ウェイトマップを作成する必要がないため、生産性が高いメリットがあります。つまり、レイアウトの Boneプロパティ のみで完結させる事が出来ます。
Falloff は一連の階層構造内にある全てのBoneに対して作用するため、変形は一様で精度が低いというデメリットがあります。Ver8 以降、このタイプのスキニング精度はかなり改善されています。
主にタコの脚など軟体動物、デフォルメされたキャラクターなど精度が重要でないケースに適しています。また、このタイプのスキニング手法はウェイトマップを必要としないため、後述するウェイトマップを使用する手法で満足なスキニング結果が得られない場合に併用する補助・補正用 Boneに最適な方法になります。
これらの補正用Boneは他のBoneの動きと連動して動作させる事で、筋肉の盛り上がりを表現するなどの目的で使用される場合があります。連動させるにはエクスプレッション式を書く必要がありますが、LW 8 以降で搭載された IKBooster の BoosterLink を使えば簡単にこのようなリグを構築する事が出来るようになっています。
ウェイトマップと呼ばれる頂点マップ情報を一つの Bone に対し一つのウェイトマップを関連づける事でメッシュオブジェクトを変形します。 Boneシステムのスキニングでは一般的な方法です。
LWでは “ウエイトのみ使用” にチェックを入れた場合、Boneスキニングに Falloff 固定長(Boneの長さ)による影響計算は一切無視され、割り当てられたウエイトマップのみを拘束します。つまり、モデラーのスケルゴン回転で行なうスキニングと同じ結果になります。本稿で紹介するワークフローに適した手法です。
本稿ではウェイトマップの正規化はモデラー上で行ないます。この場合、ウェイト正規化にチェックを入れても変化は起きません。
Bone 毎にスキニングの影響範囲をウェイトマップで指定出来るため、狙ったスキニング結果が得やすいメリットがあります。Boneプロパティに依存しないため、オブジェクトそのものに汎用性を持たせる事が出来ます。
タイプ1の手法と異なりウェイトマップを作成する必要があり、変形(スキニング)の品質はウェイトマップの品質に大きく依存するためウェイト値の修正、確認作業にも手間を要します。モデラーとレイアウト二つのアプリケーションで構成されるLWの泣き所です。
LW 8 以降ではモデラーのスケルゴン回転でSubDivサーフェイスの変形を確認できるようになったため随分ましになりましたが、スケルゴン回転ではウェイト値の修正結果をリアルタイムに確認する事が出来ないため、面倒です。
スキニングの精度を最優先したいケース、モデラー(スケルゴン回転ツール)主体でBoneスキニングの品質を詰めたい場合に適します。
タイプ1とタイプ2を併用する方法です。スケルゴン変換直後はこの設定が適用されていますので、デフォルト?設定です。ウェイトマップと Bone 固定長による変形を併用する方法になります。
作成したウェイトマップの質が低くても Bone 固定長による計算の併用により良好な結果が得られる場合があります。
モデラーのスケルゴン回転とは異なる結果になるため、ウェイト値の微調整でスキニング品質を詰めたいケースには適しません。微調整した結果が固定長による計算で相殺されるためです。
”ウエイトのみ使用” にチェックを入れた Bone との混在は出来ません。つまり、タイプ2、タイプ3 のどちらかを選ぶ必要があります。
レイアウト上でスキニング結果を調整したい場合、作成したウェイトマップで思ったような結果が得られない場合に試します。
LightWave ではBoneスキニング時に補正するいくつかの機能が用意されています。前述したBone変形全てに対して働きます。
特に接合部補正は関節部に対して有効です。今回の指の作成は、これらの機能を意識してモデリングしています。
この補正機能は Picth 軸に対してのみ有効です。 スケルゴン作成の段階から回転軸に注意しておくとBone変換時の修正が楽になります。
Bone スキニング時に補正する手段として Joint Morph を使う方法もあります。Bone スキニング時に破綻する形状をモーフマップで修正し、Bone の回転時に破綻のない形状にモーフィングを行なう事で回避する方法です。
破綻を防ぐ目的以外に、筋肉の隆起などの表現にも使えます。
Bone一つに対して一つのMorph Mapが必要になるため手間が更に増えますが、全てのBoneに対して作成する必要はなく、肩など変形の激しい箇所など部分的に使うと効果的です。Modeler上でJoint Morph 用の Morph Map を作成を補助する機能 (ジョイントモーフ作成)を使って作成します。(v8以降)
変位マップ(テクスチャ)による補正機能は静的なもので Bone の動きと連動させるにはエクスプレッションを記述する必要があります。テクスチャによる形状の制御は試行錯誤が必要で手間もかかります。
Bone スキニングや補正には様々なアプローチがありますが、どの方法が適しているかは実際に確認して判断するというのが実際の所ではないかと思います。
これらの設定はレイアウトの Bone プロパティに集約されていますが、モデラー上で確認できるのはウェイトマップのスキニングだけです。
Bone のスキニング手法、補正機能に関しては追々説明します。