只是寻找一些一般性的指导,我已经很长时间没有摆弄任何 3D 了,而且风景已经发生了很大的变化,如果你原谅这个可怕的双关语。
我有许多高度详细的 3d 模型(每个 3M+ 面),这些模型是从需要在浏览器中渲染的真实地形扫描生成的。它们是“不规则的”,不能从网格/DEM 或任何东西渲染。
我已将模型划分为更小的对象并为每个对象(3 个级别)生成 LOD,这会生成一组公共顶点和三个索引缓冲区,这些缓冲区引用我逐渐流式传输到 JS 客户端的部分或全部顶点。
我打算通过根据与相机的距离为每个对象指定 LOD 来渲染 500k - 1M 多边形之间的某个帧。
所以我的问题是,我如何有效地在这些级别之间切换?
我尝试了一种简单的方法,当数据发送到 GPU 时,它自然会在帧速率中产生颠簸和毛刺。但我正在寻找一种将所有数据(顶点和三个索引缓冲区)发送到 GPU 内存的方法,然后告诉它使用特定的索引缓冲区进行渲染,比如低分辨率缓冲区,然后切换到 med 或 high res 缓冲区,因为相机越来越近。
Three.LOD() 解决方案对我来说似乎没有任何用处,因为它只会产生与我的幼稚解决方案相同的 fps 故障。
将不胜感激一些指导,但一般。干杯!