Bot3D 1,0 ToolKit TIPS (3) 「モデルの組み立て方」
Bot3D 1.0 ToolKit を使っての「3Dトーキングヘッド」作成を支援するための、より具体的な「チップス」を、このコーナーで連載しています。
一回目の補足として、第3回目はモデルの組み立て方をご紹介します。
Bot3Dのモデルはボーンで変形されるスキン部分と、スキンを変形するボーン部分、そして、ボーンにアタッチされたbone asigined meshからなります。

Figure 1 スキンの作成の仕方
スキンは図のように、頭部、腕、体、それを包む服とするとよいでしょう。
手首から先は、bone asigned meshとなります。このメッシュはボーンで変形されないので、CPUにあまり負荷をかけません。
もうひとつBot3Dでの高速化テクニックとしてWrapテクニックが使えます。これはMayaのWrap Deformerに似た技術ですが少し制限があります。頭部はWrapとするのがとても効果的です。
#詳しくは Bot3D 1.0 ToolKit Tutorial をご覧ください。
Wrap技術は、ボーンモーフアニメーションなどを高速化させるために使われるテクニックです。
たとえば、MAYAでは、「ラップベースオブジェクト」と呼ばれる、より少ないポリゴンで構成されたメッシュを作り、これに、「ラップインフルエンスオブジェクト」と呼ばれる、それが影響する実際のポリゴンジオメトリに割り当てます。
その後、ラップベースオブジェクトをスキンとしてスケルトンに割り当てます。スケルトンの変形に伴い、ラップベースオブジェクトが変形するのですが、さらに、ラップインフルエンスオブジェクトをラップベースオブジェクトの変形に伴って変形させます。これには、FFD(Free Form Deformation)技術が使われます。FFDには等分格子が一般には使われますが、MAYAでは、任意の形状のラップベースオブジェクトをFFDのために使用することができます。
ボーンモーフのための計算頂点が少なくなるので、高速化が計られるのですが、Wrapを使わない場合の変形に比べると、変形が大雑把となりズレが生じます。
Bot3D 1.0では、Wrap変形のためのFFDとして、「不等分格子」を使用しています。
「等分格子」とは、例えば、ルービックキューブみたいなものを想像してもらえばいいのですが、「不等分格子」とは、直方体をx/y/z軸方向に任意数に分割したもので、分割間の比率は一定でなくともよいものです。これを使えば、任意形状をWrapとする場合よりも、変形を高速化するアルゴリズムが使えるのです。

Figure 2 Wrap部分をBotViewerで表示
「不等分格子」であるため、例えば、人体全体のモデルをWrapするにはふさわしくありません。Bot3D 1.0のWrap技術は、「トーキングヘッド」を構成することを念頭に考えられています。
まず、頭部部分の詳細メッシュを作成し、この中のクラスターをターゲットモーフさせて、リップシンクや表情変化を作ります。頭部詳細メッシュは、図のような、不等分格子でWrapします。Wrapメッシュは、さらに、スキンの一部としてスケルトン構造にスムースバインドします。
このような分割にする理由は次のとおりです-- 人の頭部は首は曲がりますが、首より上はボーンにより変形しません。しかも、ターゲットモーフが集中するのは、このボーンで変形しない部分にです!
Bot3D 1.0のWrap技術は、「トーキングヘッド」をリアルタイムにアニメーションさせるために、有効なオプチマイズ技術なのです。

Figure 3 ボーンの入れ方
バーチャルキャラクターにボーンを入れるには、図のようなやりかたが一般的です。
ただし、指までボーンを入れるのは標準のPCのパワーとしてはちょっと重たいのでやめたほうがよいでしょう。
Mayaで、このスキンとボーンをSmooth Bindして、ボーンによる滑らかな変形アニメーションを作成することができます。
アニメーションデータはMotion3Dファイルに保存されます。

Figure 4 頭部の作り方
頭部は詳しくは図のように作成するとよいでしょう。
図の斜線の部分がTips 2で説明したモーフターゲットとなるパーツです。
補足でテクスチャ用イメージデータの作成のしかたをご紹介します。
Bot3Dでは、RLAファイルをテクスチャ用イメージとして使用します。これは512×512など、縦横とも2の倍数のpixel数になっている必要があります。
RLA作成には、Mayaのコマンドラインツールimgcvt等を利用するとよいでしょう。
#詳しくはMayaのドキュメントなどご参照ください。

#テクスチャにレフレクションマップ使えます。(テクスチャやカラーとの合成はできません。)
次回のTipsは、少し上級編として、Bot3Dでの目の動かし方をご紹介いたします。