現在位置: ホーム / shade+OSX / 実践-小動物編#12

実践-小動物編#12

習作の続きにネズミをモデリングしてみる

スキニングの準備

作成したジョイントと、ポリゴンメッシュの関連づけを行う。前回配置したジョイントは、そのままでは、ジョイントだけがくねくねと動く棒人形に過ぎない。試しに、ポリゴンメッシュを非表示にした状態で、各ジョイントの値をあれこれいじって、骨がどう動くか確認してみるのも一興。

ジョイント確認#1

ボールジョイントの場合は、XYZ各軸の回転角度を変更。

ジョイント確認#2

回転ジョイントの場合は、回転方向の角度を変更。

ジョイント確認#3

くねくね動かして、ジョイントの動作を確認。

動かした後は、ジョイントに設定した値を全て初期化しておく。一つ一つ手で戻しても良いが、全ジョイントを選択した状態で、[ツール]-[移動]-[ジョイントをリセット](選択中の最上位のジョイントのみ)または[ツール]-[移動]-[すべてのジョイントをリセット](子、孫ジョイントも含めてリセット)で、一発で戻る。

 

さて、このジョイントに、ポリゴンメッシュを関連づけるわけだが、その仕掛けについて確認しておく。ジョイントは、先ほど見た通り、直下に配置されている子ジョイントの位置に影響を及ぼす(位置を移動させる)ほかに、ジョイントに関連づけられたポリゴンメッシュ(または自由曲面)の頂点も、同様に移動させる効果を持つ。つまり、ポリゴンメッシュの各頂点を、適切なジョイントに関連づけることで、ジョイントの操作でポリゴンメッシュを変形させよう、というわけだ。そのための作業を、スキニングという。

このスキニング、すべての頂点を手作業で関連づけてやることも、もちろん出来る。だが、いくらローポリとは言え、今回のネズミですら、頂点数は半身で150以上もある。これだけの頂点を、手動でちまちま設定していくのは、かなり大変だ。そこで、ある程度自動で設定してくれるバインドを利用することになる。

ところが、実践-小動物編#10の最後で述べた通り、ジョイントは点であるので、範囲を持たない。つまり、自動で処理しようにも、そのジョイントがどこまでのポリゴンメッシュを動かそうとしているのかは、自動では判別できないのだ。そこで、ボーンの出番となる。

細かい原理は端折って、模式的に現すと、ボーンの周りにある頂点を、ボーンの根元にあるジョイントに関連づければいい、ということになる。

ジョイント確認#3

つまり、こんな感じ。

赤丸の頂点が、紫のボーンのガイドに沿って、緑のジョイントに関連づけられる、というわけだ。

さて、ここで翻って、再び実践-小動物編#10に立ち返ってみると。shadeでは、配置したジョイントのあいだが、自動的にボーンとして扱われることになる。ということは、ごく大雑把に、ジョイントとジョイントのあいだにある頂点が、根元のジョイントに関連づけられるわけだ(実際には、影響範囲の算出はもっと複雑)。

ところが、である。

shadeには、ボーンを持たないジョイントというものが存在するのだ。困ったことに。

例を挙げると。ネズミの手を見てみよう。ネズミの手首には、掌を上下させるジョイントを設定したいわけだが。正直に手首のジョイントだけしか設定しないと、

ジョイント確認#3

見ての通り、紫のボーンは手首までしかないことになる

このままだと、「手首のジョイントで動かしたい」と考えている、赤枠で囲まれている頂点が、手首には関連づけられないことになる。これを回避するためには、

ジョイント確認#6

このように、手首の先にもう一つ、濃い緑色の捨てジョイントを配置して、赤枠内の頂点が関連づけられるはずのジョイントを明確にしてやる必要がある。このジョイントは、頂点の関連づけ(バインド)が完了した後は不要となるので、邪魔っけに思う人は、スキニング後に削除しよう。

 

と、ここまでくれば、後の作業はそんなにややこしくない。バインドしたい頂点を選択して、スキンウインドウで関連づけるだけ。そのやり方については、かとりけんた氏の講座(第3・4回)で丁寧に解説されているので、こちらを参考にしよう。かとりけんた様に、感謝。

 

仕上げ

スキニングが終わったら、最後にリンク状態の右半身を実体化して、ネズミのモデルを完全なものにする。shadeのコピー機能は、UVの他に、スキン情報もコピーしてくれるので、こんなことも出来る。ただし、一旦スキニングを終えてしまうと、頂点の編集が非常にしづらくなる(特に、反転コピーした側の頂点座標について)。ジョイントの変形情報が、頂点編集中も適用されるためだと思われるが、一点に収束などの動作が期待通りに動作しなくなるのだ。

追記:2010.11.14
その後、モデルを流用している最中に、とあることに気がついた。なんと、反転コピーした面全てについて、法線まで反転していたのだ。つまり、右半身の面全てが裏返っている状態になっていた。とほほほほほ。バックアップしておいたセーブデータは、右半身と左半身を一体化してしまった後のものだったので、右半身分のポリゴンをちまちま選択してからflipするハメに・・・。というわけで、右半身を反転コピー後は、面のflipを忘れずに実行するようにしよう。

そこで、スキニング前にジョイントとポリゴンメッシュをコピーしてしまい、全身を完成させてから改めてスキニングさせるという手もある。スキニングを左右別々に行うことになるので、手間は若干増えるが、左右非対称のパーツがあるモデルなどは、この方が良いのかも知れない。

ともあれ、これにて

完成図

ネズミ完成!

 

そして

完成図#2

踊らせてみたりする。

以上で、実践-小動物編は完了。ふぅ、長かった。

 

参考用として、予告しておいた通り、モデルデータ(.shd)と、使用したPNG/PSDをまとめたものを、mouseX.zip(1.4MB)としてアップしておく。ただし、モデル自体は完全な失敗作なので、念のため。

恥は、晒すためにある。

・・・・・・・・・・・。

嘘です、ごめんなさい orz。ああ、みっともない。

 

そして反省

ネズミを作成してみて、押さえるべきポイントがいろいろと出てきたので、反省がてらまとめ。

1.ポリゴンの分割に気をつける

一つ目は、UVマッピングをやりやすくするため。二つ目は、動かしたときに、自然な曲がり方をするようにするため。これは、特に肩の部分で顕著に表れた。失敗作のモデルの腕を上げると、肩の角度が不自然になってしまうのだ。これは、肩の関節が配置される部分のポリゴンが、上手く分割されていないためだと思われる。

2.ジョイントの配置に気をつける

肩の部分のほかに、肘と膝で顕著に出ている。肩の角度が不自然であることは、ポリゴンの分割のまずさと合わせて、これも原因の一つだと思われる。また、肘と膝の部分は、ポリゴンをめり込ませるように配置しているわけだが、このような場合は、めり込ませた側の切断面に合わせてジョイントを配置しないと、急角度に曲げたときなどに、切断面が埋め込みから飛び出して見えてしまうのだ。みっともないったら、ありゃあしない。

3.大きな曲線にはポリゴン数を割け

これは、耳の部分。ローポリということで、あまり細かい分割をしないようにしたのだが、上の完成図を見てわかる通り、カクカクが目立ってしまった。これは嬉しくない。たとえローポリとはいえ、目立つ部分には、ポリゴン数を惜しまないようにしよう。

4.くねくね動かしたい部分は細かく分割

これは、尻尾の部分。クネクネっぽくなるように、分割位置を等間隔にならないようにずらしてみたのだが、結局ダメだった。このような部分についても、ポリゴン数を惜しむのはやめるようにしよう。

 

という反省点を踏まえつつ、

完成図#3

作り直してみました。

再作成の所要時間は、UVマッピング完了時点までで、約5時間。一度作った後は、速い速い。スクリーンキャプチャを撮らなかったのも一因か。

しかも、ポリゴン分割を少し贅沢目にしてみたつもりが、出来上がったモデルのポリゴン数は、全部で670面。前の失敗作が570面だから、約100面のアップで済んだ。しかも、この増加で、

ネズミ改#1

耳の丸みが自然になって、

ネズミ改#2

尻尾は良い感じにクネクネして、

ネズミ改#3

口は開くし、ヒゲもしょんぼりするし。

100ポリと引き替えなら、十分すぎる出来じゃあないか。というわけで、

完成図#4

シェーッ

 

・・・ふっるいポーズだなー。

ともあれ、これもモデルデータ(.shd)を比較用としてmouse.zip(700kb)としてアップしておく。物好きな人はどーぞ。

 

そして次回は・・・次回?