Unity&Blenderによるキャラクターアニメーション 〜モデリングからアニメーション、表情つけ、物理判定まで〜

Unityでゲームとかを作るとなると必ずと言ってもいいほど、必要なのはキャラクター。そのキャラクターのアニメーションはゲームの面白さや完成度を左右すると言っても過言ではないと思います。しかし、Unityのアニメーション関連を説明している書籍やサイトはあまりないように思います。アニメーションよりプログラムなどの動作関連に重視しすぎな感じが.....

そこで今回は、私が今までいろいろキャラクターアニメーション関連でいじってきた小ネタたちをまとめて載せておきたいと思います。興味があるとこだけ見ていただいたら良いかと思います......

 

Blenderによるキャラクターモデリング

僕はモデリングよりはUnityとかでのプログラミングの方が専門ですが、Unityで自作キャラクターを動かして見たいと思って、作りました。

こちらの方の記事を参考にして作りました。

非常にわかりやすいので、作り方はここでは割愛。

制作中の様子だけ↓

 UnityにこのBlenderデータをそのまま取り込み、アニメーションをつける(アニメーションの付け方は↓で)。せっかくなんでARでやって見ました。

 

アニメーション制作方法

モデルが用意できたらアニメーションをつけます。

まず、モデルのボーンをUnityで適用させる

UnityにインポートしたモデルのInspectorの画面からRigを選択=>Configure...を選択

f:id:IKEP:20180615123009p:plain

自動的にボーンが適用されます↓

f:id:IKEP:20180615123024p:plain

 

もし、適用できていないところがあれば赤く表示されるのでその部分は修正します。

f:id:IKEP:20180615123502p:plain

 

適用されない主な原因としては、「モデルがT字ポーズになっていない」、「ボーンの階層構造がおかしい」、「必須のボーンが存在しない」などがあげられると思います。

T字ポーズはUnity画面の右下のRotationをいじってT字にしてあげれば解決すると思います。階層構造だとモデリングソフトでボーンの階層構造をUnityが認識する構造にしてあげる必要があります(こちらの記事など参考にすれば良いかと....。動作確認はしてません)。必須ボーンはUnity画面右の図で実線の丸になっているものがそうです。破線は任意なので設定してもしなくても良いです。

 

そして、アニメーションをつけます。

 Animator Controllerを作成してAnimation Clipを配置

この辺のことはググれば出てくるので割愛

f:id:IKEP:20180615140002p:plain

 

Animation Clipを自分で作るならAnimationウィンドウでこんな感じに編集↓

f:id:IKEP:20180615140634p:plain

 

 

表情つけ

キャラクターの表情をつけていきます。基本的にはAnimationClipの作成と同じで、AnimationClipで体とかを動かすのではなく、顔のBlendShapesの値をAnimtionClipでいじるという感じになります。

自作モデルの場合はモデリングソフトで前準備をしておきます。

Blenderの場合はシェイプキーを設定しておきます。

f:id:IKEP:20180615144431p:plain

f:id:IKEP:20180615144510p:plain

シェイプキーを設定したモデルをUnityにインポートするとBlendShapesが表示されます。

f:id:IKEP:20180615144750p:plain

AnimationClipでこの値を変化させると表情の完成です。

瞬きと笑顔をつけてみました。瞬きをつけるだけで、無表情の時よりリアルさがグッと増します(^_^)

 

 

物理判定

物理判定といっても、キャラクターの服や髪、体などのキャラクターの部品同士の物理判定です。

まず、最初にこれらを考慮しなかった時がこちら↓

 髪が硬いままだったり、髪やスカートが体に食い込んでしまってます.....。

これを改善していきます。

まず、体の各部位にColliderを設定

f:id:IKEP:20180615152155p:plain

そして、スカートにClothを設定。これだけでスカートがなびく感じが出ます。

スカートとの接触するもの部位のcolliderを教えてあげます。

f:id:IKEP:20180615152509p:plain

 

同じく、髪の毛も設定していきます。

f:id:IKEP:20180615152824p:plain

髪のなびく感じにもClouthを使いました。髪の毛の動く範囲も決めます。

ClouthのEditConstraintsを選択

f:id:IKEP:20180615153138p:plain

頭皮の部分(赤い点)を選択してMaxDistanceを0にします(これをしないと髪の毛が落ちていくw)。それ以外のところはMaxDistanceを任意の値にします。

 

これで物理判定は完了です。

 さっきと比べると、かなりリアルさが出たと思います。(ARで動画を撮りたかったですが、iPhoneで動かすと重たくて動きがカクカクしたので、Unity上で動かしてます)

 

 

感想

ヒマな時にこれらを小ネタとしてやっていましたが、これら全部を組み合わせてゲームとかを作るのは大変だなと思いました。しかし、頑張って組み込めば(アニメーションの点では)ゲームのクオリティは上がると思います。

今制作中のゲームにも頑張って組み込むか.....

ただ、モデリングはもうやりたくないかな 笑

 

おまけ

最近、いろいろ勉強したのを使って任天堂スイッチ「ゼルダの伝説 ブレス オブ ザ ワイルド」のワープシーンを作ってみました。(アニメーションだけでなく、パーティクルの勉強もいるが...)