【问题标题】:How do can I load model and change materials before showing it in the Forge Viewer如何在 Forge Viewer 中显示模型之前加载模型和更改材料
【发布时间】:2019-01-04 14:46:42
【问题描述】:

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

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

wgs.js?v=v3.3:17876 Uncaught TypeError: Cannot read property 'getGeometryList' of undefined 在 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);
  }
)

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢,如果我隐藏画布,我会收到此错误:渲染到大小调整为零的画布。如果您看到此消息,您可能会意外泄漏查看器实例。错误代码:14。
    • 啊好的。只需将 z-index:2 放在 preview-jpg 上,使其位于画布顶部。然后在 TEXTURES_LOADED_EVENT 完成后隐藏 preview-jpg。 (即,不要隐藏伪造画布)
    猜你喜欢
    • 2021-08-09
    • 2020-01-06
    • 2019-06-25
    • 2020-11-24
    • 2022-01-02
    • 2021-02-10
    • 2021-10-02
    • 2021-02-12
    • 2020-12-14
    相关资源
    最近更新 更多