You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

forge-viewer如何不渲染模型查询属性且不改动原viewer实例

Forge Viewer 无渲染加载额外模型查询属性实现方案

完全可以实现,不需要改动现有正在用于展示的viewer实例状态,也不会将待查询的模型渲染到可见视图中。

你之前用的viewer.loadDocumentNode方法本身就是将模型挂载到当前viewer的渲染管线中,必然会触发模型渲染显示,不适合属性查询的离线加载场景。

实现思路

创建一个完全独立的离屏viewer实例,挂载到用户不可见的DOM容器上,关闭所有非必要的渲染、交互配置降低性能消耗,专门用于加载待查询的模型、调用内置属性查询方法。这个实例和你现有业务使用的viewer完全隔离,不会产生任何状态干扰。

实现代码

// 1. 创建不可见的离屏DOM容器,不需要插入到可见文档流
const offscreenContainer = document.createElement('div');
offscreenContainer.style.cssText = 'position:fixed;left:-99999px;width:1px;height:1px;overflow:hidden;';

// 2. 初始化轻量化离屏viewer
let offscreenViewer: Autodesk.Viewing.GuiViewer3D;
await new Promise<void>((resolve) => {
  Autodesk.Viewing.Initializer({ getAccessToken: yourTokenFetchFunction }, () => {
    offscreenViewer = new Autodesk.Viewing.GuiViewer3D(offscreenContainer, {
      headless: true,
      disableBrowserContextMenu: true,
      disabledExtensions: ['*'], // 禁用所有扩展,减少资源占用
      canvasAlpha: true,
      antialias: false,
      progressiveRendering: false,
      groundShadow: false,
      groundReflection: false,
      lightPreset: 0
    });
    offscreenViewer.start();
    resolve();
  });
});

// 3. 加载待查询属性的模型,不会渲染到可见视图
const targetDoc = await myLoadDocumentFunction("urn:another-model-urn");
const geomNode = targetDoc.getRoot().getDefaultGeometry();
const queryModel: Autodesk.Viewing.Model = await offscreenViewer.loadDocumentNode(targetDoc, geomNode, {
  // 仅查询属性时可关闭几何加载,进一步降低资源消耗、提升加载速度
  loadGeometry: false,
  isAEC: false
});

// 4. 正常调用内置属性查询方法即可
const targetProps = await new Promise((resolve) => {
  queryModel.getProperties(/* 填入要查询的构件dbId */, (result) => {
    resolve(result);
  });
});

注意事项

  • 离屏viewer和现有业务viewer完全独立,不会修改原有viewer的任何状态,也不会把待查询模型显示到用户可见的画布上
  • 如果后续不再需要查询该模型属性,可调用offscreenViewer.finish()、移除对应DOM节点,释放占用的内存
  • 不要尝试脱离viewer上下文单独创建Autodesk.Viewing.Model实例,该类强依赖viewer内部的资源加载、数据管理管线,脱离上下文无法正常工作。

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 14:57:27