Boo*_*lin 5 physics zbuffer three.js
我有一个场景,我正在绘制(按比例)地球、月球和一些航天器。当月球被地球遮挡时,它不会消失,而是仍然可见(通过地球)。
从我的研究我发现问题的一部分是我的相机的近距设置太小了,如链接文章中所述,z 排序中近因舍入的小值无法处理非常远的物体。
这里的复杂性是,当相机放大时,我需要有细粒度的 z 索引,以查看航天器(与地球相比,半径最多为 61 米的物体,重量为 r =~ 6.5e+06 meters)。为了使月球和地球规模的物体以正确的顺序呈现,近处必须至少为 100,000 米,此时我无法看近处的物体。
一种解决方案是缩小比例以使用公里,但我不能失去这种精度,并且更喜欢使用米。
关于如何在正确的 z 索引处渲染非常大的远距离物体,同时保留缩放比例和放大小物体的能力的任何想法?
我的想法(我不知道如何实施):
根据@WestLangley 的回答,解决方案只是将选项添加logarithmicDepthBuffer: true到渲染器:
this.renderer = new THREE.WebGLRenderer({antialias: true, logarithmicDepthBuffer: true});
Run Code Online (Sandbox Code Playgroud)