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

APS Viewer大模型性能优化:skipPropertyDb后功能失效解决方案咨询

问题描述

我需要在Autodesk Platform Services(APS)Viewer中展示大型模型,但遇到了严重的性能问题。参考Autodesk博客中的性能优化方案,我在代码中添加了skipPropertyDb: true配置以跳过属性数据库加载:

viewer.loadDocumentNode(document, bubbleNode, {
  skipPropertyDb: true,
});

但此举导致无法选中隔离对象,也无法使用viewer.fitToView()功能,原因是缺失dbId与片段的关联关系。请问能否仅为选中对象加载该关联关系?或者无需该关联关系即可使用viewer.fitToView()?

解决方案

1. 仅为选中对象加载dbId与片段的关联关系

可以通过手动加载特定对象的属性数据来建立关联,步骤如下:

  • 监听选择事件,获取选中对象的片段ID(fragmentId)
  • 初始化属性数据库(如果未初始化),然后加载目标片段对应的属性数据
  • 加载完成后,即可恢复选中隔离、fitToView()等功能

示例代码:

viewer.addEventListener(Autodesk.Viewing.SELECTION_CHANGED_EVENT, async (event) => {
  if (event.selections.length === 0) return;
  const model = event.selections[0].model;
  const fragIds = event.selections[0].fragIds;

  if (!model.getPropertyDb()) {
    await model.getPropertyDb().initialize();
  }
  await model.getPropertyDb().loadPropertiesForFragments(fragIds);
  
  // 此时可正常调用fitToView
  viewer.fitToView(event.selections[0].dbIdArray, model);
});

2. 无需dbId关联使用fitToView()

Viewer支持直接通过片段ID数组调用fitToView(),不需要依赖dbId与片段的关联。只需传入片段ID,并指定用片段包围盒计算视角即可:

示例代码:

// 假设已获取目标片段ID数组 fragIds
viewer.fitToView(fragIds, viewer.model, true);

第三个参数true表示基于片段的包围盒适配视角,跳过dbId的关联校验。

额外优化建议

  • 若需批量处理对象,可通过viewer.model.getFragmentList()获取全量片段列表,筛选目标片段后再执行加载或视角适配操作
  • 超大型模型场景下,建议结合渐进式加载和按需加载属性策略,在性能和功能需求间取得平衡

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:02:06