これまでのモデリング作業で活用したウェイトマップは、Vertex Paint で一括して得られたものでしたが、ここからはここで得られたウェイトマップをベースにウェイトの修正作業と造形を平行して行なっていく作業に移行します。
この作業に移行するタイミングは、求めるスキニングの品質に必要と思われる頂点数は確保出来ていると判断した段階です。具体的な作業例を示す前に抑えておきたいポイントについて説明します。
LightWaveのウェイトマップは Vertex Color(RGB情報) や UVMap (Uv位置情報) と同じ頂点マップ情報の一つです。値は±%で頂点毎に記録し一つのグループにまとめたものをウェイトマップと呼び、入力パラメーターとして使用します。
ウェイトマップはボーンウェイトのための頂点マップ情報と思われるかも知れませんが、Lightwave におけるウェイトマップは(Node)マテリアル、パーティクル、APS、ダイナミクス、ボリュームメトリクス(HV)などの入力パラメーターとしても使用します。
UVマップを利用してウェイト付けを行なう方法(UV ウェイト変換)や画像からウェイトを得る方法(テクスチャポイント)などウェイト値を得る機能は幾つか提供されていますが、ウェイトマップの用途によってウェイトの作成、編集アプローチを考える必要もあります。
本能ではBone スキニングを目的としたウェイトマップ作成アプローチの一例を紹介していることになります。
Boneスキニングは一つのBone(スケルゴン)に一つのウェイトマップを関連づける事で、頂点がどの程度 Boneに拘束されるか、別の言い方をすれば Bone の動きに追随するかを定義してポリゴンメッシュの変形を実現しています。
Boneに対して割り当てるウェイトマップは一つですが、頂点には複数のBoneに関連づけられたウェイトマップ(値)を持つ構造になります。
そのため、一つの頂点に対して一つのウェイトマップで値が100%の時は完全に追随し、一つの頂点に対して複数のウェイト値が適用されている場合は、ぞれぞれウェイトマップと関連づけられたBone との間で頂点の綱引き状態になります。
端的に言えば Bone の動きに対して頂点がどの程度追随するかという話に過ぎません。実際には筋肉の収縮や伸張によって直径自体が変化したり、表面の起伏も複雑に変化します。このような表現は Bone ウェイトだけでは表現する事は出来ません。
関節を動かした時にに生じる形状変化を表現するアプローチは幾つか考えられますが、Bone プロパティにある簡単な補正機能もその一つです。特に初めて取り組まれる方はどこまでがウェイトマップの仕事で、どこからが補正機能の仕事か意識されると LW のインターフェイスを理解し易いのではないかと思います。
動物の骨、関節部は複雑な形状をしており、回転の中心位置は厳密には一定ではありません。また、一見、自由に動くように思える関節でも姿勢によっては曲げられる角度に違いもあります。(肩部の動作はよく話題になる)
例えば手の指の場合、親指を除く4本の指は、指の股を広げた状態で握り拳を作る事は出来ません。これは 3DCG のような球体関節ではない事を示しており、Bone や中心の回転角度制限だけでは表現できない事を意味します。
本稿では Vertex Paint の Falloff Distance で得たウェイト値に対してウェイトを修正するワークフローを紹介しています。一定の精度が求められるキャラクターなど生物をモチーフにしたBoneスキニングにおいて生産性の高い方法です。
Vertex Paint の Falloff Distance で得たウェイト値の修正には以下の方法を使います。それぞれに特長があるので使い分けるようにします。
UVマップを利用してウェイト付けを行なう方法(UV ウェつみイト変換)や画像からウェイトを得る方法(テクスチャポイント)などありますが、Bone ウェイト作成に関わりが深いのは上記方法になります。具体的な修正手順は追って説明します。
一般的な統合型3DCGソフトと違い、モデラー上でウェイト値を修正しながらリアルタイムにSubDivサーフェイスのスキニング結果を確認する事は出来ません。レイアウトで頂点ウェイトを直接編集出来れば良いのですがそのような機能は提供されていません。
ウェイト修正の結果を確認するためには修正の度にHubシステムを使ってレイアウトと切り換えて確認する、というのが従来のアプローチで、「キャラクターセットアップにおいてLWの生産性が低い」 と言われる要因の一つとなっています。
現在開発が進んでいる後継の Lightwave Core ではこの問題は解消される筈です
Mac OS-X 版の LightWave をお使いであれば、WeightPaintTool というプラグインを使う方法があります。
このプラグインはレイアウト上でウェイトマップをペイント感覚で編集する事が出来るので、スキニング結果をリアルタイムに確認しながらウェイト値を修正する事が出来ます。
しかも、無償で公開されています。ありがたや!!
配布元 => Three-Dimensional Cel
私は Windows & Linux 64bitなCG制作環境なので未検証なのですが、とおもったら つい先日、Win32 版も公開されています。まだ試していませんが、試したらウェイトマップ修正アプローチの章で紹介したいと思います。本稿で紹介しているワークフローを変える可能性がありますので、是非、試してみて下さい。
ウェイトツールで視覚的にウェイトマップを修正するアプローチでは、極端な値のウェイト値が適用される事があるため、他の入力パラメーターとして使用する際には有効ですが Boneウェイトとして使用する場合、予期せぬ結果を招きます。
具体的にはヒデブ、アベシ状態の事
これを回避するためには、頂点に割り当てられるウェイト値の合計が 100% になるようにNormalize (正規化)処理を行なう必要があります。
Bone ウェイトに適したウェイトマップは、一つの頂点(Vertex)に対して適用されるウェイトマップが一つの場合、値は 100%である必要があります。
もし、一つの頂点に3つのウェイトマップが適用されている場合、その合計値は 100%になっている必要があるという事です。
ウェイトツールを使ってウェイト値を修正すると合計が 100%を超えてしまうため、数値入力によるウェイトのバランス修正が困難になります。
ウェイト値の正規化(Normalize)処理は、ウェイトマップによるBoneスキニングの品質を高める上で、また、本稿で紹介しているワークフローにおいて重要な意味を持ちますので、次のページで詳しく説明します。