Version: 2019.3
言語: 日本語
リフレクションプローブ
Unity で HDR レンダリング

LOD グループ

LOD Group コンポーネントは、ゲームオブジェクトの Level of Detail (LOD) を管理するために使います。

LOD Group インスペクター
LOD Group インスペクター

A LOD レベル間の遷移 のコントロール

B LOD レベルを切り替え LOD レンダリングをプレビューする LOD グループ選択バー

C Quality 設定の LOD Bias に関する情報。このメッセージは、LOD Bias プロパティが 1 以外に設定されている場合に表示されます。

D 選択した LOD レベルの Fade Transition Width。このプロパティは、Animate Cross-fading プロパティを無効にする場合にのみ、つまり、時間の代わりに幅で遷移ゾーンを設定を選択する場合にのみ表示されます。

E 選択した LOD レベルに設定された メッシュ レンダラー

さらに、コンポーネントの下部に 2 つのボタンがあります。

  • 新しい LOD レベルを加えた後に、すべての LOD メッシュゲームオブジェクトのバウンディングボリュームを再計算するには、Recalculate Bounds をクリックします。
  • LOD レベルの境界の変更に基づいて、すべての LOD メッシュレンダラーの ライトマップのスケール プロパティを更新するには、Recalculate Lightmap Scale をクリックします。

LOD グループ選択バー

LOD グループの選択バーは、異なる LOD レベルをカラーボックスで表します。

各 LOD レベルのボックスに表示されるパーセンテージは、そのレベルがアクティブになるしきい値を表します。画面全体の高さに対するゲームオブジェクトの高さの比率に基づいています。例えば、LOD 1 のしきい値が 50% に設定されている場合、ゲームオブジェクトの高さが画面内で半分になるのに十分な距離をカメラが引くと、LOD 1 はアクティブになります。

LOD グループ選択バー
LOD グループ選択バー

A LODプレビュー の再生ヘッド。カメラのアイコンを左右に動かして、LOD レベルとその遷移をテストできます。再生ヘッドの下部に、現在のパーセンテージが表示されます。

B レベルを選択するには、レベルボックスをクリックします。選択した各 LOD レベルに対して、使用するレンダラーを選択 したり 遷移ゾーンをカスタマイズ することができます。

C 選択バーから LOD レベルを追加、削除するには、LOD レベルボックスを右クリックし、コンテキストメニューから Insert BeforeDelete を選択します。

D レベル調整のコントロール。LOD レベルのパーセンテージ値を変更するには、LOD レベルボックスの境界の左端をドラッグします。

ノート: Lod Bias プロパティが 1 に設定されていない場合、カメラ位置は、各 LOD レベルが実際に遷移する位置と一致しない場合があります。この場合、選択バーの下に警告メッセージが表示されます。

LOD Bias 警告
LOD Bias 警告

LOD 遷移のプレビュー

LOD Group 選択バーでカメラアイコンを動かすと、LOD レベル間の遷移のプレビューが表示されます。カメラアイコンは再生ヘッドのように機能します。LOD Group 選択バーに沿って左右に動かして正確な位置に調整し、プレビューすることができます。プレビューは、各 LOD レベルでレンダリングするカメラを示します。

LOD Group 選択バーで遷移のプレビューを制御
LOD Group 選択バーで遷移のプレビューを制御

LOD プレビュー再生ヘッドは、LOD Group 選択バー (左端の 100% から右端の 0% まで) に沿って正確な位置をパーセンテージとして表示します。パーセンテージは、スクリーンの高さに対するゲームオブジェクトのスクリーンスペースでの高さの比率を表します。

レベルを移動していくと、シーンビューにツリーアセットのバウンディングボックスが表示され、オーバーレイはどの LOD がアクティブであるかを示します。

アクティブな LOD レベルを表示するオーバーレイ
アクティブな LOD レベルを表示するオーバーレイ

LOD メッシュのレンダラー

LOD Group 選択バーで LOD レベルボックスを選択すると、Renderers パネルが表示されます。

LOD 3 の Billboard Renderer を持つ Renderers パネル
LOD 3 の Billboard Renderer を持つ Renderers パネル

「レンダラー」は実際にはその LOD レベルのメッシュをもつゲームオブジェクトです。通常は、LODGroup コンポーネントを持つゲームオブジェクトの子です。

現在の LOD レベルのレンダラーメッシュを設定するには、Add ボックスをクリックし、オブジェクトピッカーからその LOD レベルのゲームオブジェクトを選択します。

レンダラーには任意のゲームオブジェクトを選択できますが、子オブジェクトではないゲームオブジェクトを選択した場合は、Unity はそのオブジェクトを LODGroup ゲームオブジェクトの親にするよう指示します。

LOD レベル間の遷移

LOD レベルを滑らかに遷移させることで、プレイヤーのゲーム体験を向上させることができます。カメラが近づいたり遠ざかるにつれて、プレイヤーが現在の LOD レベルから次のレベルへ明らかに切り替わること (ポッピング と呼ばれることもある) がないようにします。

遷移は 遷移ゾーン 内で発生し、Unity は現在の LOD レベルと次の LOD レベルの両方を別々にレンダリングし、それらをクロスフェードします。

クロスフェード は 2 つのレベルを同時にレンダリングする技法で、現在の LOD レベルでは 1 から 0、次の LOD レベルでは 0 から 1 の重み付けで行われます。

現在の LOD レベルと次の LOD レベルのクロスフェード
現在の LOD レベルと次の LOD レベルのクロスフェード

Unity は通常、スクリーンスペースのディザリングや透明度のいずれかを使用してクロスフェードを実装します。最後の LOD レベルでは、クロスフェードはありません。現在のレベルはフェードアウトするだけです。

LOD レベルで滑らかな遷移を設定するには、以下の手順を行います。

  1. Fade Mode ドロップダウンを選択し、Cross Fade を選択します。

    フェードモードのドロップダウン
    フェードモードのドロップダウン

    注意: ツリーアセットが SpeedTree で作成されている場合は、代わりに Speed Tree モードを選択してください。詳細は、SpeedTree モデルの使用 を参照してください。

  2. デフォルトでは、Animate Cross-fading オプションが有効になっています。つまり、タイムベースの遷移が実行されます。カメラの位置に基づいて独自の遷移ゾーンを定義したい場合は、Animate Cross-fading オプションを無効にし、Fade Transition Width プロパティを設定します。

    詳細は、遷移ゾーンのカスタマイズ の値を参照してください。

遷移ゾーンのカスタマイズ

2 つの LOD レベル間の遷移は、モデルの高さの比率が次の LOD のしきい値を超える瞬間から始まります。例えば、LOD 1 のしきい値が 60% に設定されている場合、LOD 0 と LOD 1 のレベル間の遷移は、モデルの高さが 60% になるとすぐに開始されます。遷移は短時間持続します。

アニメーションのクロスフェード (時間による)
アニメーションのクロスフェード (時間による)

この動作は時間によってアニメーション化されるため、Animate Cross-fading プロパティを有効にしたらプロパティを設定する必要はありません。クロスフェードの正確な持続時間はすべての LOD レベルで同じです。

または、各 LOD レベル内の遷移ゾーンを位置によって手動で定義することもできます。各ゾーンは、次の LOD レベルのしきい値よりも前に開始し、終了します。遷移ゾーンに使用する各 LOD レベルの割合を定義します。つまり、次のレベルのしきい値のどれくらい前に遷移が始まるかを設定します。

遷移のフェードの幅 (位置による)
遷移のフェードの幅 (位置による)

Fade Transition Width プロパティを使用して、各 LOD レベルで遷移ゾーンを定義します。

  1. Animate Cross-fading オプションを無効にします。

  2. 設定したい特定の LOD レベルボックスをクリックします。

    Fade Transition Width プロパティは LOD Group 選択バーの下に表示されます。

    Fade Transition Width プロパティが表示されます
    Fade Transition Width プロパティが表示されます
  3. Fade Transition Width プロパティを設定して、クロスフェード遷移ゾーンの幅を現在の LOD レベルの全体の長さに対する割合(0.0 から 1.0 の間) に設定します。例えば、ブレンディングの開始を遅らせる、より速い遷移を作成するには小さい値を指定します。

SpeedTree モデルの使用

SpeedTree ジオメトリは各頂点の 次の LOD 位置を格納します。それで、すべての頂点は現在の LOD 位置と次の LOD 位置の間の補間方法を確認します。SpeedTree で作成したモデルを Unity にインポートすると、自動的に Speed Tree モードに設定されます。

SpeedTree モデルの Speed Tree の Fade Mode
SpeedTree モデルの Speed Tree の Fade Mode

Unity は、現在の LOD ジオメトリをレンダリングし、0 から 1 の値を各頂点に渡し、各頂点が次の LOD 位置に徐々に 移動 するように指示するだけです。遷移の終了時に、現在の LOD と次の LOD のジオメトリは完全に一致します。

2 つの LOD レベルのブレンドは 0 から始まり 1 で終了します。このゾーンに沿った任意のポイントはブレンド係数で、現在の LOD レベルと次の LOD レベルの間の重み付けを表します。

SpeedTree モデルのブレンド
SpeedTree モデルのブレンド

Speed Tree モードではブレンド係数を使用して、現在の Mesh LODレベル と次のメッシュLODレベルの頂点位置を補間し、その位置にジオメトリをレンダリングします。

ノート: Speed Tree モードは、2 つの メッシュの LOD レベル 間のブレンドにのみ使用されます。つまり、現在の LOD レベルと次の LOD レベルの両方にメッシュレンダラーがある場合に限られます。ビルボードの LOD レベル に遷移するとき、または完全にフェードアウトするとき、Unity は クロスフェード スタイルのブレンドを実行します。

シェーダーコードのブレンド係数

Unity には、LOD ジオメトリをブレンドするためのデフォルトのビルトインの技術がありません。ゲームの種類とアセット作成パイプラインに応じて、独自のものを実装する必要があります。

Unity はゲームオブジェクトの画面サイズからブレンド係数を計算し、unity_LODFade.x uniform 変数でシェーダーに渡します。選択した Fade Mode (フェードモード) に応じて、LOD フェードでレンダリングされたゲームオブジェクトに LOD_FADE_PERCENTAGELOD_FADE_CROSSFADE キーワードのどちらかを使用してください。

時間ベースの (アニメーションの) 遷移の場合、LODGroup.crossFadeAnimationDuration メンバーを使用して、すべての LOD レベルで遷移の正確な継続時間をグローバルに設定できます。

LOD 命名規則については、Level of Detail を参照してください。



  • 2018–02–08 公開ページ
リフレクションプローブ
Unity で HDR レンダリング