Forge 中的大型模型 - 在没有 lag/refresh 的情况下设置 ProgressiveDisplay 的事件

Large models in Forge - event to set the ProgressiveDisplay without lag/refresh

我使用 Forge Viewer 并且我有一个大模型,所以每当我四处移动时,它都会刷新视图并带有非常烦人的闪光。

我尝试手动将 ProgressiveDisplay 设置为 false,这似乎是一个不错的选择,但如果我使用 Autodesk.Viewing.Initializer() 中的代码将其设置为 false,则需要模型在 window 中完全呈现和导航之前需要太多时间。这不是这种模型的选择。我已经使用了 GEOMETRY_LOADED_EVENT,试图触发设置 属性 的正确时刻,但是当事件被触发时,模型仍然没有完成,再次导致等待时间过长。

我想知道是否有办法让 ProgressiveDisplay 保持 true 直到 model/geometry 在查看器中完全加载和呈现,然后将它设置为 false 只是为了在模型周围闲逛。有什么活动可以帮助我更好地管理查看器中的大型模型吗?

我是 Forge 的新手,我还在学习,所以我正在寻找您的建议。 谢谢!

可以通过三种方法减少您遇到的 'mesh flickering' 问题...

  1. 更改 devicePixelRatio(填充像素边界)
  2. 更改 FPS 计数器(顶点绑定)
  3. 打开实验性 'visibility Cache' 选项(渲染绑定)

1。使用 devicePixelRatio

要更改 devicePixelRatio,请尝试这些值...1.5、1.0、0.75...

window.devicePixelRatio = 0.75

2。使用 setFPSTargets

  1. 降低 FPS 启发式,降低到 16FPS,平均 24FPS,最大 30FPS,使用...

viewer.impl.setFPSTargets(16,24,30);

3。激活可见性剔除

viewer.impl.toggleVizBuffer(true)

这将激活一项实验性功能,该功能使用之前的帧来确定什么是可见的,什么不是。然后它根据像素贡献将最大的东西渲染为最小的。它对某些事情很有效,但对其他事情却不太有效。

这是一个 GIF 动画,展示了带有大型建筑物的 vizBuffer 'before and after'...