プレハブとインスタンシング
どちらも「同じものをたくさん」を実現しますが、解いている問題はまったく別です。選び間違えると、 面倒な手作業か、重いシーンのどちらかになります。
| プレハブ | インスタンシング | |
|---|---|---|
| 複製するもの | オブジェクトのツリー | 1 つのオブジェクトのジオメトリ |
| 各コピー | 完全に独立していて編集できる | 描かれるだけで編集はできない |
| 向いているもの | 12 の部屋で使う椅子 | 1 万本の草 |
| 一度直せば全部に反映 | される | 該当なし。すべて同じオブジェクトです |
プレハブ
プレハブとは、何度でもシーンに置ける保存されたオブジェクトのツリーです。ライトと光彩を伴った ランプ、枠と音を伴ったドア、完全にリグの組まれたキャラクターなど。
プレハブを変えれば、そのすべてのインスタンスが更新されます。それがすべてです。ドアノブを直すのは 1 回で済み、12 の部屋を回る必要はありません。
各インスタンスはシーンの本物の一部です。動かせますし、その場所に固有のことを変えられます。
小さなオブジェクトのまとまりを 2 回目にコピーしていると気づいた瞬間に、プレハブにしてください。 散らばった 12 個のコピーができてから後付けするのは、12 通りの細かな差分をすり合わせる作業です。
インスタンシング
インスタンシングは、1 つのオブジェクトのジオメトリを 1 回の描画で何度も描きます。1000 個の コピーのコストは 1 個とほぼ同じで、草原・群衆・小惑星帯・森がそもそも成立するのはこのためです。
コピーの並べかたは 3 通りあります。
| ソース | 並べかた |
|---|---|
grid | 規則的な格子に。規則性を崩すための揺らぎも付けられます |
scatter | 箱や球の中にばらまく |
children | 子オブジェクトごとに 1 つ、それぞれの位置に |
children は「これを速くする」ための選択肢です。まず手で好きな場所に置き、これをオンにすると、
すべてが 1 回の描画にまとまります。オンの間、子は自分では描画しなくなります。
コピーに違いを出す
コピーは同じジオメトリなので、何もしなければ見た目がそろいすぎて壁紙のように見えます。次の 3 つがそれを崩します。
| 設定 | 効果 |
|---|---|
scaleMin · scaleMax | コピーごとに、この範囲でランダムな大きさになります |
rotationJitter | コピーごとにランダムな回転が入ります |
colorA · colorB | コピーごとに、2 色の間の色味になります |
さらに凝りたいときは、マテリアルグラフから「いま何番目の コピーを描いているか」を読み、そこから好きなものを変えられます。位相をずらして揺らす、汚れ具合を 変える、模様を変える、といった具合です。
個数・形・seed が同じなら、どこでも同じ配置になります。エディターでも、スマートフォンでも、
マルチプレイヤーのルームの各参加者でも同じです。同期は一切行われないので、1 万個のコピーでも
ネットワークのコストはゼロです。
同じ設定のまま別の配置にしたいときは seed を変えてください。
maxCount は安全柵です。これを超えるコピーは描かれないので、桁を打ち間違えても、あり得ない量の
メモリを確保しようとすることはありません。
次へ: 読み込みと起動画面