うにty生活

UnityChanを生活させたい

焚き火のアニメーション作ってみた!【Blender→Unity】 #30

 

f:id:tubakihimeLoveHate:20200212004228p:plain

どうも、ラブヘイトです

今回はBlenderで複数オブジェクトのアニメーションを作成してUnityで動かしていこうと思います

題材はサバイバルゲームとかでよくある、焚き火を作成していきます!

 

え?なんとなくですよ笑

 

バラバラの素材が集まって焚き火ができていくようなアニメーションなので

他にも応用できるかと思います

 

 

◆木材作成

モデルに関しては全てblenderで作成しています。

f:id:tubakihimeLoveHate:20200210012831p:plain

この方の記事を参考にTexturehevenからダウンロードできるTexture設定を行いました。Texturehevenには加工済み木材はなかったので適当な木材のタイルをダウンロードしました。

参考

Blender テクスチャを利用したリアルなマテリアルの作り方【PBR】 - TomoGのごちゃまぜ倉庫

Textures: All | Texture Haven

 

ちなみにこの木材のShader Editorはこんな感じ

f:id:tubakihimeLoveHate:20200211142035p:plain

f:id:tubakihimeLoveHate:20200211142048p:plain



 ◆石作成

f:id:tubakihimeLoveHate:20200210012839p:plain

石はこの方の記事を参考

Blenderで石を作るチュートリアルを試す(1) | ぬの部屋(仮)

 

Blenderは初心者すぎるので、自分が工夫して調節っていうのはもう少し先になるかと思います。

Unityにモデルを持ってくるときは、ベイクを行ってレンダリング結果を直接Textureに焼き込みました

 

◆Textureのベイク方法

 

参考:

Blender レンダリング結果をテクスチャにするベイク - TomoGのごちゃまぜ倉庫

すごくお世話になってる... 

 

普通にベイクすると大体暗いTextureになってしまうので、

Lightをモデル全体に均一に当たるように配置してからベイクを行いました

 

◆アニメーション作成

Unityでアニメーションを作成しようと思っていたのですが、

UnityはBlenderほどオブジェクトをグリグリ動かせないのでBlederで作成することに

 

今回は散らばっているところから集まって焚き火が完成するようなアニメーションにしたかったので、コツはずばり「適当さ」です(どやっ!)

 

File > Append から 木材と石を持ってくる

f:id:tubakihimeLoveHate:20200211143538p:plain

 

そうしたらまず組み合わせて完成形を作成

f:id:tubakihimeLoveHate:20200211144508p:plain

 

ドープシートを開いてフレームの最後の部分を選択し、完成した焚き火のキーフレームを挿入(オブジェクト全選択> 「Iキー」 > LocRot )

f:id:tubakihimeLoveHate:20200211151613p:plain

今回スケールは変えないのでpositionとrotationだけをキーフレームに登録しました(重くなるからね)

 

次に1フレームに移動したら

あとは適当に散らばせるだけ!!笑。そしてキーフレームを登録

上から作業するのがおすすめ(7キー)

f:id:tubakihimeLoveHate:20200211213603p:plain

 

とはいっても最初と最後を登録しただけでは直線的な動きになってしまうので、

中間で少し浮かせたり、回転を加えてたり、スタートずらしたりと

引き寄せられてる感じを表現しました

f:id:tubakihimeLoveHate:20200211213834p:plain


グラフエエディターとかも使ってみたかったんだけど、この有様だったのでやめました笑

f:id:tubakihimeLoveHate:20200211213932p:plain

 

 

 

◆Unity用にエクスポート

ここをうまく設定するのに結構時間がかかりました

ボーンのアニメーションを出力するわけではないので、取り扱いが違います

 

 

fbxとして出力するのは1フレーム目のバラバラの状態で出力します(後で説明)

注目すべきはAnimationの設定

f:id:tubakihimeLoveHate:20200211215115p:plain
色々試した結果Baked Animationは必須。これにチェック入れていないとそもそもアニメーションが出力されない

最初は全てチェックされているのでこれらのチェックを外してください

・ Key All Bones

・ NLA Strips

・ All Action

 

※これらを外さなかったら、アニメーションがたすき掛けのように大量に出力されてしまいます。扱えたものではありません(私のunityでは重すぎて死にました)

 

チェックを外したら、出力!

Unityにインポートしたらこんな感じです

f:id:tubakihimeLoveHate:20200211215503p:plain



きちんとアニメーションがひとつになっていますね

 

配置してアニメーションを再生

f:id:tubakihimeLoveHate:20200211234145g:plain

 

◆パーティクル

パーティクルで炎を作成します

f:id:tubakihimeLoveHate:20200211230735p:plain

静止画だと炎なのに角ばってますね笑

Textureを使うのですが、いい感じのCloud Textureがなかったので「ibispaint」というアプリで適当に作成しました。どうぞご自由に使ってください

f:id:tubakihimeLoveHate:20200211231040p:plain

 

設定

f:id:tubakihimeLoveHate:20200211230902p:plain

f:id:tubakihimeLoveHate:20200211231124p:plain

f:id:tubakihimeLoveHate:20200211231136p:plain

 

Render Materialに設定するマテリアルですが、Create > Materialで新規マテリアルを作成して、shaderをMobile > Particle >Additive にします

f:id:tubakihimeLoveHate:20200211231406p:plain

 

f:id:tubakihimeLoveHate:20200211233840g:plain

 

◆Haloを追加

完成しました!がもっと空間的に明かりが欲しいので

Haloコンポーネントを追加

f:id:tubakihimeLoveHate:20200211235314p:plainf:id:tubakihimeLoveHate:20200211235347p:plain

どっちがいいんだろ...

 

◆組み合わせる

Blenderからエクスポートしたアニメーションは編集ができないので、

スクリプトでアニメーションと炎パーティクルを組み合わせていきます

 

先ほどのhaloとパーティクルをあらかじめ追加しておきます(setActive=false)

f:id:tubakihimeLoveHate:20200212000614p:plain

 

次に焚き火にスクリプトを追加します

 

gist99074be1c0823b06ddbf60aac06a6e7f

nomalizedTimeでアニメーションが終わったことを取得してます

 

Animator

f:id:tubakihimeLoveHate:20200212002605p:plain

 

時間がかかりましたがなんとか完成しました!

f:id:tubakihimeLoveHate:20200212004102g:plain

 

思ったよりうまく作れて嬉しいです!