LOD

unity_chan_logo

■概要

LOD(Level Of Dettail)とは3Dモデル描画の高速化テクニックのことです。
3Dゲームで使用されているモデルのポリゴン数は年々増加しています。
このハイポリのモデルはカメラの近距離で描画した場合はなめらかに描画されるので、
絶大な効果を発揮しますが、カメラから離れれば離れるほど、詳細な描画ではなくなるので、
ハイポリである必要はありません。

■モデル切り替えによるLOD

複数のポリゴン違いのモデルを用意して距離によってモデルを切り替える手法です。
これによって、距離が離れたポリゴンのはローポリになるので、その分描画速度は向上します。

●ハイポリ
	多くのポリゴンを使用して作られた3Dモデル
		メリット:
			使用されているポリゴンが多いため
			詳細なディティールで作られているモノが多い
			
		デメリット:
			ポリゴン数の多いため描画コストが高い

●ローポリ
	少ないポリゴンを駆使して作られた3Dモデル
		メリット:
			ポリゴン数がすくないので、描画コストは低い

		デメリット:
			使われているポリゴンが少ないため
			荒いディティールになっているモノが多い

●ハイポリとローポリの違い:
	ローポリとハイポリの違いは単純にポリゴン数の違いです。
	ただ、ハイポリとローポリに境界はあいまいとされており、
	このポリゴン数以上だったらハイポリ、
	このポリゴン数以下だったらローポリということはありません。

●LODの例
	gmpg_0100

	上のSSでオブジェクトが3体描画されていますが、
	左から右に行くにつれポリゴン数を削ったものを描画しています。
	※Unityの「Simplygon」アセットを使用しています。
			
	gmpg_0101
	上のポリゴン数が少ないオブジェクトをカメラから離していますが、
	違和感があまりないかと思います。
	描画しているポリゴン数は減っていますので、その分だけ高速化に成功しています。

●メリット
	・高速化
		LODのメリットはやはりモデル描画の高速化です。
		ハイポリの高い描画コストを低い描画コストのローポリに
		差し替えられるのは大きいです。

●デメリット
	・作業コスト増加
		LOD用のローポリのモデルが必要になるので、
		グラフィックの担当の作業が増えます。

	・使用メモリの増加
		ローポリのモデルも使用するために読み込まなければならないので、
		その分のメモリも当然ながら消費します。

	・切り替え位置のあいまいさ
		各モデルごとにLODの切り替えを設定を行う必要があります。
		なぜかというと各モデル毎に切り替えによる違和感を感じる位置が異なるからです。

■テッセレーション

テッセレーションとはポリゴンを分割して3Dモデルの表示をより滑らかに表現する手法です。
DirectXでは11、OpenGLでは4.0以降のバージョンで使用可能になっています。

	gmpg_0102

モデル切り替え方のLODでは一定距離に達したらいきなりモデルが切り替わるので
切り替え時に違和感をユーザーが感じることがありました。
しかし、テッセレーションでは分割の度合いを自由に変更できるので、
モデル切り替えのような違和感が生じることはありません。
また、1つのオブジェクトでモデルの品質を変化させることができるということもあり、
現在のハイエンド機ではLODの手法としてこちらが採用されるようになっています。
※テッセレーションシェーダとして別途解説します。