XGRIDSドキュメント
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • PortalCam

    • 製品概要
    • デバイスの基本操作
    • LCC Scan App の使用
    • メンテナンスとお手入れ
    • FAQ
  • Lixel K シリーズ

    • Lixel K1

      • 製品概要
      • デバイスの基本操作
      • デバイスのアクティベーションと接続
      • デバイス収集
      • 絶対座標のポイントクラウドデータを取得する
      • マップフュージョン
      • 典型的なシーンにおける経路計画の推奨
      • 注意事項
      • FAQ
    • Lixel K2

      • 製品概要
      • デバイスの基本操作
      • デバイスのアクティベーションと接続
      • デバイス収集
      • 絶対座標のポイントクラウドデータを取得
      • マップフュージョン
      • 典型的なシーンにおける経路計画の推奨
      • 注意事項
      • FAQ
  • Lixel L シリーズ

    • Lixel L2 Pro

      • 製品概要
      • デバイスの基本操作
      • デバイスのアクティベーションと接続
      • デバイス収集
      • 絶対座標のポイントクラウドデータを取得する
      • 実時計測機能
      • 付録
      • FAQ
  • Lixel Studio

    • バージョンと著作権
    • インストールとアクティベーション
    • ソフトウェアインターフェース
    • ファイル操作
    • プロジェクト処理
    • ツール
    • 2D 作図
    • 業界応用
    • 設定
    • デバイス接続
  • Lixel CyberColor

    • LCC Studio

      • はじめに
      • バージョンと更新
      • ダウンロードとインストール
      • インターフェース概要とナビゲーション
      • 再構築前の準備
      • モデル再構築
      • 単一モデル再構築
      • 地図合成
      • 空地融合
      • 航空撮影再構築
      • マイモデル
      • その他の機能
      • 設定とアカウント
      • Converter
      • 動画再構築
      • よくある質問 / FAQ
    • LCC Scene Editor

      • バージョンと更新
      • アカウントとサインイン
      • 製品概要とホーム画面
      • エディター画面
      • ナビゲーションモード
      • ファイル
      • 設定
      • 編集
      • ウィンドウ
      • グローバルツールバー
      • アセットとプロパティ
      • 左ツールバー
      • ビューポイント
      • ポータル
      • スカイボックス
      • アノテーション
      • 測定
      • フライスルー
      • シーンレポート
      • 3D レイアウト
      • ミニマップ
      • プレビューモード(Viewer)
      • ヘルプ
      • よくある質問(FAQ)
      • スポーンポイント
    • LCC Model Editor

      • バージョンと更新
      • ユーザーガイド
      • 概要とインターフェース
      • ファイル操作
      • セレクター
      • モデルの編集
      • 測定
      • カラーグレーディング
      • アセット管理
      • 設定とヘルプ
      • よくある質問
    • Capture Guide

      • 概要
      • 撮影デバイス概要
      • 一般的な撮影の原則
      • 屋内シーンの撮影
      • 屋外シーンの撮影
      • 大規模撮影(マップフュージョン)
      • 空地マップフュージョン撮影
      • オブジェクト撮影
      • 人物撮影
      • ビデオ再構築撮影
      • HD Enhancement
      • 制御点(Lixel P1)
      • FAQ とトラブルシューティング
    • バージョン履歴
  • プラグインと SDK

    • Unreal

      • 概要
      • クイックスタート - Windows
      • クイックスタート - Linux
      • クイックスタート - Quest3
      • エディションとライセンス
      • レンダリング
      • 画面調節
      • 法線とライティング
      • シーン編集
      • パフォーマンスパラメーター
      • パフォーマンス最適化ガイド
      • サードパーティおよびエンジンプラグインとの連携
      • プロキシメッシュ
      • 読み込みアニメーション
      • コリジョン
      • ナビゲーションシステム対応
      • Single layer water 対応
      • ローカライズ
      • よくある質問
      • トラブルシューティング
      • ログと診断
      • お問い合わせ
      • API リファレンス

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • SOG / SPZ / PLY Actors
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ULCCUtilLibrary
        • Enums
        • Structs
      • 更新履歴

        • v3.3.1
        • v3.0.0
        • v2.2.1
        • v1.0.0
        • v0.9.0
        • v0.8.0
        • v0.7.1
        • v0.6.1
        • v0.5.2
        • v0.4.1
        • v0.4.0
        • v0.3.0
        • v0.0.5
        • v0.0.4
        • v0.0.3
        • v0.0.2
        • v0.0.1

3DGS シーンを歩く:コリジョン対応

LCC4Unreal はコリジョンデータの動的読み込みに対応しており、キャラクターが 3DGS の世界を自由に歩き回ってインタラクションできる。

前提条件

コリジョンはデータに付属するコリジョンファイルに依存し、形式によって要件が異なる。

形式コリジョンデータ対応状況
.lccデータディレクトリ内の collision.lci。旧バージョンは collision.bin対応
.lcc2データディレクトリの data/mesh/ 内の .ply ファイル対応
.sog / .spz / .plyなし非対応

プラグインは collision.lci → collision.bin → data/mesh/*.ply の順で検出し、3 つとも存在しない場合は警告を出力してコリジョンを無効にする。データを読み込んだ後、HaveValidCollisionData() で現在のデータに使用可能なコリジョンデータが含まれているかを確認できる。

注:collision.lci は LCC Studio v1.6.1 以上のバージョンでエクスポートする必要がある。それより古いバージョンでエクスポートしたデータは collision.bin を使う。

単一ファイル形式の代替手段

.sog、.spz、.ply は単一ファイル形式でコリジョンデータを持たないため、プラグインはコリジョンを生成できない。コリジョンが必要な場合はシーン内に自分で用意する。

  • Blocking Volume:エンジンのブロッキングボリュームで地面や壁など遮る必要のある領域を組み立てる。規則的な形状に適し、コストが最も低い
  • 近似メッシュ:3DGS の形状に合ったメッシュを配置してそのコリジョンを有効にする。形状が複雑なシーンに適する。このメッシュは プロキシメッシュ を再利用でき、コリジョンプリセットを遮りに参加する設定に変更すればよい

どちらの方法も LCC のコリジョン読み込みの仕組みとは無関係で、CollisionLoadMaxDistance の影響を受けず、カメラの移動に応じて動的に入れ替わることもない。

読み込みの仕組み

コリジョンデータはレンダリングデータと同様に空間ごとのブロックに分けて格納されている。プラグインはコリジョンを一度にすべて読み込むのではなく、カメラ周辺の一定範囲内のブロックだけを読み込み、カメラの移動に応じて動的に入れ替える。

カメラ位置が変化する
      │
      ▼
範囲内で読み込むべきコリジョンブロックの集合を計算する
      │
      ▼
前回の集合と比較する ── 同じ ──▶ スキップして何も処理しない
      │ 異なる
      ▼
新しいブロックを読み込む → 物理システムにベイクさせる → コリジョンボディを生成する

実装上のポイントをいくつか挙げる。

  • 読み込み範囲は Max Load Collision Distance(m) で制御し、この距離を超えた領域にはコリジョンがない
  • 初回の読み込みは同期的で、コリジョンが準備できていない状態でキャラクターが地面をすり抜けて落下するのを避ける。それ以降の更新はすべて非同期で、メインスレッドをブロックしない
  • 頻度のスロットリングがあるため、カメラが連続的に移動してもフレームごとにコリジョンを再構築することはない
  • 可視ブロックの集合が変化していない場合は直接スキップするので、その場でわずかに動いても再構築はトリガーされない
  • メインカメラのみで計算するため、SceneCapture はコリジョンの読み込みに参加しない

利点

  • メモリ使用量は読み込み範囲だけに関係し、データの総量とは無関係なので、大規模シーンでもコリジョンに対応できる
  • 物理システムが処理するコリジョンボディの数が常に制御可能で、シーン規模が大きくなっても物理計算が遅くならない

代償と回避方法

問題原因回避方法
ゲーム開始の瞬間にキャラクターが地面をすり抜けて落下するコリジョンの構築が完了していないPlayerStart を少し高い位置に上げる、またはコリジョンが準備できてからキャラクターの移動を有効にする
キャラクターが遠くから 3DGS シーンの範囲に入るとカクつくスポーン地点がコリジョン読み込み範囲外にあり、初回進入時に同期読み込みが発生するスポーン地点をコリジョン読み込み範囲内に配置する、またはコリジョンを一度にすべて読み込む
遠くにコリジョンがなく、レイキャストが当たらない読み込み範囲を超えた領域はコリジョンボディを生成しないMax Load Collision Distance(m) を大きくする、またはコリジョンに依存しない判定方法に変える
テレポートや高速移動の直後、短時間コリジョンがない新しい領域のコリジョンブロックがまだ読み込み中であるコリジョンを一度にすべて読み込む
移動中にカクつきが出て Update Collision の処理時間が長いコリジョンブロックの入れ替えとベイクが頻繁に起きている読み込み範囲を縮める、またはコリジョンが本当に必要かを確認する
ナビゲーションと併用するとナビゲーションメッシュが繰り返し再構築されるコリジョンの変化が NavMesh の更新をトリガーしている読み込み範囲を大きくして対象領域を一度に読み込み終え、Static のベイクを使う。詳しくは ナビゲーションシステム対応 を参照する

コリジョンを一度にすべて読み込む

上記の代償のほとんどは実行時の動的な入れ替えに由来する。シーン規模が限られていてメモリに余裕がある場合は、Max Load Collision Distance(m) をシーン全体を覆えるほど大きくして、データ読み込み時にコリジョンを一度にすべて構築させることができる。

こうすると実行時にコリジョンブロックの入れ替えが起きなくなり、前の表にあった地面のすり抜け、テレポート後のコリジョンなし、移動中のカクつき、ナビゲーションの繰り返し再構築はいずれも発生しない。ナビゲーションシステムと併用する場合は特に推奨する。

引き換えに起動時の読み込み時間が長くなり、メモリ使用量はシーン全体のコリジョンのサイズで固定される。実行可能かの判断は、stat xgrids の Collision Data Usage を見て、全量読み込み後のメモリ使用量が許容範囲内かを確認する。

有効にする

LCCComponent->SetLCCCollisionEnable(true);

または Details パネルで bEnableCollision をチェックする。

Details パネルで LCC のコリジョンを有効にする

Details パネルで LCC のコリジョンを有効にする

LCC の動的コリジョンの効果のデモ

LCC シーン内でのキャラクターの動的コリジョンの効果

検証

ビューモードの設定で Player Collision または Visibility Collision を選ぶと、コリジョンが有効になっているかを観察できる。

ビューモードでコリジョンボディを表示する

Player Collision または Visibility Collision モードでコリジョンボディを検証する

関連するプロパティ

プロパティ説明
bEnableCollisionコリジョンを有効にする
CollisionLoadMaxDistanceコリジョンデータの最大読み込み距離(既定値 300 メートル)
コリジョンの有効化と最大読み込み距離のプロパティ

コリジョンの有効状態と最大読み込み距離を設定する

注意事項

  • コリジョンを有効にすると、UE エンジン自身の LineTrace でコリジョンボディに基づいたレイキャストを行える。検出範囲も同様に読み込み範囲の制限を受ける
  • コリジョンデータが使用するメモリは stat xgrids の Collision Data Usage で確認でき、更新の処理時間は Update Collision で見られる。パラメーターの意味は パフォーマンスパラメーター を参照する
前へ
読み込みアニメーション
次へ
ナビゲーションシステム対応