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

如何提升ACC中NWD模型自定义Viewer渲染质量并排除房间实体

问题解答

一、提升自定义Viewer渲染质量

要让自定义Viewer的渲染质量匹配ACC官方Viewer,可通过调整渲染参数、匹配官方配置实现,具体操作如下:

  • 开启高分辨率纹理与抗锯齿
    模型加载完成后,调用核心方法开启画质增强设置:

    viewer.loadDocumentNode(viewerDocument, defaultModel, {
      globalOffset: new THREE.Vector3(0, 0, 0),
    }).then(() => {
      // 第一个参数启用高分辨率纹理,第二个参数启用全屏抗锯齿
      viewer.setQualityLevel(true, true);
      // 强制刷新渲染使设置生效
      viewer.impl.invalidate(true);
    });
    
  • 匹配官方光照预设
    ACC官方Viewer使用特定室内光照配置,切换到对应预设可大幅提升视觉效果:

    viewer.impl.setLightPreset(8);
    
  • 调整LOD细节阈值
    调高细节层次阈值,让模型在更远范围保持高细节展示:

    viewer.model.setLODDistanceThreshold(200); // 数值可根据场景大小调整,单位为模型单位
    
  • 启用阴影效果
    开启阴影增强模型立体感,对齐官方Viewer表现:

    viewer.setShadowEnabled(true);
    
  • 加载AEC专属扩展
    添加AEC核心扩展优化建筑模型渲染,修改Viewer初始化配置:

    const config = {
      extensions: [
        "Autodesk.AEC.Minimap3DExtension",
        "Autodesk.AEC.Viewing.Extension" // 新增AEC核心扩展
      ],
    };
    

二、排除房间实体的加载或显示

针对nwd模型中房间被加载为实体的问题,提供两种解决方案:

方案1:加载时过滤房间类别

在模型加载阶段直接过滤房间类别的节点,避免其进入场景:

viewer.loadDocumentNode(viewerDocument, defaultModel, {
  globalOffset: new THREE.Vector3(0, 0, 0),
  filter: (dbId) => {
    const category = viewerDocument.getCategoryForNode(dbId);
    // 注意:需匹配模型中房间的实际类别名称,通常为"Rooms"或"房间"
    return category?.name !== "Rooms";
  }
});

方案2:加载后隐藏房间节点

若加载时未过滤,可在模型加载完成后通过类别搜索隐藏房间:

viewer.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, () => {
  setViewerIsReady(true);
  // 搜索指定类别节点并隐藏
  viewer.search(
    "Rooms",
    (results) => { viewer.hide(results); },
    null,
    ["Category"] // 指定按类别字段搜索
  );
});

若需彻底移除房间节点,可将viewer.hide(results)替换为viewer.removeNode(results),但隐藏操作更灵活,后续可随时恢复显示。

内容的提问来源于stack exchange,提问作者RENZO GIANCARLO RIOS RUGEL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:14:57