我目前正在研究我们在Viewer.impl.sceneAfter上添加自定义网格的系统,并且遇到了一些问题,如果添加了大网格(大于加载的所有模型的可见边界的并集),例如大点云,有一个剪裁问题,其中网格的一部分被切除。
从源代码中,我注意到摄像机的远端值是根据世界场景的可见边界更新的,并且该场景没有被考虑用于计算可见边界(与viewer.impl.scene相比,被考虑在内。)
我需要将此自定义网格放置在sceneAfter中,因为我想启用透明度。
我想出了两个hacky解决方案:
首先,覆盖Viewer3D.js中提供的getVisibleBounds函数原型 这是受stackoverflow回答的启发: Changing Camera Speed,但由于它覆盖了可能稍后更改的第三方代码,因此不满意。
其次,在viewer.impl.scene中有一个不可见的克隆(使用材质的可见属性而不是几何)自定义网格,这样它就会改变观察者的可见边界。我比第一个解决方案更喜欢它,但仍然认为效率低,因为我需要跟踪两个网格实例来移除/操纵几何。
我想知道是否有比这些更优雅的解决方案
提前致谢!
答案 0 :(得分:1)
我记录了一个愿望请求,以考虑在我们的查看器API的未来版本中添加到sceneAfter的网格。
与此同时,建议的解决方法与您的第二个命题有点类似,但使用了一个简单的网格,就像自定义网格的边界框的表示一样。如果它复杂的话,它将比网格的克隆更快。
希望有所帮助