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.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

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

        • LCCRender::clearIndexDB
        • LCCRender::dispose
        • LCCRender::load
        • LCCRender::setCamera
        • LCCRender::unload
        • LCCRender::update
        • 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::setEndLod
        • LCCObject::setLodAutoLevelUp
        • LCCObject::setMaxDistance
        • LCCObject::setMaxNodeSplats
        • LCCObject::setMaxSplats
        • 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
      • 更新日誌

        • 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

Renderer:渲染實例

LCC 渲染實例,負責單個 3DGS 場景的數據加載與渲染控制。透過 LCCManager.GetRender() 創建,不可直接實例化。

命名空間LCCCore

屬性

屬性類型訪問說明
TransformTransform只讀渲染實例掛載的 Transform 組件
IsEnablebool只讀渲染實例是否處於激活狀態,默認 true
IsRenderAllbool只讀是否正在全量渲染 LOD0 數據(相對於流式 / LOD 遍歷模式),默認 false

方法

方法按用途分為以下兩組:

  • 數據加載與生命週期
  • 運行時控制與查詢

數據加載與生命週期

Load

public void Load(string _filePath, Action<float> _onProgress, Action _onComplete, Action<string> _onError = null)

加載 3DGS 數據文件。支持 .lcc2(本地文件或 HTTP 遠程)以及原生格式 .ply / .sog / .spz / .splat / .ksplat(僅本地文件)。

參數類型說明
_filePathstring數據文件路徑(本地路徑或 HTTP URL)
_onProgressAction<float>加載進度回調,可為 null
_onCompleteAction加載完成回調,可為 null
_onErrorAction<string>加載失敗回調(可選),參數為錯誤描述

說明:

  • 完成回調 _onComplete 在數據真正落 GPU 後觸發。
  • 陰影接收、特效觸發等操作需在 _onComplete 回調中調用。
  • 原生格式固定走 SingleRender 全量加載路徑(無 LOD 分塊),進度經 _onProgress 上報、失敗經 _onError 回調。
  • MultiRender 模式不允許 HTTP 數據源,也不允許原生格式。
  • HTTP 僅支持 .lcc2;原生格式僅本地路徑、僅 SingleRender 模式。
  • 必須先完成 SetPlatformType() / SwitchRenderPass() / SetMainCamera() 等前置配置。
  • 重新 Load 前必須先調用 Unload() 或 Dispose();加載進行中再次 Load 會被拒絕並觸發 _onError。

調用示例:

renderer.Load("D:/data/scene.lcc2",
    p => Debug.Log($"Loading {p:P0}"),
    () => {
        Debug.Log("Load complete");
        lccManager.SetShadowReceive(true);
    });

Unload

public void Unload()

釋放當前已加載數據,回到「已創建未加載」狀態,保留實例的管理器註冊。可反覆 Load → Unload → Load 循環複用同一個 Renderer 實例。

說明:

  • 與 Dispose() 的差異:不移除管理器註冊,實例可繼續複用。
  • Unload() 後 IsEnable 為 false,再次 Load() 會重置所有數據狀態。
  • 僅在數據已加載完成時執行;未加載或已 Dispose() 時直接返回。

調用示例:

renderer.Unload();
renderer.Load(newFilePath, null, () => Debug.Log("Reloaded"));

Dispose

public void Dispose()

銷毀渲染實例,釋放所有 GPU 資源和內存。銷毀後實例不可再使用,所有公共方法自動失效。

說明:

  • 調用後自動通知 LCCManager 移除引用。

調用示例:

renderer.Dispose();
renderer = null;

運行時控制與查詢

SetEnable

public void SetEnable(bool _enable)

設置渲染實例的激活狀態。禁用後不參與渲染和 LOD 選擇。

參數類型說明
_enablebool是否激活

說明:

  • 不釋放資源,可隨時重新激活。

調用示例:

renderer.SetEnable(false); // 隱藏
renderer.SetEnable(true);  // 顯示

SetAlpha

public void SetAlpha(float alpha)

設置當前 Renderer 獨立的透明度。區別於 LCCManager.SetAlpha() 的進程級全局 alpha,本接口只影響當前 Renderer。最終 alpha = splat 覆蓋率 × LCCManager 全局 alpha × 本 Renderer alpha。

參數類型說明
alphafloat當前 Renderer 獨立透明度,範圍 [0, 1],超出自動鉗制

說明:

  • 僅在 MultiRender / RenderCore 路徑(PC / Mac)生效;該路徑下每個 splat 攜帶 renderID,shader 按 renderID 索引 per-Renderer alpha 數組。
  • FullRender / Mobile 路徑無 renderID,本接口對其為 no-op(值已緩存,後續切入 RenderCore 路徑會自動應用)。

調用示例:

renderer.SetAlpha(0.5f);

SetRenderAll

public void SetRenderAll(bool _renderAll)

設置是否使用全量渲染模式(全量渲染 LOD0 數據)。設置後在下次 Load() 調用時生效,不影響當前已加載的數據集。

參數類型說明
_renderAllbool是否全量渲染

說明:

  • 僅 PC / Mac 平台支持,移動端 / VR 調用無效。
  • 配合 IsRenderAll 屬性查詢當前狀態。

調用示例:

renderer.SetRenderAll(true);
renderer.Load(filePath, null, () => Debug.Log("Full loaded"));

SetColliderEnable

// 返回值:bool,true=設置成功,false=數據不含碰撞體或實例未激活
public bool SetColliderEnable(bool _enable)

開關碰撞體功能。啟用後 IntersectsSphere() / IntersectsCapsule() 和 RaycastMesh() 可用。

參數類型說明
_enablebool是否啟用碰撞體

說明:

  • 數據必須包含 Collider 節點,否則返回 false。
  • 需要 Renderer 處於激活狀態。

調用示例:

bool ok = renderer.SetColliderEnable(true);
if (!ok) Debug.LogWarning("數據不含碰撞體");

SetEnvironment

public void SetEnvironment(bool _env)

開關環境數據渲染。環境數據為低精度背景點雲,用於填充遠景。

參數類型說明
_envbool是否渲染環境數據

說明:

  • 數據需包含環境節點。
  • 環境數據獨立於主數據的 LOD 系統。

調用示例:

renderer.SetEnvironment(true);

GetBounds

public void GetBounds(out Vector3 max, out Vector3 min)

獲取渲染數據的軸對齊包圍盒(世界座標)。

參數類型說明
maxout Vector3包圍盒最大點(世界座標)
minout Vector3包圍盒最小點(世界座標)

說明:

  • 數據未加載完成時返回 Vector3.zero。
  • 可用於相機定位和視角計算。

調用示例:

renderer.GetBounds(out Vector3 max, out Vector3 min);
Vector3 center = (max + min) / 2f;
Vector3 size = max - min;

GetSourceType

// 返回值:SourceType
public SourceType GetSourceType()

獲取已加載數據的來源類型,取值見 SourceType。

說明:

  • 數據未加載時返回 SourceType.None。

GetDataType

// 返回值:DataType
public DataType GetDataType()

獲取已加載數據的格式類型,取值見 DataType。

說明:

  • 數據未加載時返回 DataType.None。

GetMeta(從文件路徑)

// 返回值:bool,true=讀取成功
public bool GetMeta(string _filePath, out SplatMeta _metaData)

從指定文件路徑讀取 3DGS 數據的元信息,無需完整加載數據。

參數類型說明
_filePathstring數據文件路徑
_metaDataout SplatMeta輸出的元數據

說明:

  • 支持本地路徑和 HTTP URL。
  • 僅讀取文件頭部元信息,不加載點雲數據。
  • 路徑為空或文件不存在時返回 false。

調用示例:

if (renderer.GetMeta(filePath, out SplatMeta meta))
{
    Debug.Log(meta.source);
    Debug.Log(meta.dataType);
}

GetMeta(從已加載數據)

// 返回值:bool,true=讀取成功
public bool GetMeta(out SplatMeta _metaData)

獲取當前已加載數據的元信息。若數據尚未加載完成,則嘗試從文件路徑讀取。

參數類型說明
_metaDataout SplatMeta輸出的元數據

調用示例:

if (renderer.GetMeta(out SplatMeta meta))
{
    Debug.Log(meta.source);
}

GetMeshBlockInfos

// 返回值:List<LCCMeshBlockInfo>,碰撞 Mesh 分塊元信息;無 Mesh 或不可用時返回 null
public List<LCCMeshBlockInfo> GetMeshBlockInfos()

返回全部碰撞 Mesh 分塊的元信息(id、世界 / 本地包圍盒、頂點數、面數)。零 I/O、零解析,只讀內存中已有的 meta。字段見 LCCMeshBlockInfo。

說明:

  • 僅 PC / Mac 平台 + 本地數據源;只能主線程調用。
  • 典型用法:先用它拿各塊世界 BBox,挑出需要的 id,再調 GetMeshes(ids) 只讀那幾塊。
  • 原生格式(PLY / SOG / SPZ / splat / ksplat)無 Mesh,返回 null(屬正常情況,不打日誌)。

調用示例:

var infos = renderer.GetMeshBlockInfos();
foreach (var info in infos)
{
    Debug.Log($"{info.id}: verts={info.vertexCount}, faces={info.faceCount}");
}

GetMeshes

// 返回值:List<LCCMeshBlock>,全部碰撞 Mesh 幾何數據;不可用時返回 null
public List<LCCMeshBlock> GetMeshes()

同步返回全部碰撞 Mesh 分塊的幾何數據(頂點 + 三角形索引,本地座標系)。這是重操作(同步讀盤 + 解析 + 分配),請調用一次並自行緩存,切勿每幀調用。字段見 LCCMeshBlock。

說明:

  • 僅 PC / Mac 平台 + 本地數據源;只能主線程調用。
  • 大場景請改用 GetMeshBlockInfos() 挑 id + GetMeshes(ids),避免一次性分配海量託管內存。
  • 單塊頂點數可超 65535,自建 Mesh 前必須設 mesh.indexFormat = IndexFormat.UInt32。

調用示例:

var meshes = renderer.GetMeshes();
foreach (var block in meshes)
{
    // block.vertices / block.triangles 在物體本地座標系
}

GetMeshes(按 id)

// 返回值:List<LCCMeshBlock>,指定 id 的碰撞 Mesh 幾何數據;無命中時返回 null
public List<LCCMeshBlock> GetMeshes(IEnumerable<string> _ids)

同步返回指定 id 的碰撞 Mesh 分塊幾何數據(本地座標系)。id 由 GetMeshBlockInfos() 提供。

參數類型說明
_idsIEnumerable<string>目標分塊 id 集合(由 GetMeshBlockInfos() 提供)

說明:

  • 未知 id 跳過並告警;重複 id 去重(不重複讀盤);返回順序為 ids 的遍歷順序(去重後)。
  • 入參為 null、為空、或無一命中時返回 null 並告警。
  • 其餘約束同 GetMeshes()。

調用示例:

var ids = new List<string> { "block-0", "block-3" };
var meshes = renderer.GetMeshes(ids);