跳到主要内容

LCC2 格式

LCC2 来自 Lixel 扫描仪和 LCC Studio 的开发商 XGRIDS,用于大型场景。场景是区域树,各节点保存某个细节层级(LOD),数据存于按需加载的分块文件。引擎直接加载 .lcc2,无需转换 XGRIDS 软件输出。

署名

LCC2 数据组织格式源自 XGRIDS。其许可要求交付 LCC2 数据的应用显示署名:“Data Organization Format originated from XGRIDS”。

文件集合​

场景文件夹包含 JSON 索引和数据文件:

scene/
├── scene.lcc2 # 索引:场景信息与 LOD 树
├── data/
│ ├── 3dgs/ # 泼溅文件,.sog 或 .spz(必需)
│ └── mesh/ # 可选碰撞网格(引擎不加载)
└── info/ # 可选场景属性,例如出生点

同场景文件统一为 SOG 或 SPZ,由索引 splatType 指定。多个区域可共享文件,各自引用其中一段单元。

树的工作方式​

索引描述包围盒树。根以下每个节点保存区域一个 LOD,子节点共同保存同一区域更细一级。根下方最粗,叶子最细。远处显示父节点,接近时替换为子节点。根本身无单元,只有可选天空等远景环境块。

在 PlayCanvas 中加载​

与流式 SOG 相同,以 gsplat 资源加载 .lcc2,相机移动时请求分块。

const asset = new Asset('scene', 'gsplat', { url: 'scene/scene.lcc2' });
app.assets.add(asset);
app.assets.load(asset);

const entity = new Entity('scene');
entity.addComponent('gsplat', { asset });

// LCC2 scenes store +Z up
entity.setLocalEulerAngles(270, 0, 0);
app.root.addChild(entity);

细节数量和距离衰减控制也与流式 SOG 相同,参见 LOD 行为和全局预算。

SOG 和 SPZ 文件​

SOG 内置于引擎,无需额外配置。SPZ 场景需向 gsplat 处理器注册解析器,因为分块按 .spz 扩展名请求。配置见 SPZ 加载。LCC2 使用的 SPZ v3 不需要 ZSTD 模块。

引擎支持说明​

  • 只加载泼溅,忽略碰撞网格、BVH、出生点等信息。
  • 不应用索引的 offset、shift、scale。
  • 文件包含球谐时会加载。
  • 存在环境块时一起加载渲染。它表示从扫描位置看到的环境,相机离得很远时可能呈现大团块。

示例​

完整配置见流式 LCC2 示例,以及通过 URL 打开场景的查看器示例。

转换 LCC2​

SplatTransform 可读取并转为流式 SOG 或其他支持格式,参见生成流式 SOG。