たぬきのしっぽ

 2016-02-19
今回はちょっと趣向を変えて…
自作アプリの制作でちょっと苦労したところを書いていきます。


これは、『ぬいぐるみキャッチャー』に登場するモデルの1つの『たぬき』ですが、
このモデルだけ他のモデルと違うところがあります。


それは…しっぽ!


tanu0_1.jpg
しっぽと言われても何が?と思われるでしょうが、
アプリをプレイされた方は気づいたかもしれません。
このたぬきのしっぽだけ

重力でしっぽが垂れるのです!

tanu7.jpg
ちょっとわかりにくい画面ですが、ちゃんとしっぽが垂れてますね

”それだけかーい!”


それだけなんですけどね…
こういうボディとは別の付属品(しっぽ)を、別々の重力で制御するっていう方法を
今まで知らなかったので、これを実装するのはけっこう大変でした。

その悪戦苦闘(?)の記録をここに残しておきます。
 
 
(かなりおおざっぱな説明です、スミマセン)


まず、3DモデルをBlenderで読み込みます。
tanu1.jpg
読み込んだら、モデルにボーンをこんな感じでつけました。


これが人型だとか、アニメーションとかに対応させたい場合は、
ボーンはもっとたくさん作らないといけませんが、
このたぬきは、『じっとして動かないぬいぐるみ』なんで、
3本くらいで十分です。

tanu3.jpg
次にウェイトペイント機能で、体ボーンと、しっぽボーンにウェイトを塗ります。
これで体としっぽを別々のオブジェとして、動作できるようにしました。

ここまでできたら保存して、Unityにもっていきます。

tanu4.jpg
Unityのシーンに配置したら、体ボーンとしっぽボーンのオブジェに
それぞれ別のコライダーとリジットボディを配置します。

これで物理演算が働いて、しっぽが垂れてくれる! と思いきや、

tanu5.jpg

しっぽがどこまでも伸びて、悲惨なことになってしまいました…
ほっといたら無限に伸びていってしまいます。
これはこれで面白いんですが、
これではぬいぐるみどころか妖怪になってしまうんでなんとかしないといけません。

しかし、ここからどうやって手直しすればいいのかわからなくって、
Unityの書籍とか、リファレンスとかであちこち探しました…
で、これを解決する機能がちゃんとありました。

ジョイントという機能が…!


tanu6.jpg
しっぽオブジェクトにこんな感じでジョイントをつけました。
Connected Bodyにはモデルの親オブジェクトを設定してください。

ジョイントには種類が結構あるんですが、どれを使えばいいのかよくわからなかったんで、
とりあえずSpring Jointにしておきました。

tanu7.jpg

こうすることで、体が離れてもしっぽが追随するようになり、
重力で垂れるようになってくれました。

tanu8.jpg
でもゴムみたいにビヨンビヨン跳ねるので、場合によってはしっぽが2倍くらい伸びてしまうことも。
このあたりは、まだリアルなぬいぐるみのようにはいかないですね…

他のモデルにも、同じような処理を加えたかったんですが、
制作日数がさらに伸びてしまいそうだったので、
この処理を実装したのはたぬきだけになりました。


もし次回があるなら、より本物っぽい動作をするようにしたいです。
ひょっとしたらジョイントを使わなくてもいい方法があるのかもしません。

このあたりはまだまだ試行錯誤が必要ですね。

タグ :
コメント












管理者にだけ表示を許可する
トラックバック
トラックバックURL:

http://unimake2.blog.fc2.com/tb.php/49-fbaf49d1

≪ トップページへこのページの先頭へ  ≫