プレハブとインスタンシング
プレハブもインスタンシングも、同じものをたくさんつくる方法ですが、解決する問題が違います。ここでは、どちらを選べばよいかを説明します。
| 方法 | コピーするもの | 各コピー | 向いている用途 |
|---|---|---|---|
| プレハブ | オブジェクトのまとまり | 移動も編集もできる本物のオブジェクト。プレハブを変えると更新されます | 12 の部屋で使う椅子 |
| インスタンシング | 1 つのオブジェクトのジオメトリ | 描画されるだけ。1 つずつ編集することはできません | 1 万本の草 |
選び方を間違えると、同じ編集を何度も繰り返すことになるか、シーンが重くなります。
プレハブ
プレハブは、保存したオブジェクトのまとまりで、何度でもシーンに追加できます。たとえば、ライトと光の演出が付いたランプ、枠と音が付いたドア、リグを組み終えたキャラクターなどです。
プレハブを変更すると、すべてのコピーが更新されます。ドアノブを直すのは 1 回だけで済み、12 の部屋で直す必要はありません。
各コピーは、シーンの本物の一部です。動かすこともできますし、その場所だけに効く設定を変えることもできます。
小さなオブジェクトのまとまりを 2 回目にコピーするタイミングで、プレハブにしてください。コピーが 12 個になるまで待つと、12 か所に散らばった細かな違いをすり合わせることになります。
インスタンシング
インスタンシングは、1 つのオブジェクトのジオメトリを何回も表示します。コピーが 1000 個あっても、負荷は 1 個のときとほぼ同じです。草原、群衆、小惑星帯、森をつくれるのは、このしくみのおかげです。
コピーの並べ方は 3 つあります。
grid:規則正しい格子状に並べます。ジッターを加えると、規則正しさが目立たなくなります。scatter:箱か球の中に、ばらばらに散らします。children:子オブジェクトそれぞれの位置に、コピーを 1 つずつ置きます。
手で配置したオブジェクトを軽くしたいときは、children を使います。オブジェクトを好きな場所に置いてから、children をオンにします。オンの間は、それぞれの子の代わりにコピーが表示されます。
コピーに変化をつける
どのコピーも同じジオメトリを共有しているので、何もしなければ、どれも同じ見た目で単調になります。次の設定で変化をつけられます。
scaleMin·scaleMax:コピーごとに、2 つの値の間のランダムな大きさになります。rotationJitter:コピーごとに、ランダムな回転になります。colorA·colorB:コピーごとに、2 つの色の間の色合いになります。
さらに変化をつけたいときは、マテリアルグラフで、いま描画しているのがどのコピーかを読み取り、それに応じて何でも変えられます。たとえば、コピーごとに揺れるタイミングをずらしたり、使い古した感じを変えたり、模様を変えたりできます。
数、形、seed が同じなら、どこでも同じ配置になります。エディターでも、スマートフォンでも、マルチプレイヤーのルームにいる全員にとってもです。コピーが 1 万個あっても、ネットワークの通信量は増えません。
同じ設定のまま別の配置にしたいときは、seed を変えてください。
maxCount は、コピーの数の上限です。上限を超えたコピーは描画されません。そのため、数を打ち間違えても、エンジンがありえない量のメモリーを使おうとすることはありません。
次へ: 読み込み — シーンが開く前に読み込まれるものと、起動画面。