LCCRender::load
加载 LCC 数据,返回 LCCObject 对象。
WebSDK 支持 Three.js 和 CesiumJS 引擎,通过传入不同的引擎参数来加载 LCC 模型。
版本要求
SDK v0.2.0+
引擎支持
Three.js / CesiumJS
API
LCCRender::load(param: LoadOptions, successFunc: SuccessFunc, progressFunc: ProgressFunc, failureFunc: FailureFunc, preProcessFunc?: PreProcessFunc): LCCObject
参数
param(Three.js)
| 参数 | 类型 | 必选 | 默认值 | 描述 |
|---|---|---|---|---|
param.camera | THREE.PerspectiveCamera / THREE.OrthographicCamera | 是 | - | Three.js 相机对象。 |
param.scene | THREE.Scene | 是 | - | Three.js 场景对象。 |
param.renderLib | THREE | 是 | - | Three.js 库引用,例如 import * as THREE from 'three'。 |
param.renderLibWebgpu | typeof import('three/webgpu') | 否 | - | Three.js WebGPU 模块引用,例如 import * as THREE_WEBGPU from 'three/webgpu'。 |
param.renderLibTSL | typeof import('three/tsl') | 否 | - | Three.js TSL 模块引用,例如 import * as TSL from 'three/tsl'。 |
param.renderer | THREE.WebGLRenderer | 是 | - | Three.js 渲染器。 |
param.dataPath | String / Object | 是 | - | LCC 数据路径。支持字符串路径(.lcc / .lcc2 / 带 token 的 meta.lcc)或路径描述集合对象。 |
param.canvas | HTMLCanvasElement | 是 | - | 渲染的 canvas 画布,可通过 renderer.domElement 获得。 |
param.appKey | String | 否 | - | 用于去除水印的 AppKey。 |
param.useEnv | Boolean | 否 | - | 是否显示环境数据。 |
param.useIndexDB | Boolean | 否 | true | 是否开启本地数据缓存。SDK v0.5.0+ |
param.useLoadingEffect | Boolean | 否 | false | 是否开启加载特效。SDK v0.5.1+ |
param.loadingEffectCenter | { x: number, y: number, z: number } | 否 | - | 加载特效的中心位置。SDK v0.5.1+ |
param.pointsColor | String | 否 | 'default' | 点云显示效果:'default'(原色)或 'rainbow'(高程色)。 |
param.modelMatrix | THREE.Matrix4 | 否 | - | 模型矩阵。SDK v0.5.2+ |
param.maxHostCacheSize | number | 否 | - | Host 缓存大小。SDK v0.5.4+ |
param.maxGpuCacheSize | number | 否 | - | GPU 缓存大小。SDK v0.5.4+ |
param.usePrecisionRaycast | Boolean | 否 | true(PC) | 启用高精度射线检测。PC 端默认启用,移动端不支持该参数。SDK v0.6.3+ |
param(CesiumJS)
| 参数 | 类型 | 必选 | 默认值 | 描述 |
|---|---|---|---|---|
param.camera | Cesium.Camera | 是 | - | Cesium 相机对象。 |
param.scene | Cesium.Scene | 是 | - | Cesium 场景对象。 |
param.renderLib | Cesium | 是 | - | CesiumJS 库引用,例如 import * as Cesium from 'cesium'。 |
param.dataPath | String / Object | 是 | - | LCC 数据路径。支持字符串路径(.lcc / .lcc2 / 带 token 的 meta.lcc)或路径描述集合对象。 |
param.canvas | HTMLCanvasElement | 是 | - | 渲染的 canvas 画布,可通过 viewer.scene.canvas 获得。 |
param.modelMatrix | Cesium.Matrix4 | 否 | - | 模型变换矩阵。RTK 真实坐标数据时无需设置。 |
param.appKey | String | 否 | - | 用于去除水印的 AppKey。 |
param.useEnv | Boolean | 否 | - | 是否显示环境数据。 |
param.useIndexDB | Boolean | 否 | true | 是否开启本地数据缓存。SDK v0.5.0+ |
param.useLoadingEffect | Boolean | 否 | false | 是否开启加载特效。SDK v0.5.1+ |
param.loadingEffectCenter | { x: number, y: number, z: number } | 否 | - | 加载特效的中心位置。SDK v0.5.1+ |
param.pointsColor | String | 否 | 'default' | 点云显示效果:'default'(原色)或 'rainbow'(高程色)。 |
param.maxHostCacheSize | number | 否 | - | Host 缓存大小。SDK v0.5.4+ |
param.maxGpuCacheSize | number | 否 | - | GPU 缓存大小。SDK v0.5.4+ |
param.usePrecisionRaycast | Boolean | 否 | true(PC) | 启用高精度射线检测。PC 端默认启用,移动端不支持该参数。SDK v0.6.3+ |
回调函数
| 参数 | 类型 | 必选 | 描述 |
|---|---|---|---|
successFunc | (model: any) => void | 是 | 模型加载完成回调,参数为构建完成的 Mesh。 |
progressFunc | (progress: number) => void | 是 | 模型加载进度回调,参数为加载百分比(0~1)。 |
failureFunc | () => void | 是 | 模型加载失败回调。 |
preProcessFunc | (buffer: ArrayBuffer, filename: string) => Promise<{ data: ArrayBuffer; rawData: ArrayBuffer }> | 否 | 数据预处理回调,用于在渲染前对数据进行预处理。 SDK v0.5.0+ |
dataPath 格式
dataPath 支持两种方式:
方式一:字符串路径(推荐)
直接传入字符串,指定 LCC 数据路径:
- 指定完整的
.lcc文件路径,例如http://example.com/data/xxxx.lcc。SDK v0.4.1+(推荐) - 指定完整的
.lcc2文件路径,例如http://example.com/data/xxxx.lcc2。SDK v0.6.0+(推荐) - 指定带有 token 等信息的
meta.lcc文件路径,适用于请求加密数据的场景,例如https://example.com/data/meta.lcc?token=xxx&other=xxx - 指定目录,要求该目录下存在
meta.lcc文件,例如https://example.com/data(已废弃)
const lccObject = LCCRender.load({
// ...other params
dataPath: 'http://example.com/data/xxxx.lcc',
}, successFunc, progressFunc, failureFunc);
方式二:路径描述集合(SDK v0.5.0+)
采用对象形式自定义所有文件的路径,支持加密路径,适用于 LCC 格式。
文件路径描述格式:
{
"fileName": {
"url": "xxxxxxxxxxxx",
"header": { "field1": "xxx", "field2": "yyy" } // Optional, added to HTTP request headers
}
}
示例:
const dataPath = {
meta: { url: 'http://example.com/xxx/meta.lcc' },
index: { url: 'http://example.com/xxx/index.bin' },
data: { url: 'http://example.com/xxx/data.bin' },
environment: { url: 'http://example.com/xxx/environment.bin' },
collision: { url: 'http://example.com/xxx/collision.lci' },
shcoef: { url: 'http://example.com/xxx/shcoef.bin' },
};
const lccObject = LCCRender.load({
// ...other params
dataPath: dataPath,
}, successFunc, progressFunc, failureFunc);
返回值
LCCObject — LCC 模型对象,包含射线检测、裁切、渲染控制等接口。
注意事项
- Three.js 引擎需要在渲染循环中调用
LCCRender.update()进行更新。 param.useSH参数已废弃,请使用LCCObject.useShcoef()接口。param.gpuAcceleration参数已废弃。- dataPath 支持
.lcc格式(SDK v0.4.1+)和.lcc2格式(SDK v0.6.0+)。
相关 API
LCCRender::unload()LCCRender::update()LCCRender::dispose()