首页 > 解决方案 > 如何在 Forge Viewer 中显示模型之前加载模型和更改材料

问题描述

我希望能够在锻造查看器中显示模型,但在模型显示之前,我需要更改默认材料。目前我注册了 Autodesk.Viewing.GEOMETRY_LOADED_EVENT,当我收到事件时我隐藏模型,更改材料然后显示模型。除了默认模型在查看器中显示一两秒钟之外,我可以隐藏它,这很有效。我怎样才能防止这种情况发生?

在此处初始化查看器之后是加载文档的代码。如果我尝试按照下面注释代码中的指示隐藏模型,则查看器会返回此错误。我必须等待几何加载事件才能隐藏它。

wgs​​.js?v=v3.3:17876 Uncaught TypeError: Cannot read property 'getGeometryList' of undefined at RenderScene.getGeometryList (wgs.js?v=v3.3:17876) at Viewer3DImpl.onLoadComplete (viewer3D.js?v= v3.3:32002)

这是我正在运行的代码:

Autodesk.Viewing.Document.load(
  documentId, (doc) => { 
    var geometryItems = Autodesk.Viewing.Document.getSubItemsWithProperties(doc.getRootItem(), { 'type': 'geometry' }, true);
    if (geometryItems.length > 0) {

      viewer.load(doc.getViewablePath(geometryItems[0]), null, (model) => {
        // Document loaded

        // Can't hide model here, viewer returns an error because geometry
        // is not loaded
        //viewer.hideModel(model.id);
        resolve(model.id);
      }); // show 1st view on this document...
    }
  },
  function (errorMsg) { // onErrorCallback
    console.log('Load Document returned error message: ' + errorMsg);
  }
)

标签: autodesk-forgeautodesk-viewer

解决方案


我会简单地显示一个预先制作的 jpg 图像预览来代替伪造画布。

IE。1. 隐藏样式为“display:none”的伪造画布 2. 显示您的 preview-jpg 代替伪造画布 3. 等待 TEXTURES_LOADED_EVENT 事件,像这样...

https://github.com/wallabyway/forge-pdf-report/blob/6babb6d7332b6cdb983f57e7d140ff59a5136705/docs/index.html#L44

  1. 隐藏样式为“display:block”的伪造画布
  2. 隐藏您的预览-jpg。

推荐阅读