Ragdollを触ってみた

はじめに

はじめまして。gumiの古閑です。

簡単に自己紹介するなら、僕はWebエンジニアとしては働くのはgumiが初めてです。
今まではコンシューマーゲームを主としてきましたので、Web素人の僕がgumi Engineer's Diaryに何を書こうかと考えていたのですが、良い題材がありました。

unityです!

unityとはWeb/Windows/OS X/iPhone/Android、さらにWii/XBOX360/PS3などにも対応しているという話題のゲームエンジンです。
またGREE SDK機能を簡単に組み込めるiOsAndroidに対応した「Unity Plugin for GREE」というのもあります。

有料版と無料版がありますが、無料でも充分すぎる程の機能が揃っています。

今回は無料版でも出来る内容で面白そうな機能として、ラグドールを触ってみようかと。
業務外の趣味でやっている内容なので今までのgumi Engineer's Diaryの内容とは異色かもしれません。。。!

ラグドールとは
ここでいうラグドールとはラグドール物理演算の事で、キャラクターに物理挙動をさせるものです。
3Dゲーム等が好きな方は見た事があるかと思いますが、敵を吹っ飛ばした時などに操り人形のようになるあれです。
物理と聞くだけで鳥肌が立つ方も、unityにはデフォルトでその機能が入っているんです。素晴らしい!

そして一見難しそうに聞こえるラグドールも簡単な設定でできるんです。

とはいえ、ラグドールを設定するキャラクターが無いと当然何も出来ず、
個人でキャラクターモデルを用意するとなると、知り合いに3Dモデラーさんがいない限りは
いきなり敷居が高くなったりします。

アセットの用意
でも、UnityではUnity Asset Storeと呼ばれる場所から他の開発者が作成した
モデルやモーション、マップなどが含まれたアセットを購入する事ができるんです!
Window→Asset Storeから好きなアセットを購入する事ができます。
(最初はアカウント登録が必要)
自主ゲームに使用するだけでなく、他の開発者の方がどのように作成しているかもわかるので、
勉強にもなりますね。

そして、試しにダウンロードしてみたアセットがこれ

・Zombie Character Pack
http://u3d.as/content/mixamo/zombie-character-pack/1sK
やられ役という事でゾンビを選択してみました。ちなみに無料です。

このアセットにラグドールの設定をしたいと思います。
ただ設定する前にどのようにボーンが設定されているかを見てみます

ボーン確認

zombieのボーン表示です。
人型のモデルは大体このようなボーン構造になるかと思います。
重要な箇所としては、肘、膝、足の付け根などの関節部でしょうか。
実際に体を動かしてみるとわかりやすいのですが、右肩を回すと右手の位置が動くように、左足の付け根を上げると左足があがるように、腰を回転させると両腕の位置が動くようにと各関節は親子構造となっています。
主にこの関節部分をラグドールには設定する事になります。

設定する
GameObject→Create Other→Ragdoll...
を選択し、プロパティを表示します。

設定例

Root→Zombie:Hips
Left Hips→Zombie:Zombie:LeftUpLeg
Left Knee→Zombie:Zombie:LeftLeg
Left Foot→Zombie:Zombie:LeftFoot
Right Hips→Zombie:Zombie:RightUpLeg
Right Knee→Zombie:Zombie:RightLeg
Right Foot→Zombie:Zombie:RightFoot
Left Arm→Zombie:LeftShoulder
Left Elbow→Zombie:LeftForeArm
Right Arm→Zombie:RightShoulder
Right Elbow→Zombie:RightForeArm
Middle Spine→Zombie:Spine
Head→Zombie Head

rootは最上位にあるボーンの事で、全てのボーンの親となり、Hip-Knee-Foot、Arm-Elbowなどは親子関係になっています。
全ての設定する場所を割り当てたらCreateを押します。
RootにHipsを設定したり、HipsにUpLegを設定したりと変な感じになっていますが、これは対応させたいZombieのボーン名がそのようになっているからです。
ここらへんは開発者、開発会社によって名前のつけ方が多様かもしれません。

ビルド
File→Build Settings
からWeb Playerを選択しBuildしてみます。

hoge.html
hoge.unity3d

の二つが作成されるので、後は二つともサーバーに置きhtmlをリンクさせるです!
置いたのがこちら。「Web Player」プラグインが必要です
http://178.79.138.241/ragdoll01/ragdoll01.html
カメラの挙動などはデフォルトアセットのFirst Person Controllerを使用しています。
後、おまけでクリックすると球が出るように追加しています。

まとめ
という訳で今回はゲームよりな内容でラグドールをざっと触ってみました。
unityを触って間もないのですが、かなり機能が豊富に揃っている印象です。
各機能を知るだけでも、個人でそれなりのクオリティになるゲームが作れるのではないでしょうか。
unityにはまだまだ面白い機能がたくさんついているので覚えていきたいですね!

おまけ

プレハブ化してランダムで生成
http://178.79.138.241/ragdoll02/ragdoll02.html

ゾンビでっかくしてみた
http://178.79.138.241/ragdoll03/ragdoll03.html

GREEアプリ「さんごくっ!」の夏侯惇に変えてみた。好評配信中!
http://178.79.138.241/ragdoll_kakouton01/ragdoll_kakouton01.html