如何在Forge Viewer中显示模型之前加载模型并更改材料

时间:2018-07-27 13:03:24

标签: autodesk-forge autodesk-viewer

我希望能够在伪造查看器中显示模型,但是在模型显示之前,我需要更改其默认材质。当前,我注册了Autodesk.Viewing.GEOMETRY_LOADED_EVENT,当收到事件时,我将隐藏模型,更改材质,然后显示模型。除默认模型在隐藏之前在查看器中显示一两秒钟外,此方法有效。如何防止这种情况发生?

初始化查看器后,这里是加载文档的代码。如果我尝试隐藏模型,如下面注释代码所示,则查看器将返回此错误。隐藏它之前,我必须等待几何加载事件。

wgs.js?v = v3.3:17876未捕获的TypeError:无法读取未定义的属性'getGeometryList'     在RenderScene.getGeometryList(wgs.js?v = v3.3:17876)     在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);
  }
)

1 个答案:

答案 0 :(得分:0)

我只需要显示一个预先罐装的jpg图像预览来代替伪造画布。

即。  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. 隐藏预览图。