Terrainの草を動的に刈る方法 : GPU Instancerを用いて

プログラミング

本記事ではGPU Instancerを用いてテレインの草を動的に刈る方法を紹介します。

GPU Instancerとは

GPU InstancerとはUnity Aseet Storeで販売されている、大量のゲームオブジェクトを高いFPSを保ちながら描写することができるアセットです。


以下の記事では5万個のゲームオブジェクトを、GPU Instancerあり/なしでのFPSを比較しています。ぜひ参考にしてください。


このアセットにはゲームオブジェクトを大量に描写するだけでなくほかの機能もかなり充実しています。

準備

GPU Instancerにはテレインのオブジェクト(木や草など)を管理する機能があります。

このアセットを通すことで、動的に草を削ることができます。

TerrainとGPUI Detail Managerを作成

Toolsタブ>GPU Instancer>Add Detail Manager For TerrainsでGPUI Detail Managerを生成します。

TerrainとGPUI Detail Managerを生成

Terrainに草を生成

Terrainに草を追加します。

そしていつも通り、Terrainの表面に草や花を塗っていきます。

草刈り機を生成

適当にCubeゲームオブジェクトを作成します。そして新たにC#スクリプトを作成して「Controller」と命名します。それをゲームオブジェクトに取り付けます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GPUInstancer;

public class Controller : MonoBehaviour
{
    public List<Collider> selectedColliders;
    private void Update()
    {
        foreach (GPUInstancerManager manager in GPUInstancerManager.activeManagerList)
        {
            foreach (Collider collider in selectedColliders)
            {
                GPUInstancerAPI.RemoveInstancesInsideBounds(manager, collider.bounds, 0);
            }
        }
    }
}

そして、インスペクターからselectedCollidersの0番目にCubeについているBox Colliderを代入します。

これで準備は完了しました!

結果

あとはゲームを実行してゲームオブジェクトをSceneウィンドウ等から移動させます。

するとCubeが通った部分の草が消えていることが確認できると思います。

これでまた表現の幅が広がりました!あとはこの単純なキューブオブジェクトを草刈り機などのモデルに変えて、草を刈るシステムをゲームに取り込むと面白くなりそうです。

GPU Instancer | ユーティリティ ツール | Unity Asset Store
Use the GPU Instancer from GurBu Technologies on your next project. Find this utility tool & more on the Unity Asset Store.

コメント

タイトルとURLをコピーしました