使用 SVF2 时,await AggregateView.waitForLoadDone() 有时会无限期阻塞

Posted

技术标签:

【中文标题】使用 SVF2 时,await AggregateView.waitForLoadDone() 有时会无限期阻塞【英文标题】:await AggregateView.waitForLoadDone() sometimes blocks indefinitely when using SVF2 【发布时间】:2021-09-15 01:54:39 【问题描述】:

切换到 SVF2 await aggregated.waitForLoadDone() 后,有时会无限期阻塞。不幸的是,我无法确定地重现该问题。它可以在启动我的应用程序后立即发生,在加载/卸载模型之后或根本不发生。

我之前没有观察到这种行为,但直到现在我都无法(ab)像这样使用查看器(例如,在非常大的模型之间快速切换,有些是半损坏的)。 SVF2 的荣誉,性能令人难以置信。

我目前的解决方法是 Promise.race waitForLoadDone() 并在 10 秒后拒绝。这工作正常,并使我的应用程序保持一致状态。

我怀疑问题可能与网络有关。

编辑:我将其缩小到属性model.getData().loadDone,它有时会永远保持false

Edit2:每个版本都会变得更糟。我现在在 7.60,观众不断休息。有些对象永远不会加载,websockets 卡住并且不传输任何数据,用户需要手动清理他们的浏览器缓存。这怎么可能通过任何 QA?

【问题讨论】:

【参考方案1】:

恐怕这可能是 - 正如您所指出的 - 网络问题。您可能已经注意到 SVF2 格式使用 WebSockets 将粒度资产数据传输到浏览器,但如果该持久连接中断,查看器可能无法恢复。

下次您看到这种情况时,请检查控制台日志(如果可能,请在此处分享)和网络选项卡,以查看 WebSocket 连接是否仍处于活动状态。如果是,并且模型仍未成功加载,请向forge (dot) help (at) autodesk (dot) com提交报告,并提供尽可能多的信息,以便我们进行调试。

【讨论】:

嗨,彼得!感谢您的答复。我将尝试进一步调试此问题并向您发送一封电子邮件,其中包含我的发现。

以上是关于使用 SVF2 时,await AggregateView.waitForLoadDone() 有时会无限期阻塞的主要内容,如果未能解决你的问题,请参考以下文章

Autodesk Forge Viewer - SVF2 格式的无效 OGT 标头

Typescript async/await 无法确定正确的返回类型

使用 Model Derivative api 的 BIM 360 设计能够看到 SVF2

从 SVF 更新到 SVF2 后,法线在自定义着色器中中断

无法在 Autodesk Forge Viewer 中加载 SVF2 模型

Autodesk Forge Data Viz 组件适用于 SVF 模型,但不适用于 SVF2 模型