XGRIDS文檔
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 简体中文
  • English
  • 繁體中文
  • 日本語
  • Deutsch
  • Español
  • Italiano
  • Français
  • Русский
  • Polski
  • Nederlands
  • 靈視 P 系列

    • 靈視 P1

      • 產品概述
      • 設備基本操作
      • 使用 LCC Scan App
      • 維護及保養
      • 常見問題
  • 靈光 K 系列

    • 靈光 K1

      • 產品概述
      • 設備基本操作
      • 設備激活與連接
      • 設備採集
      • 獲取絕對座標點雲數據
      • 地圖融合
      • 典型場景路線規劃建議
      • 注意事項
      • 常見問題
    • 靈光 K2

      • 產品概述
      • 設備基本操作
      • 設備激活與連接
      • 設備採集
      • 獲取絕對座標點雲數據
      • 地圖融合
      • 典型場景路線規劃建議
      • 注意事項
      • 常見問題
  • 靈光 L 系列

    • 靈光 L2 Pro

      • 產品概述
      • 設備基本操作
      • 設備激活與連接
      • 設備採集
      • 獲取絕對座標點雲數據
      • 實時測量功能
      • 附錄
      • 常見問題
    • 靈光 L3

      • 產品概述
      • 設備基本功能
      • 設備激活與連接
      • 設備採集
      • 獲取絕對座標點雲數據操作流程
      • 附錄
  • Lixel Studio

    • 版權
    • 安裝與激活
    • 界面說明
    • 文件
    • 工程處理
    • 工具
    • 平面繪製
    • 行業應用
    • 設置
    • 設備感知
    • 常見問題 / FAQ
  • Lixel CyberColor

    • LCC Studio

      • 入門
      • 版本與更新
      • 下載及安裝
      • 介面概覽及導覽
      • 重建前準備
      • 模型重建
      • 單模型重建
      • 地圖融合
      • 空地融合
      • 航拍重建
      • 我的模型
      • 其他功能
      • 設定與帳戶
      • 設置與賬號
      • Converter
      • 影片重建
      • 視頻重建
      • 常見問題
    • LCC Scene Editor

      • 版本與更新
      • 賬號與登錄
      • 產品概覽與主頁
      • 編輯器界面介紹
      • 三種場景漫游快捷操作
      • 文件
      • 設置
      • 編輯操作
      • 窗口
      • 全局工具欄
      • 資產與屬性
      • 左側工具欄
      • 視點
      • 跳轉點
      • 天空盒
      • 標注
      • 測量
      • 場景漫游
      • 場景報告
      • 智能戶型圖(3D Layout)
      • 小地圖
      • 預覽模式(Viewer)
      • 幫助
      • 常見問題 / FAQ
      • 出生點
    • LCC Model Editor

      • 版本與更新
      • 新手指引
      • 概覽與界面
      • 文件操作
      • 選擇器
      • 編輯操作
      • 測量
      • 調色
      • 資產管理
      • 設置與幫助
      • 常見問題 / FAQ
    • 採集指南

      • 概述
      • 採集設備總覽
      • 通用採集原則
      • 室內場景採集
      • 室外場景採集
      • 大場景採集(地圖融合)
      • 空地融合採集
      • 物體採集
      • 人物採集
      • 影片重建採集
      • 高清補拍
      • 控制點(靈視 P1)
      • 常見問題與排查
    • LCC Studio Linux

      • 產品概要說明
      • 基本架構說明書
      • 安裝部署說明書
      • 容器啟動參數說明書
      • CodeMeter離線授權部署說明書
      • API指令集說明書
      • 附錄-開發者數據說明書
      • 附錄-錯誤碼列表
      • 單機多卡集群部署QuickStart
    • 使用技巧

      • 多個大型 3DGS 模型融合工作流
    • 歷史版本
  • Plugin & SDK

    • Unreal

      • 介紹
      • 快速入門 - Windows
      • 快速入門 - Linux
      • 快速入門 - Quest3
      • 版本與授權
      • 渲染
      • Tiled 光柵化(實驗性)
      • 畫面調節
      • 法線與光照
      • 場景編輯
      • 性能參數說明
      • 性能優化指南
      • 第三方與引擎插件集成
      • 代理網格
      • 加載動畫
      • 碰撞
      • 尋路系統支持
      • 單層水支持
      • 本地化
      • 常見問題
      • 故障排查
      • 日誌與診斷
      • 聯繫我們
      • 最佳實踐

        • 用 LixelStudio 網格為 3DGS 重打光
        • 逐相機獨立渲染
      • API 參考

        • ALCCActorBase
        • ULCCComponentBase
        • ULCCComponent
        • ULCC2Component
        • SOG / SPZ / PLY Actors
        • ALCC2ProxyMesh
        • ALCCClippingVolume
        • ALCCSectionPlane
        • ALCCLoadVolume
        • ULCCUtilLibrary
        • Enums
        • Structs
      • 更新日誌

        • v3.5.0
        • v3.4.0
        • 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
    • Unity

      • Unity SDK 簡介
      • 技術特性
      • 開發環境要求
      • PC 快速開發入門指南
      • 工程設置優化指南
      • Pico 4 Ultra 開發指南
      • Pico 4 Ultra PC 串流指南
      • Quest 3 開發指南
      • Quest 3 PC 串流指南
      • OpenXR 開發指南
      • Pico 4 Ultra 企業串流指南
      • 術語表
      • 常見問題
      • 聯絡我們
      • 功能開發指南

        • 多場景混合渲染開發指南
        • 陰影接收開發指南
        • 實時光照開發指南
        • 多相機渲染開發指南
        • 高清圖像渲染開發指南
        • LCC 與 LCC2 數據格式兼容開發指南
        • 加載特效開發指南
        • Mip 渲染模式切換開發指南
        • 邊角點吸附開發指南
        • 投影貼花開發指南
        • 視頻流投影開發指南
        • 高亮顯示開發指南
        • 實時裁剪開發指南
        • 調色開發指南
        • 獲取場景 Mesh 數據開發指南
        • 編輯器模式開發指南
        • 渲染性能參數設置指南
        • 應用與數據協同打包開發指南
        • 碰撞系統開發指南
        • macOS 開發權限問題操作指南
        • iOS 設備編譯打包開發指南
      • API 參考

        • LCCManager
        • Renderer
        • 數據類型
      • 更新日誌

        • v2.3.0
        • v2.2.10
        • v2.2.0
        • v2.1.19
        • v2.0.14
    • Web

      • 介紹
      • 渲染性能優化指南
      • 顯卡配置
      • WebGPU 開發指南
      • 常見開發問題
      • API參考

        • LCCObject::checkRenderNextFrame
        • LCCObject::clearRenderNextFrame
        • LCCObject::ecef2Prj
        • LCCObject::getBounds
        • LCCObject::getEnvInstancedMesh
        • LCCObject::getInstancedMesh
        • LCCObject::getLodInfos
        • LCCObject::getOriginPosition
        • LCCObject::getProjectionCoordinateSystemInfos
        • LCCObject::hasCollision
        • LCCObject::hasEnvironment
        • LCCObject::hasShcoef
        • LCCObject::intersectsCapsule
        • LCCObject::intersectsRayExt
        • LCCObject::intersectsRayFromOriginExt
        • LCCObject::intersectsSphere
        • LCCObject::lowerToBottom
        • LCCObject::prj2Ecef
        • LCCObject::raiseToTop
        • LCCObject::raycast
        • LCCObject::raycastFromOrigin
        • LCCObject::setAlpha
        • LCCObject::setClipBox
        • LCCObject::setClipPlane
        • LCCObject::setClipPrism
        • LCCObject::setEndLod
        • LCCObject::setLodAutoLevelUp
        • LCCObject::setMaxDistance
        • LCCObject::setMaxNodeSplats
        • LCCObject::setMaxSplats
        • LCCObject::setMipFilter
        • LCCObject::setOriginPosition
        • LCCObject::setPointsColor
        • LCCObject::setRenderState
        • LCCObject::setRotation
        • LCCObject::setScale
        • LCCObject::setSemantic
        • LCCObject::setSemanticColor
        • LCCObject::setSmooth
        • LCCObject::setStartLod
        • LCCObject::setTranslation
        • LCCObject::setVisible
        • LCCObject::togglePointsDisplayMode
        • LCCObject::useEnvironment
        • LCCObject::useShcoef
        • LCCRender::clearIndexDB
        • LCCRender::dispose
        • LCCRender::load
        • LCCRender::setCamera
        • LCCRender::unload
        • LCCRender::update
      • 更新日誌

        • v0.6.4
        • v0.6.3
        • v0.6.2
        • v0.6.1
        • v0.6.0
        • v0.5.5
        • v0.5.4
        • v0.5.3
        • v0.5.2
        • v0.5.1
        • v0.5.0
        • v0.4.1
        • v0.4.0
        • v0.3.1
        • v0.3.0
        • v0.2.0
  • API

    • 空間結構化建模

      • 接入指南
      • 建模流程
      • 接口說明
      • 臨時上傳憑證
      • 錯誤碼

在 3DGS 場景中行走:碰撞支持

LCC4Unreal 支持動態碰撞數據加載,角色可在 3DGS 世界中自由走動和交互。

前置條件

碰撞依賴數據自帶的碰撞文件,不同格式的要求不同:

格式碰撞數據支持情況
.lcc數據目錄下的 collision.lci,舊版本為 collision.bin支持
.lcc2數據目錄下 data/mesh/ 中的 .ply 文件支持
.sog / .spz / .ply本身不含,專業版可從高斯自動派生支持(專業版)

對於 .lcc 與 .lcc2,插件按 collision.lci → collision.bin → data/mesh/*.ply 的順序檢測數據自帶的碰撞文件,三者都不存在時輸出警告並禁用碰撞。

單文件格式(.sog / .spz / .ply)本身不攜帶碰撞數據。專業版可從高斯自動派生碰撞網格,見單文件模型的碰撞自動生成;免費版需自行搭建碰撞。

加載數據後可用 HaveValidCollisionData() 確認當前數據是否包含可用的碰撞數據。

注:collision.lci 需要 LCC Studio v1.6.1 及以上版本導出,更早版本導出的數據使用 collision.bin。

加載機制

碰撞數據和渲染數據一樣按空間分塊存儲。插件不會一次性加載全部碰撞,而是只加載相機周圍一定範圍內的塊,並隨相機移動動態換入換出。

相機位置變化
      │
      ▼
計算範圍內應加載的碰撞塊集合
      │
      ▼
與上一次的集合比較 ── 相同 ──▶ 跳過,不做任何處理
      │ 不同
      ▼
加載新增的塊 → 交給物理系統烘焙 → 生成碰撞體

幾個實現上的要點:

  • 加載範圍由 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 場景中的動態碰撞效果

驗證

通過視圖模式設置,選擇玩家碰撞或可視性碰撞可以觀察到碰撞是否已開啟

在視圖模式中顯示碰撞體

使用玩家碰撞或可視性碰撞模式驗證碰撞體

相關屬性

屬性說明
bEnableCollision啟用碰撞
CollisionLoadMaxDistance碰撞數據最大加載距離(默認 300 米)
碰撞啟用與最大加載距離屬性

配置碰撞啟用狀態與最大加載距離

單文件模型的碰撞自動生成(專業版功能)

單文件模型(.ply / .spz / .sog)本身不含碰撞數據,插件會從高斯本身派生出碰撞網格,緩存為模型旁的 <名字>.collision.ply,之後通過既有的 PLY 碰撞路徑加載複用。

這是專業版功能,需要註冊 App Key 後才會生成,詳見版本與授權。未授權時不生成碰撞網格,需按不使用自動生成時的手動方案自行搭建。

使用步驟

  1. 在 LCC Actor 面板勾選 bEnableCollision。
  2. 加載單文件模型(.ply / .spz / .sog)。
  3. 首次加載會進入 Generating 狀態現場生成碰撞網格,耗時數秒到數分鐘,取決於數據量;生成完成後轉入 Loaded,並在模型旁寫出 <名字>.collision.ply。
  4. 之後再加載同一模型,若緩存文件存在則直接 Loaded,跳過生成。
單文件模型首次加載時現場生成碰撞網格

勾選啟用碰撞後,單文件模型首次加載時右下角提示正在生成碰撞網格

生成與碰撞的狀態可通過 GetCollisionState() 查詢,或監聽 OnCollisionStateChanged 事件,取值見 ULCCComponentBase - 狀態查詢。

提示:想讓運行時免生成,把生成好的 <名字>.collision.ply 隨模型一起分發或打包即可,運行時檢測到緩存會直接複用。

提示:打包遊戲裏生成碰撞時沒有內置 UI 提示,要告知玩家「正在生成碰撞」,請監聽 OnCollisionStateChanged 的 Generating 狀態自行顯示。

提示:生成失敗會轉入 Failed 狀態,具體原因見 Output Log,關閉再重新開啟碰撞可重試。想重新測試生成過程,先刪除模型旁的 .collision.ply 緩存文件。

不使用自動生成時的手動方案

如果想完全控制碰撞形狀,或數據不適合派生,也可以不開自動生成,自行在場景中搭建碰撞:

  • Blocking Volume:用引擎的阻擋體積拼出地面、牆面等需要阻擋的區域,適合規則形狀,成本最低
  • 近似網格:放置一份與 3DGS 形狀貼合的網格並啟用其碰撞,適合形狀複雜的場景。這份網格可以複用代理網格,把它的碰撞預設改為參與阻擋即可

手動搭建的這兩種方式與 LCC 的碰撞加載機制無關,不受 CollisionLoadMaxDistance 影響,也不會隨相機移動動態換入換出。

裁剪碰撞區域

碰撞可以隨裁剪體與剖切面一起被裁剪,使碰撞範圍與渲染畫面保持一致。裁剪體默認只影響渲染,被裁掉的區域畫面消失但碰撞仍在,角色會撞到看不見的牆;開啟裁切碰撞後,碰撞也會在裁剪區域內同步去除。

使用步驟

  1. 按場景編輯給 LCC Actor 添加並配置裁剪體或剖切面,確認渲染畫面已按預期裁剪。
  2. 在 LCC Actor 面板勾選 啟用碰撞(bEnableCollision)。
  3. 在面板勾選 裁切碰撞,碰撞隨即按裁剪體裁剪,被裁區域不再生成碰撞體。

下圖用「可視性碰撞」視圖模式對比裁切碰撞開關前後的碰撞線框。關閉時碰撞覆蓋完整區域:

未開啟裁切碰撞時碰撞線框完整

未勾選「裁切碰撞」:碰撞線框覆蓋完整區域

開啟後,裁剪體內的碰撞被一併裁掉,與渲染一致:

開啟裁切碰撞後裁剪區域的碰撞被裁掉

勾選「裁切碰撞」:裁剪區域內的碰撞被一併裁掉

提示:裁切碰撞需要先啟用碰撞,對單文件模型自動生成的碰撞同樣有效。

碰撞狀態查詢與事件

可以查詢碰撞當前的狀態,或監聽碰撞狀態變化,用於「碰撞就緒再放角色」「生成中顯示進度」等邏輯:

  • GetCollisionState() 返回當前狀態:NoCollision(關閉或無模型)/ Generating(單文件模型正在生成碰撞網格)/ Loading(相機附近碰撞加載/cook 中)/ Loaded(相機附近碰撞就位)/ Failed(無法提供)。
  • OnCollisionStateChanged 事件在狀態變化時派發,可在 Loaded 後再啟用角色移動,或在 Generating 時顯示提示。

完整接口與使用約定見 ULCCComponentBase - 狀態查詢。

提示:Loaded 指相機附近的碰撞就位,不代表整個模型都有碰撞——碰撞隨相機移動持續流式加載。需要「腳下不穿地」時等 Loaded 即可;需要遠處碰撞請調大加載距離。

注意事項

  • 開啟碰撞後可使用 UE 引擎自身的 LineTrace 進行基於碰撞體的射線檢測,檢測範圍同樣受加載範圍限制
  • 碰撞數據佔用的內存可在 stat xgrids 的 Collision Data Usage 中查看,更新耗時見 Update Collision,參數含義見性能優化參數說明