【宣伝】Boidsシミュレーションを実用して表紙の絵を作る!

始めに
技術書典18にて、個人で執筆した技術書『Unity JobSystemで大群を動かす!実用Boidsシミュレーション』を出版します。
今回は『実用Boidsシミュレーション』に焦点を当てて、どのようにBoidsを使って表紙の魚群を作成したのか解説します。
Boidsシミュレーション準備
まず、技術書の5章「Boidsシミュレーションを使ったシューティングゲーム開発」のサンプルを持ってきます。 このBoidsシミュレーションが持つ機能は次の通りです。
- Colliderとの衝突回避
- 動くオブジェクトからの退避
- 生存状態の管理
- 衝突判定
上記のうち「動くオブジェクトからの退避」と「衝突判定」は不要ですが、削除するのも面倒くさいのでそのままにしています。

Boids個体の生成を調整
技術書のサンプルでは、ゲーム開始時に全個体をランダムな座標に生成します。

これを調整して、スペースキーを押したときに指定した空間と方向で生成させます。 これにより、望んだ場所と方向に魚群を作成できます。

Boidsを円状に動かす
群れを円状に動かす方法として、Colliderで通り道を作りました。
通り道となるPrefabを作成
通り道の作成は単純で、4つのQuadを囲ってMeshRendererを非アクティブにして完成です。

これをBoidsの生成位置に置けば、その通り道に沿って動いてくれます。

Splineで形を作る
次にSplineを使って通り道の形を作ります。いくつか流れがあるので、箇条書きで説明します。
- PackageManagerからSplineをインポート
- HierarchyからSpline > Circleで円を作成
- コンポーネント
Spline Instantiateで、形状に沿って通り道Prefabを生成
(ここは作業通話してた友人からアドバイスを貰いました)

これで通り道が完成し、円状に動く群れが完成しました。

表紙作り
あとはアバターを配置し、ポージングさせて群れと合わせます。

最後に背景をいい感じに調整して完成です!

最後に
このように技術書で解説したBoidsシミュレーションを実用して、表紙を作りました。タイトルに含まれる「実用」を上手く表現できたのかなと思っています。
技術書ではシューティングゲームを作っていますが、視覚的な表現にも応用できます。興味がありましたら本書を手に取っていただけると嬉しいです。
表紙作成にしようしたもの
表紙を作るうえで、いくつかアセットを使用したので掲載します。(魚のモデルに関しては友人に作ってもらったものです)
モデル
デザインはChat GPTにお願いして、VRoidで作成しました。
使用したアセットは以下の通りです。
また、VRoidモデルにliltoonをアタッチしています。
背景
背景はUnity AssetStoreから購入したものを使用しました。