
詳細レベル
Tutorial
intermediate
+0XP
25 mins
Unity Technologies

このチュートリアルでは、詳細レベル(LOD)を使用して、アプリケーションのパフォーマンスを最適化しながら、さまざまな距離で 3D モデルのディテールを強調できるユースケースをいくつか学びます。
1. 概要
詳細レベル(LOD)を活用することで、シーン内の各オブジェクトでレンダリングされる頂点の数を、オブジェクトとカメラの位置に応じて管理することができるようになります。これを行うことで、アプリケーションのパフォーマンス改善になります。
LOD を利用することで、前回のチュートリアルで説明されていた遠い位置にあるオブジェクトの微小三角形の問題も回避もできます。アプリケーションの実行中にカメラからの距離が変わる 3D オブジェクトについては、すべて LOD を最適化することをおすすめします。
次の画像は、LOD 管理を利用して、モデルがカメラから離れる際に適切な詳細レベルを保ちつつも、3D モデルの複雑度は軽減するという方法を示しています。
LOD を使用する際の重要ポイントは次のとおりです。
- 三角形の数を減らす際、三角形がオブジェクトの輪郭にどのように影響するかは留意しておくようにしてください。
- 比較的平板なエリアにおいてはポリゴンをさらに減少させます。
- モデルには、ミップマップを使用する必要があります。このミップマップは、テクスチャの LOD としての機能を果たします。ミップマップについては、後ほどテクスチャ関連のプロジェクトで扱います。
- LOD はシェーダーの複雑度にも適用できます。遠くにある 3D オブジェクトでは、シェーダーとマテリアルを最適化することができます。たとえば、カメラから離れるほど、オブジェクトで使用されるテクスチャの数は減らしていくことができます。
2. LOD を使用すべきでないケース
あらゆる状況で LOD が適しているわけではありません。たとえば、カメラビューとオブジェクトが両方とも静的なアプリケーションや、オブジェクトのポリゴン数がすでに少ないアプリケーションには、使用しない方がよいでしょう。
LOD にはメモリオーバーヘッドが伴い、ファイルサイズが大きくなります。これは、メッシュデータをリアルタイムで使用できるように保存しておく必要があるためです。
次の画像は、シーンが静的なため、LOD が使用されていないシーンです。こうした状況では、プレイヤーから見えないポリゴンを削除するなど、他の最適化方法は使用することができます。
3. LOD を使用する理由
オブジェクトがカメラから離れるにつれて、そのディテールは見えなくなっていきます。20 メートル離れた位置からでは、三角形が 200 個のオブジェクトと三角形が 2,000 個のオブジェクトの違いはほとんどわかりません。シーン内で余分な三角形を使用するのは望ましくありません。そこで LOD を利用すると、見た目への影響をほとんど生じさせずに効果的にアプリケーションを最適化できます。
LOD には、他に以下のようなメリットもあります。
- 処理が必要な三角形の数が少ないため、パフォーマンスが向上します。
- LOD により微小三角形が原因となる問題を軽減することができます。
次の画像は、ポリゴンの数が異なっていても、遠くのオブジェクトの見た目が変わらない例を示しています。
4. 三角形の適切な数
LOD を使用する際に考慮すべき重要ポイントは次のとおりです。
- たいていの場合、LOD 1 レベルごとに三角形の数を 50% ずつ減らしていくのが効果的です。
- LOD が低いオブジェクトで、高密度の三角形エリアを使用しないでください。このような三角形が見えるのは、オブジェクトが近い場合のみです。
- カメラからの距離を変えて、LOD を使用してどのように見えるのかを確認してください。LOD が低いと、アップで見たときの解像度は低くなりますが、カメラから離れた位置にあるオブジェクトの場合は問題ありません。
次の画像は、ポリゴン数がレベルごとに 50% 少なくなった場合に、オブジェクトがどのように見えるかを示しています。
次の画像は、LOD が低いオブジェクトをアップで見たときの様子です。ディテールが乏しいですが、カメラから離れた位置から見ると問題ありません。
LOD の低いオブジェクトのポリゴン数を十分減らさないと、アプリケーションのパフォーマンスに悪影響が及びます。これは、GPU が必要以上の数の頂点を処理しているためです。
ただし、LOD の低いオブジェクトのポリゴン数を減らしすぎると、オブジェクトのディテールがリアルタイムで現れたり消えたりします。それにより、ユーザーエクスペリエンスに悪影響が及ぶ可能性があります。
5. 詳細レベルの数
オブジェクトに適用すべき LOD の数として、確かな数値はありません。オブジェクトのサイズと重要度によって異なります。たとえば、アクションゲームのキャラクターやレーシングゲームの車には、木などの小さな背景オブジェクトよりも高い LOD レベルを使用すると有効な場合があります。
LOD レベルが少なすぎると、パフォーマンス向上のメリットが得られません。また、レベル間のポリゴン数の減少幅が大きすぎると、LOD 切り替え時に発生するポッピングがより顕著になります。LOD レベルが多すぎると、アプリケーションのパフォーマンスに影響が及びます。
また、LOD が増えるとメモリ使用量が増大します。追加のメッシュをどこかに保存する必要があり、ファイルサイズが大きくなるためです。ただ、最も大きなコストは作業時間です。特に、各レベルを手動で作成する場合はそれが顕著になります。
6. LOD メッシュの作成
3D ソフトウェアを使用して LOD メッシュを手動で作成する場合は、エッジループを削除するか、オブジェクト内の頂点の数を減らします。この方が細かな調整が可能になりますが、完成までの時間が長くなる可能性があります。
LOD メッシュを自動的に作成する場合は、組み込みのモディファイア、または LOD 生成ソフトウェアを別途使用します。組み込みのモディファイアには、3ds Max の ProOptimizer や、Maya の「Generate LOD Meshes」機能などがあります。
7. まとめ
LOD メッシュを使用すると、カメラからの距離が変わるオブジェクトの余分なジオメトリを最小限に減らすことで、アプリケーションを効果的に最適化できます。次のチュートリアルでは、モバイルアプリケーション用のジオメトリを最適化する際のその他のベストプラクティスを紹介します。