4. threejs深度冲突
# threejs深度冲突
所谓threejs深度冲突,就是两个面重合,或者说两个面距离特别近,threejs无法区分前后,旋转、缩放或平移3D场景的时候,可以看到闪烁的现象。
# 测试:深度冲突
可以测试上节课收费站案例,缩放3D场景,观察到地面箭头,有的视角看不到闪烁,有的可以。
这种一般都是在透视投影相机渲染时候,两个面距离很近,相机无法区分前后。
# 解决:对数深度缓冲区logarithmicDepthBuffer
尤其相机距离远的时候,出现深度冲突,可以通过开启webgl渲染器的对数深度缓冲区logarithmicDepthBuffer:true
解决。
const renderer = new THREE.WebGLRenderer({
antialias: true,
logarithmicDepthBuffer:true
});
# 两个面完全重合
两个面完全重合,或者说距离无限进阶,设置logarithmicDepthBuffer:true
,其实作用不大,还是需要美术在建模软件中调整,完全重合的面,拉开一定一定距离。
你可以在Blender中创建一个矩形平面,然后让两个面完全重合,进行测试。