在 Forge Viewer 中设置可见边界

Setting Visible bounds in Forge Viewer

我目前正在开发我们在 Viewer.impl.sceneAfter 上添加自定义网格的系统,并且遇到了一些问题,如果大型网格(大于加载的所有模型的可见边界的并集),例如大型点云添加后,存在裁剪问题,其中网格的一部分被切掉了。

从源代码中,我注意到相机的 Far 值是根据世界场景的可见边界更新的,并且在计算可见边界时不考虑 sceneAfter(与 viewer.impl.scene , 已考虑在内)。

我需要将此自定义网格放置在 sceneAfter 中,因为我想启用透明度。

我想出了两个 hacky 解决方案:

首先,覆盖Viewer3D.js中提供的getVisibleBounds函数原型 这是受这个 Whosebug 答案的启发: Changing Camera Speed,但不满意,因为它覆盖了以后可能会更改的第三方代码。

其次,在 viewer.impl.scene 中拥有自定义网格的不可见克隆(使用 material 的可见 属性 而不是几何体),这样它会改变查看器的可见范围。我比第一个解决方案更喜欢它,但仍然认为效率低下,因为我需要跟踪两个网格实例以删除/操作几何体。

我想知道是否有比这些更优雅的解决方案

提前致谢!

我记录了一个愿望请求,希望在我们的查看器 API.

的未来版本中考虑添加到 sceneAfter 的网格

与此同时,建议的解决方法与您的第二个提议有点相似,但使用的是普通网格,例如自定义网格边界框的表示。如果它很复杂,它的渲染速度将比网格的克隆更快。

希望对您有所帮助