前回は、植物生成ツール「Tree It」の基本的な使い方と機能をご紹介しました。今回は、そこで制作した木々をVR空間に配置し、広大な森の背景をUnityで作り上げていきます。特にVR環境では、見た目の美しさとパフォーマンスの両立が重要となります。
モデルの最適化
前回の記事でも触れたように、木の葉の表現は、板状のメッシュ(ポリゴン)を何枚も重ねて茂みを表現する仕組みになっています。この 「大量の重ね合わせ」 が、VR環境においてはパフォーマンスのボトルネックになりやすいのです。
そこで重要となるのが「モデルの最適化」です。最適化の方法は、森をどのように見せるか、つまり 目的 によって変わってきます。
木々から離れたり近づいたりする場合:LOD(Level of Detail)の活用
ユーザーが木々の間を移動したり、遠くから森全体を眺めたりするようなVR体験では、**LOD(レベル・オブ・ディテール)**の設定が不可欠です。
LODとは、カメラからの距離に応じて、モデルのポリゴン数や詳細度を自動的に切り替える仕組みです。
近くで見る場合: 最も詳細なモデル、LOD0が表示されます。
遠くなるほど: LODレベルが上がり(LOD1、LOD2…)、よりシンプルなモデルに切り替わるります。
「Tree It」にはLODを自動で調整する機能も搭載されていますが、ほとんどの場合、手動で調整した方がより良い結果につながります。
今回のLOD設定の例:
私たちは、今回の森制作において、以下の5レベルのLODを書き出しました。
- LOD0: 8610ポリゴン (最も詳細)
- LOD1: 5260ポリゴン
- LOD2: 3041ポリゴン
- LOD3: 2219ポリゴン
- LOD4: (LOD3よりポリゴン数が下がらないため、Imposterを使用)
Imposterは、特定の方向から見た木の姿を一枚の板状ポリゴンにテクスチャとして焼き付けたものです。これにより、遠くの木を極めて少ないポリゴン数で表現でき、大幅なパフォーマンス改善に繋がります。
木々を固定した位置から観察する場合
もしVR体験が、特定の固定された視点から森を観察するようなものである場合、LODをそのまま利用し、距離に基づいて手動で配置することも可能です。
しかし、さらに最適化や、特殊な表現が必要な場合が多いため、、MayaやBlenderといった3Dソフトウェアで調整することが必要になります。
この角度からサンプルシーンを眺めると、見えない葉っぱや木の幹は消してしまえます。たった3分調整しただけで、見た目はほとんど変わらずに6千ポリゴンも減らせたんです。これよりも倍ぐらい削ると葉っぱは明らかに薄く見えていしまいますが、その対策として、葉っぱの後ろに誤魔化すためのオブジェクト・板ポリを置きます。
これ以上最適化することもできます。例えば、こちらのシーンでは奥の視界を遮る必要があったため、木々や葉を散りばめる代わりに、板ポリゴンを使用して奥行きを表現し、視覚的な奥行きをごまかしました。
LODの設定をする際、どのレベルをどの距離にするかを実験で調整します。
上記全ての最適化方法をまとめて、シーンを制作すると美しくでき、VRでも軽く走れるシーンができます。
こちらのサンプルシーンではUnityのTerrain機能を活用し、木々や植物などを簡単に配置し、シーンを制作していきます。
ポストプロセスにBloom、Ambient Occlusion、被写界深度や色調整などでより美しく表現できます。