Unity&Blenderによるキャラクターアニメーション 〜モデリングからアニメーション、表情つけ、物理判定まで〜
Unityでゲームとかを作るとなると必ずと言ってもいいほど、必要なのはキャラクター。そのキャラクターのアニメーションはゲームの面白さや完成度を左右すると言っても過言ではないと思います。しかし、Unityのアニメーション関連を説明している書籍やサイトはあまりないように思います。アニメーションよりプログラムなどの動作関連に重視しすぎな感じが.....
そこで今回は、私が今までいろいろキャラクターアニメーション関連でいじってきた小ネタたちをまとめて載せておきたいと思います。興味があるとこだけ見ていただいたら良いかと思います......
Blenderによるキャラクターモデリング
僕はモデリングよりはUnityとかでのプログラミングの方が専門ですが、Unityで自作キャラクターを動かして見たいと思って、作りました。
こちらの方の記事を参考にして作りました。
非常にわかりやすいので、作り方はここでは割愛。
制作中の様子だけ↓
5時間くらいかけてやっとこんだけ
— IKEP (@CreativeIKEP) August 7, 2017
さて、何を作ってるのでしょう? 笑#Blender #3Dモデリング #3DCG pic.twitter.com/qQ7Q8xWIVS
3DCGモデリング、とりあえず頭は完成♪#Blender #3DCG #モデリング #Unity pic.twitter.com/5NMqct5zWB
— IKEP (@CreativeIKEP) August 7, 2017
胴体と腕完成
— IKEP (@CreativeIKEP) August 10, 2017
あとは手と足 pic.twitter.com/rG2Wg1W4L9
完成♪#3DCGモデリング #Blender pic.twitter.com/9OWtcXZrHx
— IKEP (@CreativeIKEP) August 13, 2017
UnityにこのBlenderデータをそのまま取り込み、アニメーションをつける(アニメーションの付け方は↓で)。せっかくなんでARでやって見ました。
アニメーション制作方法
モデルが用意できたらアニメーションをつけます。
まず、モデルのボーンをUnityで適用させる
UnityにインポートしたモデルのInspectorの画面からRigを選択=>Configure...を選択
自動的にボーンが適用されます↓
もし、適用できていないところがあれば赤く表示されるのでその部分は修正します。
適用されない主な原因としては、「モデルがT字ポーズになっていない」、「ボーンの階層構造がおかしい」、「必須のボーンが存在しない」などがあげられると思います。
T字ポーズはUnity画面の右下のRotationをいじってT字にしてあげれば解決すると思います。階層構造だとモデリングソフトでボーンの階層構造をUnityが認識する構造にしてあげる必要があります(こちらの記事など参考にすれば良いかと....。動作確認はしてません)。必須ボーンはUnity画面右の図で実線の丸になっているものがそうです。破線は任意なので設定してもしなくても良いです。
そして、アニメーションをつけます。
Animator Controllerを作成してAnimation Clipを配置
この辺のことはググれば出てくるので割愛
Animation Clipを自分で作るならAnimationウィンドウでこんな感じに編集↓
表情つけ
キャラクターの表情をつけていきます。基本的にはAnimationClipの作成と同じで、AnimationClipで体とかを動かすのではなく、顔のBlendShapesの値をAnimtionClipでいじるという感じになります。
自作モデルの場合はモデリングソフトで前準備をしておきます。
Blenderの場合はシェイプキーを設定しておきます。
シェイプキーを設定したモデルをUnityにインポートするとBlendShapesが表示されます。
AnimationClipでこの値を変化させると表情の完成です。
瞬きと笑顔をつけてみました。瞬きをつけるだけで、無表情の時よりリアルさがグッと増します(^_^)
物理判定
物理判定といっても、キャラクターの服や髪、体などのキャラクターの部品同士の物理判定です。
まず、最初にこれらを考慮しなかった時がこちら↓
ミクさんに現実世界で踊って頂くことにやっと成功した(^^)
— IKEP (@CreativeIKEP) November 5, 2017
(動画長すぎるので一部抜粋)#Unity #ARKit #miku pic.twitter.com/P37aNAQQZC
髪が硬いままだったり、髪やスカートが体に食い込んでしまってます.....。
これを改善していきます。
まず、体の各部位にColliderを設定
そして、スカートにClothを設定。これだけでスカートがなびく感じが出ます。
スカートとの接触するもの部位のcolliderを教えてあげます。
同じく、髪の毛も設定していきます。
髪のなびく感じにもClouthを使いました。髪の毛の動く範囲も決めます。
ClouthのEditConstraintsを選択
頭皮の部分(赤い点)を選択してMaxDistanceを0にします(これをしないと髪の毛が落ちていくw)。それ以外のところはMaxDistanceを任意の値にします。
これで物理判定は完了です。
さっきと比べると、かなりリアルさが出たと思います。(ARで動画を撮りたかったですが、iPhoneで動かすと重たくて動きがカクカクしたので、Unity上で動かしてます)
感想
ヒマな時にこれらを小ネタとしてやっていましたが、これら全部を組み合わせてゲームとかを作るのは大変だなと思いました。しかし、頑張って組み込めば(アニメーションの点では)ゲームのクオリティは上がると思います。
今制作中のゲームにも頑張って組み込むか.....
ただ、モデリングはもうやりたくないかな 笑
おまけ
最近、いろいろ勉強したのを使って任天堂スイッチ「ゼルダの伝説 ブレス オブ ザ ワイルド」のワープシーンを作ってみました。(アニメーションだけでなく、パーティクルの勉強もいるが...)
Nintendo Switchの「ゼルダの伝説 ブレス オブ ザ ワイルド」のワープシーンを作ってみた
— IKEP (@CreativeIKEP) 2018年6月12日
短時間でした割にはそこそこいけてる?? 笑#Nintendo #ニンテンドースイッチ #ゼルダの伝説 #Unity pic.twitter.com/nLHtGnBWpk