跳到主要内容

VoxelViewerController

VoxelViewerControllerVoxelViewer 的命令入口。一个 Controller 对应一个可替换的预览场景;可以连续导入多个文件,但不应跨多个同时可见的 Viewer 共享。

构造函数

new VoxelViewerController(options?: VoxelViewerOptions)
参数类型默认值说明
options`VoxelViewerOptionsundefined`新建默认配置

导入方法

loadText()

async loadText(text: string, sourceName: string = 'model.json'): Promise<VoxelLoadResult>
参数说明
textPixForge 体素 JSON 文本。UTF-8 编码后的字节数不得超过 options.maxJsonBytes
sourceName结果和状态文字中展示的名称,不参与解析。

loadBytes()

async loadBytes(bytes: ArrayBuffer, sourceName: string = 'model'): Promise<VoxelLoadResult>

自动识别 JSON、VFP 1.2、VFP 1.3。JSON 走 maxJsonBytes 限制;URI 以外的 VFP 由调用方负责控制内存来源。

loadUri()

async loadUri(uri: string, sourceName: string = ''): Promise<VoxelLoadResult>
参数说明
uri由系统文档选择器返回、且当前应用有读取权限的 URI。
sourceName为空时从 URI 最后一段推导文件名。

Reader 最多读取 64 MiB。大于此限制、空文件、权限失效、短读、非法 JSON/VFP 均会拒绝 Promise。

一次完整导入

async function showFile(controller: VoxelViewerController, uri: string): Promise<void> {
try {
const result = await controller.loadUri(uri);
console.info('loaded ' + result.sourceFormat + ': ' + result.voxelCount);
} catch (error) {
console.error(controller.getLastError());
}
}

状态与结果

方法返回值说明
isLoading()boolean导入或准备场景期间为 true
getStatus()string可直接展示的当前状态。
getLastError()string最近一次导入错误;下一次开始加载时清空。
getSourceName()string最近一次成功导入的名称。
getOptions()VoxelViewerOptions当前选项对象。
getRenderTuning()VoxelRenderTuning当前渲染调参对象。

VoxelLoadResult 包含 sourceNamesourceFormatgridSizevoxelCountsurfaceCountvfpCacheHit。其中 vfpCacheHit=true 仅说明预览缓存命中,不能证明 VOXO 权威数据已校验。

运行时设置

controller.setGroundGridVisible(false);
controller.setOptions(options);
controller.setRenderTuning(tuning);

setOptions() 会立即同步地面网格和加载动画时长;背景/加载层将在组件下一次状态更新时采用新配置。setRenderTuning() 会立即重新应用光照、阴影与描边设置。详见 VoxelViewerOptionsVoxelRenderTuning

dispose()

dispose(): void

取消已排队的延迟描边、完成当前加载动画、释放当前场景引用,并把状态置为“预览器已释放”。释放后若要再次显示模型,仍可调用 loadTextloadBytesloadUri 重建场景。

不要依赖 bindStateListener()getSceneResult():它们服务于 HAR 内部组件协作,不属于稳定公开 API。