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

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

    • 靈光 K1

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

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

    • 靈光 L2 Pro

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

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

    • LCC Studio

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

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

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

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

    • Unreal

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

Navigation System Support

適用範圍

本篇針對使用 LCC 碰撞數據構建導航的場景,因此只適用於 ALCCActor 與 ALCC2Actor——只有 .lcc 與 .lcc2 格式自帶碰撞數據,詳見碰撞。

.sog、.spz、.ply 不含碰撞數據,需要自行用 Blocking Volume 或近似網格搭建可行走區域。這類幾何體是標準的 UE 對象,導航配置按 Unreal Engine 官方流程處理即可,不涉及本篇的特殊事項。

概述

Unreal Engine 的 Navigation System 通過 NavMesh 為 AI 角色提供可行走區域。NavMesh 的生成依賴場景中可影響導航且具有有效碰撞的幾何體。

LCC 碰撞是分塊動態加載的:只加載相機周圍一定範圍內的碰撞塊,並隨相機移動換入換出(機制詳見碰撞:加載機制)。這一點直接決定了導航的配置策略:

  • 碰撞塊在運行期換入換出會觸發 NavMesh 重建,造成卡頓
  • 因此應讓目標區域的碰撞一次性全部加載完成,再用 Static 模式構建導航

對於 LCC 場景,Runtime Generation 推薦使用 Static。Dynamic 會持續響應碰撞變化並重建 NavMesh,配合分塊加載的碰撞會頻繁觸發重建,在大場景中造成明顯的 CPU 開銷與卡頓。

前提條件

條件說明
數據包含碰撞文件.lcc 需要 collision.lci(舊版本為 collision.bin);.lcc2 需要 data/mesh/ 下的 .ply 文件。詳見碰撞:前置條件
碰撞已啟用Actor 的 bEnableCollision = true
碰撞數據已加載在視圖模式中選擇玩家碰撞或可視性碰撞,可以看到已加載的碰撞體
Actor 可影響導航Actor 的 CanEverAffectNavigation = true
碰撞加載範圍足夠Max Load Collision Distance(m) 覆蓋需要構建導航的目標區域,默認 300 米
NavMesh 構建邊界足夠場景中已放置 NavMeshBoundsVolume,並覆蓋需要 AI 活動的目標區域

碰撞加載距離和 NavMeshBoundsVolume 控制不同範圍:前者決定哪些區域有碰撞數據,後者決定引擎在哪些邊界內構建 NavMesh。要讓目標區域生成可用 NavMesh,二者都必須覆蓋該區域。

使用步驟

1. 啟用並檢查 LCC 碰撞

選中 ALCCActor 或 ALCC2Actor,在 Details 面板中啟用 Enable Collision(bEnableCollision),或通過代碼啟用:

LCCComponent->SetLCCCollisionEnable(true);

同時確認 Actor 的 CanEverAffectNavigation = true,使其碰撞能夠參與導航構建。

加載 LCC 數據後,在視圖模式中選擇玩家碰撞或可視性碰撞,檢查目標區域內是否已經出現碰撞體。碰撞使用異步物理烘焙,3DGS 畫面開始渲染後仍可能需要等待幾秒才能就緒。

在 Unreal Engine 視圖模式中檢查 LCC 碰撞體是否已加載

使用玩家碰撞或可視性碰撞模式,確認目標導航區域內的 LCC 碰撞體已加載

2. 配置碰撞加載範圍

LCC 碰撞僅在 Max Load Collision Distance(m) 指定的範圍內加載,默認 300 米。

配合導航時應把這個值調大到覆蓋整個 AI 活動區域,讓碰撞一次性全部加載完成。否則運行期碰撞塊隨相機移動不斷換入換出,會持續觸發 NavMesh 重建,造成明顯卡頓。範圍足夠大時,運行期不再有碰撞變化,導航也就不會重建。

代價是啟動時加載時間變長、內存佔用增加。可通過 stat xgrids 的 Collision Data Usage 確認全量加載後的內存是否可接受,詳見碰撞:一次性加載全部碰撞。

不要把 Runtime Generation 改為 Dynamic 來解決碰撞距離不足。 Dynamic 不會擴大碰撞加載範圍,超出該距離的區域仍然沒有碰撞可用於導航構建。

3. 放置並調整 NavMeshBoundsVolume

在場景中放置 NavMeshBoundsVolume,移動並縮放它,使其覆蓋希望 AI 活動的完整區域。

在 LCC 場景中放置並縮放 NavMeshBoundsVolume

放置並縮放 NavMeshBoundsVolume,使導航構建邊界覆蓋完整的 AI 活動區域

再次確認兩個範圍同時滿足要求:

  • Max Load Collision Distance(m):決定目標區域內是否存在已加載的 LCC 碰撞;
  • NavMeshBoundsVolume:決定 Unreal Engine 在哪些邊界內構建 NavMesh。

僅增大其中一個範圍不足以解決另一個範圍未覆蓋的問題。

4. 配置 Navigation System

設置推薦值說明
Runtime GenerationStatic首選設置。導航只在編輯器構建時生成,避免運行時持續重建造成性能開銷
Cell Size默認值值越小,NavMesh 越精確,但構建時間、內存和運行開銷越大

何時才使用 Dynamic

只有確實需要 NavMesh 在運行期隨幾何體變化自動重建時才考慮 Dynamic,例如運行時會改變可行走區域的交互場景。

配合 LCC 碰撞使用 Dynamic 尤其要謹慎:碰撞本身就是分塊動態加載的,每次碰撞塊換入換出都會被判定為幾何體變化並觸發導航重建,在大場景中可能持續產生 CPU 開銷與卡頓。確實需要 Dynamic 時,應同時把碰撞加載範圍調大到覆蓋整個活動區域,避免運行期出現碰撞變化。

不要僅為了增加碰撞距離或導航覆蓋範圍而啟用 Dynamic。

5. 等待碰撞就緒並構建 Static NavMesh

使用推薦的 Static 模式時,按以下順序操作:

  1. 加載 LCC 數據,確認 3DGS 畫面已經顯示;
  2. 等待異步碰撞烘焙完成;
  3. 使用玩家碰撞或可視性碰撞模式,確認目標區域內的碰撞已經加載;
  4. 確認 Collision Load Max Distance 和 NavMeshBoundsVolume 都覆蓋目標區域;
  5. 在 Unreal Engine 主菜單中執行 Build → Build Paths;
  6. 等待導航構建完成;
  7. 保存關卡和導航數據。

驗證與排查

按 P 鍵在視口中顯示 NavMesh:

  • 綠色區域:已生成可行走 NavMesh;
  • 無綠色區域:該位置未生成 NavMesh,需要按下方順序排查。
按 P 鍵顯示 LCC 場景中的綠色 NavMesh 可行走區域

按 P 鍵驗證 NavMesh;綠色覆蓋表示對應區域已經生成可行走導航數據

如果目標位置沒有綠色 NavMesh,請依次檢查:

  1. 數據是否包含碰撞:確認使用的是 .lcc 或 .lcc2,且數據目錄下有對應的碰撞文件;單文件格式不含碰撞,無法用本篇流程;
  2. 碰撞是否啟用並已加載:確認 bEnableCollision = true、CanEverAffectNavigation = true,並在玩家碰撞或可視性碰撞模式下看到目標位置的碰撞體;
  3. 碰撞加載範圍是否足夠:如果目標位置超出加載範圍,增大 Max Load Collision Distance(m) 並等待碰撞重新就緒;
  4. NavMeshBoundsVolume 是否覆蓋目標位置:移動或縮放 Volume,使導航構建邊界完整覆蓋目標區域;
  5. Static NavMesh 是否重新構建:碰撞和範圍確認無誤後,執行 Build → Build Paths,等待完成並保存關卡和導航數據;
  6. 再次按 P 檢查綠色覆蓋。

以上均正確但仍無法生成時,可進一步檢查 Output Log 中的 Navigation、Recast 和碰撞相關錯誤,並確認當前關卡已經保存。

上一頁
碰撞
下一頁
單層水支持