Language:
Page Info
Tags:
Engine Version:

パーティクル システムの詳細度 (LOD)

詳細度 (LOD) を使うと、エフェクト アーティストはプレイヤーの範囲に合わせてスクリーン空間を最も効率よく使用するパーティクル エフェクトを作成することができます。キャンプ ファイアーのパーティクル システムを考えてください。次のようなエミッタが含まれています。

  • 炎心

  • 外炎

  • コアの発光

  • 火花と燃えさし

  • 一層以上の煙

お持ちのシステムは間近ではこのように見えると思います。

FireEffect_Close.png

ただし、プレイヤーが遠ざかっていくと、占有するスクリーン空間は以下のように激減します。

FireEffect_Distant.png

このようなケースでは、燃えさしなど、パーティクル システムのアスペクトがレンダリングには小さすぎる (ピクセルより小さい) 場合があります。しかしながら、このようなパーティクルも計算や処理はまだ可能です。そこで LOD の出番です。LOD はパーティクル システムを距離に合わせて簡素化することが可能なので、プレイヤーがエフェクトを効果的に認識するには遠すぎる状態になると、システム内のエミッタとモジュールは設定を終了、または完全にオフにすることができます。

本ドキュメントでは、詳細度 (LOD) に関して、インゲームでの使用方法に加えてお使いのパーティクル システムでの作成方法について記述します。

カスケードによる LOD の制御

カスケード ツールバーの以下の部分が LOD 制御に関わります。

カスケードの LOD コントロール

Cascade_Toolbar.png

以下が各コントロールの内訳です。

ボタン 名前 説明
Cascade_Toolbar_RegenLOD_Duplicating.png Regenerate Lowest LOD Duplicating Highest Button [Regenerate Lowest LOD Duplicating Highest] ボタンを押すと、パーティクル システムは既存の LOD のうち低い方のレベルをすべて消去し、最高レベルの完全コピーを最低レベルとして新たに生成します。
Cascade_Toolbar_RegenLOD.png Regen Lowest LOD Button [Regen Lowest LOD] ボタンを押すと、パーティクルシステムは既存する LOD のうち低い方のレベルをすべて消去し、最低レベルを生成し直します。
Cascade_Toolbar_LowestLOD.png Jump to Lowest LOD Button [Jump to Lowest LOD] ボタンを押すと、システムは使用可能な最低静的 LOD に設定されます。
Cascade_Toolbar_LowerLOD.png Jump to Lower LOD Button [Jump Lower to LOD] ボタンを押すと、現在の LOD 設定の次に低い使用可能な静的 LOD に設定されます。
Cascade_Toolbar_AddLOD_Before.png Add LOD before current Button [Add LOD before current] ボタンを押すと、システムは現在ロードされた LOD の前に新しい静的 LOD レベルを挿入します。
Cascade_Toolbar_CurrentLOD.png Current LOD Current LOD Info Box には、パーティクル システム内に存在する LOD 数および現在ロードされている LOD に関する情報があります。
Cascade_Toolbar_AddLOD_After.png Add LOD after current Button [Add LOD before current] ボタンを押すと、システムは現在ロードされた LOD の後ろに新しい静的 LOD レベルを挿入します。
Cascade_Toolbar_HigherLOD.png Jump to Higher LOD Button [Jump to Higher LOD] ボタンを押すと、現在の LOD 設定の次に高い使用可能な静的 LOD に設定されます。
Cascade_Toolbar_HighestLOD.png Jump to Highest LOD Button [Jump to Highest LOD] ボタンを押すと、パーティクルシステムは使用可能な最高レベルの静的 LOD に設定されます。
Cascade_Toolbar_DeleteLOD.png Delete LOD Button [Delete LOD] ボタンを押すと、現在選択されている静的 LOD レベルがパーティクル システムから削除されます。

パーティクル システムにおける LOD レベルの作成

このセクションでは、LOD の完全サポートを備えたパーティクル システム作成を目指して設計されたデザインフローについて説明します。プロセスの概要は以下のように分類できます。

  • 全体的に見て望ましいエフェクトを作成します。これが最高レベルの LOD です。

  • 次に、最低レベルの LOD を作成します。

  • 高品質から低品質への遷移を滑らかにするため、2 つの間に別の LOD レベルを追加します。

最高 LOD レベルでの編集作業中は、モジュールは追加 / 削除しかできません。

この例では、SubUV を 1 つ使います。SubUV の座標 0 が 1 、座標 1 が 2 を示すように設定します。テクスチャを適用すると以下のように見えます。

ImageTest_Tile.png

最高 LOD レベルを設定します。

最高 LOD レベル

HighestLOD.png

デザイナーがパーティクル システムの LOD 作成準備ができたと判断した時点で [Regenerate Lowest LOD (最低 LOD を作成)] を選択してください。これにより、最低 LOD レベルが再生成されます。(同時に、その間に作成されていた静的 LOD レベルが削除されます。)現在のところ、このメニュー項目は最高 LOD レベルの複製を作成し、そのスポーンレートを下げるだけですが、

最低 LOD レベルを選択してから、適切な外観を得るために値の調整を開始します。ここで注意しなければならないのは、デフォルトでは静的 LOD レベル内のすべてのモジュールが 編集不可能である とマークされている点です。これは、モジュール背景のマーブル模様により示されています。

最高 LOD から見たモジュール 最低 LOD から見たモジュール
HighestLevelModules.png LowestLevelModules.png

静的 LOD レベル内のモジュールを編集するには、これを有効にする必要があります。モジュールを 右クリック してコンテキスト メニューから [Duplicate from Higher (より高い LOD から複製)] を選択します。

以下は利用可能なオプションの動作説明です。

オプション 説明
Duplicate from Higher 次に高い LOD から設定をコピーしてモジュールを編集可能にします。
Share from Higher 次に高い LOD と設定を共有してモジュールを編集可能にします。つまり、一方への編集が自動的にもう一方への編集になります。
Duplicate from Highest 最高 LOD から設定をコピーしてモジュールを編集可能にします。

この例では、SubImage Index モジュールを編集するために有効にし、そのインデックスを 3 に設定します。この結果、下の図のようにエミッタには 4 がイエローで表示されます。

最低 LOD レベル

LowestLOD.png

スポーンレートが最高 LOD レベルの 10% に自動的に設定されている点に注意してください。

次のステップでは、[Add LOD before current (現在位置の直前に LOD を追加)] ボタンを押して最高レベルと最低レベルの間に静的 LOD を追加します (まだ最低 LOD のビューを見ているものとします)。SubImage Index モジュールが有効になり、そのインデックスが 1 に設定されます。この結果、下の図のようにエミッタには 2 がブルーで表示されます。

LOD レベル 1

LOD_33.png

最初の静的 LOD と最低 LOD の間にある別の静的 LOD にも同じ手順を行います。[Add LOD after current (現在位置の直後に LOD を追加)] ボタンを押し SubImage index モジュールを有効にしします。SubImage Index が 2 に設定され、下の図のようにエミッタには 3 がグリーンで表示されます。

LOD レベル 2

LOD_66.png

LOD Method と LOD Distance の設定

インゲームでのパーティクル システムの LOD の制御には 2 通りの方法があります。それぞれのパーティクル システムにある LODMethod と呼ばれる列挙型変数がこのモードを決定する方法を提供し、LOD 距離の処理方法を順番に制御します。

次の図はパーティクル システム サンプルのプロパティ ウィンドウを示しています。

LODDistances プロパティ ウィンドウ

LODsettings.png

この例では、エミッターがカメラから[0..1249] ユニットの距離にある間は LOD 0 (最高レベル) が使用されます。LOD 1 は [1250..1874]、LOD2 は [1875..2499]、LOD3 は距離が 2500 ユニットを超えたときです。

LODDistanceCheckTime では、Automatic モードに設定された各 ParticleSystemComponent が、実行時に LOD 判定のための距離チェックを実行する頻度を秒単位で設定します。この例では、レベル内のこのパーティクル システムの各インスタンスは、1/4 秒ごとに距離チェックを実行します。

プロパティ 説明

LOD

LOD Distance Check Time 使用する LOD レベルを決定するためにシステムが距離チェックを実行する間隔 (秒) です(LODMethod が Automatic に設定時のみ使用します)。
LOD Method システムが適切な LOD レベルの選択に利用するメソッドを示す列挙型変数です。利用可能なメソッドがいくつかあります。
メソッド 説明
Automatic LOD 距離に基づいて LOD レベルを設定し、自動的に時間を確認します。
DirectSet システムが使用する LOD レベルをゲームが直接設定します。
Activate Automatic (自動のアクティベート) LOD で定義された距離パラメータに基づき、エフェクトがスポーンされたときに LOD が定義されます。
LODDistances 使用する LOD レベルを決定するための距離の配列です。(LODMethod が Automatic に設定時のみ使用します。)これらの数値は、選択する LOD レベルに推奨する最少距離を示します。例えば 3 つの LOD レベルをもつシステムを想定してみましょう。
LODDistanceIndex 範囲 選択される LOD レベル
0 0.0 0.0 - 2499.9 0 (最高)
1 2500.0 2500.0 - 4999.9 1
2 5000.0 5000.0 - Infinity 2
LODSettings 各 LOD に使用する具体的な設定を決定する ParticleSystem がライトを受け取ると、常に Lit が制御する唯一の設定です。
Tags