STYLYアドベントカレンダー24日目の記事です。
2021年のSTYLY NEWVIEW AWARDSに参加して、宮沢賢治の「やまなし」という童話を題材にした作品を制作しました。
この作品で優雅に泳いでいるモブの魚たちはあまり目立たない存在ですが、実はBlenderのパーティクルで魚の群れのシミュレーションをして、Unityに持ってきています。この記事では魚の群れ表現を実現するために調べたことをまとめたいと思います。
魚の群れの動きをBlenderでシミュレーション
「やまなし」ではカワセミの登場で魚が逃げ惑う表現を検討していたので、リアルな魚の動きをシミュレーションしたいと考えていました。Unityで魚の群れをつくりたいときは通常C#のプログラムで「Boid」の仕組みを作ったり、群れ制御のアセットを使ったりすると思うのですが、STYLYで実現するためにはPlayMakerというアセットが必要になるので他の方法があるかどうか調べたところ、Blenderのパーティクルでも実現することがわかりました。
Boid Particle
https://www.youtube.com/watch?v=J3TUPYVsxow
Blenderのパーティクルをアニメーションに変換
BlenderのパーティクルはそのままUnityに持ってくることができません。そこで、パーティクルの動きをアニメーションに変換するベイク処理をします。Blenderは標準ではベイクをサポートしていないのですが、pythonを利用する方法がBlenderのStackExchangeに書いてありました。
- まず、Scriptingのタブを開いて上記のコードを貼り付けます。
- 次に、パーティクルとして動かしたいオブジェクト(この場合は魚一匹)とパーティクルを選択します。
- 2つのオブジェクトを選択した状態でスクリプトを実行します。
しばらく待つとパーティクルの動きがアニメーションとしてベイクされます。
出力はこのように設定しました。
おわりに
演出の関係で魚が激しく動き回るようなモーションを使うことはありませんでしたが、BlenderのパーティクルをUnityに持ってくることができるとわかり、いろいろと試してみたいと思いました。