tetu式

ゲームと音楽・作曲の自己満足と悩みどころの多いプログラムのブログ。

Unity3D Unityのみで3Dモデル作成 + アニメーションを頑張ってみる。

3Dモデル作成って聞くと、芸術の領域になる気がして全然手出ししてませんでした。
今までやってきた作業も2DだったのでUnityというソフトを扱っておきながらさっぱり3D機能を使ってませんでした。

ということで今回はようやく3D関連。

無料の3Dモデリングソフトもあるにはありますが、練習がてらUnityだけで挑戦。

※今回の内容をマネようとすると結構な時間と根気が必要になると思います。

あと今回の内容は絵が描けない人や3Dモデリングソフトが使いこなせない人向けの苦肉の策です。
恐らく一般的な3Dモデルの動かし方ではないのでどこ行ってもこれが使えるとは思わないでください。


3Dモデルって言ってもいきなりクオリティが高い物を作るのは時間がかかりすぎるし、センスや経験もかなり問われるので今回作るのは立方体のみで構成された人型のモデルを作ります。
さらに人型3Dモデルによく使われるボーンも無しで行きます。

こんなのね。色すらつけません。

構成は

体┬頭
 ├左肩
 │ └左肘
 │  └左手首
 ├右肩
 │ └右肘
 │  └右手首
 ├左太腿
 │ └左膝
 │  └左足首
 └右肩
   └右肘
    └右足首

この程度だったらCubeをうまいとこ配置して、体部分だけScaleを変えれば簡単にできます。

体をオブジェクトの基準とし、その子オブジェとして頭、左右肩、左右太腿を配置。
さらに左右肩はそこから子オブジェで肘、肘の子オブジェとして手首を配置し、
太腿は膝を子オブジェ、膝の子オブジェで足首を配置。

こんな感じのヒエラルキーになります。
便宜として一応肩→肘→手首までを腕として、太腿→膝→足首を脚としてひとくくり。
後はモデル全体を一括にしたかったのでBLOCKMANという親オブジェも作成。

こうすることでBLOCKMANオブジェにボタンを押したら移動するスクリプトを書いて実行した時、
子オブジェがくっつく感じで一緒に移動します。

とりあえずモデルはこれでひとまず完成。次にアニメーション作成。
一応それっぽい物にしたいので歩行モーションを作ってみましょう。


まずアニメーション作成の下準備。
アニメーションといっても2Dみたいに新しい絵を次々差し替える物ではなく、
今の位置や角度から何フレーム後にこの位置、この角度にするという感じ。
FLASHの機能でモーショントゥイーンという開始フレームと終了フレームのオブジェ位置関係を自動で保管してくれるものがありました。あれに似てます。

まずはアセット内にAnimatorControllerを作成。
Projectタブで右クリックして作成します。

名前は適当に。このコントローラーをつけるオブジェと同じ名前を入れると分かりやすいと思います。
今回は BlockManAction という名前にします。

そしたらオブジェにAnimatorコンポーネントを追加。
ヒエラルキータブのBLOCKMANを選択し、表示されたインスペクターの一番下にある Add Componentをクリック。
Miscellaneous→Animatorの順にクリックしてAnimatorコンポーネントを追加します。
追加したAnimatorのControllerに先ほど作った BlockManAction を選択。

これで準備完了。

そうしたらいよいよアニメーション作成に入ります。
ヒエラルキータブのBLOCKMANを選択した状態で Ctrl + 6 でAnimationタブを新しく開きます。

のすぐ下にある空欄をクリックし、[Create New Clip]をクリック。
アニメーションの名前を聞かれるので Walk という名前にします。

そしたらアニメーション中に動かしたいオブジェクトを設定します。
すぐ下にある Add Curve ボタンをクリックし、動かしたいオブジェクトの Transform を選択します。
子オブジェの方は親オブジェクトからたどっていく形で選択します。
たとえば HEAD の Position を動かしたオブジェにする場合は、

こんな感じに辿って選択。
これを動かしたいオブジェの数の分だけ繰り返します。
ここがしんどい・・・
角度を変えたい場合はRotation、拡大率を変えたい場合はScaleを選択。

次にフレームレートの設定。
特に設定してなくても60FPSになってますが、変更したい時は Sample 枠の数字を変えればOKです。

いよいよフレームに数値を与えていきます。
とりあえず今回はシンプルに肩と太腿の角度を変えるだけ。
動かすのに必要なのはこちらの4つ。

オブジェクト名の左にある三角形をクリックするとX,Y,Zの角度を指定できるフォームが出てきます。
全部開きましょう。

とりあえず0.5秒で右腕を振り切るくらいにします。
右上にあるシーケンスの数字●:▲▲は●が秒、▲▲がフレーム枚数を示しています。
今は60FPSの設定なので、0.5秒は0:30の部分になります。
この部分にキーフレームを作成。
作成方法は作りたいフレーム位置でダブルクリック、もしくは右クリックして Add Key を選択。

一番上の何もオブジェクト名がない部分でやると、今出ているオブジェ全てにキーフレームを追加します。
0:30で右腕が一番前、1:30で右腕が一番後ろに振り切るようなフレームにします。
そして2:00で初期角度に戻して以後ループ。



こんな感じにします。

開始フレームと最終フレームは腕と足が垂直になる角度なのでここはそのまま。
フレーム数が30の部分の角度を変えていきます。
X軸の角度を30くらいにするとちょうどいいと思います。

0:30のフレームの数値はこんな感じ。

角度を入力した時Sceneタブのモデルが動きますがそれは正常です。
むしろ動いてなかったらどこかで間違っているかもしれません。

どちらが前向きなのかはモデルがモデルなのでこの際右肩と左太腿、左肩と右太腿が同じ角度ずつ動いてくれればよしとします。
1:30のフレームはこの逆の符合を入れればOKです。

一通り入力し終わったら動きをチェックします。
の右にある再生ボタンをクリックします。
一通り設定できていればSceneタブにいるBLOCKMANは歩く動作をしてくれます。

おまけとして、BODYの Position のY座標位置を微妙に揺らすとより歩いてるように見えます。


とりあえずこれが基本的なAnimatorの編集の仕方になります。
あとは時間とセンスを活用してより細かく動かしてもいいでしょう。
頑張れば指まで再現出来ます。自分はそこまでやりたくないですが(
CubeとCubeの間にSphereオブジェクトを挟み、Sphereオブジェクトから子オブジェクトをつないでいく形にするとリボルテックフィギュア的なものになるかもしれません。

ほぼ事前情報無しで書いた内容なのでめんどくさい部分や省略出来る箇所があるかもしれません。


2Dと比べて思うのですがやっぱり3Dのアニメーションって簡単だなぁと思いました。(直線的な動きしかしてないけどそれでも)
というよりモーショントゥイーンが便利すぎる。
まぁ、自分は模写技術が乏しいのでそもそも2Dのアニメーション自体が苦手なのですが・・・