メインコンテンツまでスキップ

Splat の LOD(Level of Detail)作成方法

このガイドでは、Arrival.Space のワンクリック機能を使って Splat の LOD を作成する方法を説明します。

より細かく制御したい場合

個別の .ply ファイルを扱う場合や、LOD 設定をより詳細に調整したい場合は、splat-transform CLI ツールを使う Manual LOD Creation Guide (CLI) も参照してください。

LCC2

この最適化は LCC2 には不要です。LCC2 はすでに最適化されています。ただし、Streaming Settings で説明している設定は LCC2 にも適用できます。

TL;DR​

  1. Splat ファイル(.ply、.compressed.ply、.sog、または .lcc の zip)をアップロード
  2. Content List Detail View で Generate LOD をクリック
  3. LOD 設定(presets、distances/multipliers)を調整
  4. Collision を生成

1. Splat ファイルをアップロード​

LOD を生成する前に、Splat アセットを Arrival.Space にアップロードする必要があります。対応フォーマット:

FormatUpload 方法
.ply直接アップロード
.compressed.ply直接アップロード
.sog直接アップロード
.lcc / .zip付随ファイル(.lci、.bin ファイル)と一緒に zip でアップロードする必要があります。詳細は Upload LCC to Arrival.Space を参照してください。
meta.json / .zipCLI で LOD を手動作成した場合(Manual LOD Creation Guide を参照)、lod-meta.json と全 Chunk ファイルを含む LOD 出力フォルダを zip としてアップロードしてください。
Sample Data

有効なサンプルは XGRIDS Sample Data を確認してください。すべてのサンプルはアップロード可能な zip 形式で提供されています。


2. LOD を生成​

アセットをアップロードし、Collision を作成すると、アセット情報の下に Optimize for Streaming ボタンが表示されます 1。このボタンをクリックするとサブメニュー 2 が開き、次の設定を構成できます:

  • Detail Levels:
    生成する Level of Detail の数を定義します。LCC Splats の場合は自動で設定されます。
  • Gaussians per File:
    各 Chunk に含める Gaussians 数の目安を指定します。実際の数はわずかに前後する場合があります。
  • Chunk Extent:
    Chunk の空間サイズ(メートル)を指定します。スキャンした環境のスケールに合わせて調整してください。
  • LOD Engine:
    SplatLOD と NanoGS から選択します。
    • SplatLOD は均一な LOD 方式で、Splats を複数レベルに均等分配します。高速な C++ パイプラインにより、大規模シーン や 透明度が高い データセットに適しており、効率的なストリーミングと安定した描画性能を実現します。NanoGS より 高速 です。
    • NanoGS は適応型 LOD 生成を行い、低い LOD でも視覚ディテールを維持しやすくします。近距離での画質が高く、小規模シーン や 透明性の影響が小さい ケースに向いています。高い視覚品質が期待できますが、生成は通常 SplatLOD より重くなります。

設定後、Start Generation をクリックして LOD を生成します。Splat のサイズにより時間がかかります。たとえば 100 万 Gaussians 前後の小規模 Splat では、通常 10-15 分 ほどかかります。

処理中に Space を離れても問題ありません。生成はバックグラウンドで継続されます。

2.1 LOD 生成の進捗​

生成開始後は アイコンでキャンセルできます。また、ここで LOD 生成の進捗を確認できます 3。


3. Streaming Settings​

LOD の生成が完了すると、以前のアセットを置き換えます。ファイルが .lod になり、
Generate LOD ボタンが Streaming Settings に変われば完了です 4。

このボタンをクリックすると、次の情報と設定を含むサブメニューが開きます:

5 LOD Settings (X LOD Levels):​

生成された LOD レベル数(この例では 5)、表示中 Splats 数、video memory 使用量を表示します。

  • Default Desktop Preset: Desktop で Space を表示する訪問者に適用される preset。
  • Default Mobile Preset: Mobile で Space を表示する訪問者に適用される preset。Meta Quest 3 や Apple Vision Pro preset が無効な場合、VR でもこの preset が使用されます。
  • Enable Preset Selection UI: 訪問者向けの preset 選択 UI の表示/非表示を切り替えます。
  • Colorize LOD Levels: LOD レベルを色分け表示します。距離遷移や範囲調整の確認に有効です。

6 Quality Presets​

Presets を使うと、デバイスごとに LOD を最適化できます。Mobile では iOS の安定動作のため、visible Splats を 3M 未満、used memory を 400mb 未満に保つことが推奨です。

Edit Preset​

編集する preset を選択します。利用可能なのは Desktop Max、Desktop、Mobile Max、Mobile、および有効化時の Meta Quest 3、Apple Vision Pro です。

Minimum LOD Level​

preset の開始レベルを定義します。Level 0 が最も詳細です。例では 0 から 4 の範囲になります。

LOD Base Distances & LOD Distance Multiplier​

LOD Base Distance と Distance Multiplier は連動します。Base Distance は 1 レベル分の距離(m)を定義し、Distance Multiplier で次のレベル距離を算出します。 例:

  • Base Distance: 5m
  • Distance Multiplier: 2

この場合:

  • Level 0(最詳細): 0-5m
  • Level 1: 5m-10m
  • Level 2: 10m-20m
  • Level 3: 20m-40m
  • Level 4: 40m-無限遠

Splat Budget​

ここで入力する値はハード上限です。Splats 数を直接制限し、必要なら削減します。

Cull Distance​

小規模 Spaces や、全体を一度に見渡せない Spaces で特に有効です。指定距離を超えると Splats は表示されません。たとえば 5 の場合、5m より奥は表示されません。

Behind Penalty​

カメラ背面の Chunks に追加距離ペナルティを適用します。これにより前方 Chunks より早くアンロードされ、memory 使用量の削減と performance 改善に役立ちます。値を上げるほど背面領域のアンロードが強くなります。

3.1 Preset Selection UI を使う​

この設定を有効にして UI を閉じると、Enable Preset Selection UI が Owner Badge の下に表示されます 7。

3.2 VR Presets​

VR headsets を使うには、このオプションを明示的に有効化する必要があります。無効時は Mobile preset(Mobile か Mobile Max)が使われます。

Enabled を ON にすると VR 対応が有効化され、Minimum LOD Level などの項目が編集可能になります。その後、必要に応じて値を調整してください。


4. Collision を生成​

LOD 設定を調整したら、Splat 用の Collision mesh を生成します。これにより訪問者は 3D 環境上を歩行・インタラクションできます。

.lcc、.ply、.compressed.ply、.sog としてアップロードした Splats では、Generate Collision ボタンを直接使用できます。手順は Collision Generation Guide を参照してください。

手動作成した LOD ファイル

CLI で手動作成した LOD をアップロードした場合、LOD 構造から直接 Collision を生成することはできません。

Workaround:

  1. Splat の低解像度版(約 1-2 million Gaussians)を生成します。
  2. その low-res Splat を別 Entity としてアップロードします(可能なら別 Space)。
  3. その Entity で Generate Collision を実行し、Collision mesh を生成します。
  4. 生成された Collision ファイルを取得します。
  5. その Collision ファイルを LOD Entity にアップロードします。

参考リンク​