3Dモデルに表情をつける方法はいくつかあります。
1つにモーフがありますが、残念ながらShade 3Dにはモーフが標準機能として搭載されていません。プラグインとして開発・公開されていますが、プラグインの欠点(モーフのプラグインそのものの欠点ではありません)としてctrl+zが効きません。なので、間違ったときの修正が大変になりました…。
ボーンを仕込む方法もありますが、以前やろうとして挫折しました…。最終的に今回はそれぞれの表情のモデルを作成することにしました。
もともとうちの子ちゃんたちのモデルは眼球や髪の毛を除き頭からつま先まで一つのポリゴンメッシュでした。で、表情別にモデルを分けるのですがそのままだと余剰が多いのでまずは顔とそれ以外にポリゴンメッシュを分離します。
次に口元と目元に分離をし、さらに目元を左右それぞれに分離をします。目元を左右に分離することで「ウインク」などの非対称の表情を作ることができます。もっとも、細かく分離しなくても必要な表情分だけ「顔」パーツを作ってもいいと思います。どこまで細かく分離するかは作りたい表情のパターン数や管理の煩わしさ等によります。実際、表情(パーツ)の切り替えが面倒くさいです。
この方法の欠点としてはもちろんモーフのような中間値がとれません。モーフは最小値と最大値を設定してある関数(たいていは直線やシグモイド関数)に従って変化させますが、この方法は「ゼロ」か「イチ」しかないので「ゼロテンゴ」が欲しければ「その値」のパーツを作る必要があります。加えて、アニメーションをするときも一瞬で切り替わる感じになってしまいます。
顔を作り直すことになった場合、表情パーツも全て作り直しになってしまいます。修正の範囲がそのパーツの境界に及ぶ場合は一旦ポリゴンメッシュを結合してからの方がいいと思います。
何度か書いていますが、パーツの数によって表情の切り替えが大変になります。一応、私の(現在の)管理ですが下記のようなブラウザの構成になっています。
大分類のパートとして「表情用パート」があり中分類で「左半面」と「右半面」、「口元」があります。その下に個別の表情用パーツが入っている感じになっています。大分類である「表情用パーツ」を非表示/非レンダリング対象にすることで個々のパートにチェックを入れることで対象にすることができます。
逆に「表情用パーツ」を非表示/非レンダリング対象にしていないと個々に非表示/非レンダリング対象にしないといけなくなるので、ブラウザがチェックマークだらけになって非常に見にくくなってしまいます。
場合によって、レンダリング結果でも境界線出てしまう場合があります。モデルにサブディビジョンサーフェスをかけていると、角のところがスムーズされてしまうため穴が開いてしまいます。上のモデルでいうと眉間の辺りになります。
トゥーンレンダリングの「輪郭線」も出てしまいます。また、光源の位置によっては影が出る可能性があります。
書いていくうちに欠点だらけじゃないか?と思わなくもないですが、私自身もお試し中なので参考程度に読んでくださればと思います。
コメントを残す