Three.js 闪烁的飞机
我有一个带有纹理的大2D平面应用程序,但我遇到了一些闪烁问题 在这里可以看到闪烁问题(平面没有纹理): 这是深度缓冲区(z缓冲区)精度问题还是其他问题 解决方案是缩小所有尺寸,而不是允许大平面/对象吗?最佳做法是什么 我知道z近和远也会影响精度,因此在本例中,将z近设置为1000会修复闪烁 守则:Three.js 闪烁的飞机,three.js,webgl,Three.js,Webgl,我有一个带有纹理的大2D平面应用程序,但我遇到了一些闪烁问题 在这里可以看到闪烁问题(平面没有纹理): 这是深度缓冲区(z缓冲区)精度问题还是其他问题 解决方案是缩小所有尺寸,而不是允许大平面/对象吗?最佳做法是什么 我知道z近和远也会影响精度,因此在本例中,将z近设置为1000会修复闪烁 守则: /* * Scale = 1, no flickering. Scale = 1000, flickering. */ var scale = 1000; var scene = ne
/*
* Scale = 1, no flickering. Scale = 1000, flickering.
*/
var scale = 1000;
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1000, 1000000);
camera.position.x = 0;
camera.position.y = 0;
camera.position.z = 100 * scale;
var renderer = new THREE.WebGLRenderer({
antialias: false
});
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var light = new THREE.AmbientLight(0xFFFFFF);
scene.add(light);
var material = new THREE.MeshBasicMaterial({
transparent: false,
side: THREE.DoubleSide,
fog: false,
color: 0xFFFF00,
opacity: 1.0
});
var cubeGeometry = new THREE.PlaneGeometry(50 * scale, 50 * scale, 1, 1);
var cubeMesh = new THREE.Mesh(cubeGeometry, material);
cubeMesh.position.set(0, 0, 1 * scale);
scene.add(cubeMesh);
var material = new THREE.MeshBasicMaterial({
transparent: false,
side: THREE.DoubleSide,
fog: false,
color: 0xFF0000,
opacity: 1.0
});
var cubeGeometry = new THREE.PlaneGeometry(100 * scale, 100 * scale, 1, 1);
var cubeMesh = new THREE.Mesh(cubeGeometry, material);
scene.add(cubeMesh);
function render() {
var time = Date.now() * 0.5;
camera.position.x = Math.sin(time / 1000) * 150 * scale;
camera.position.y = 0;
camera.position.z = Math.cos(time / 1000) * 150 * scale;
camera.lookAt(scene.position);
renderer.render(scene, camera);
requestAnimationFrame(render);
}
render();
你看到的是GPU的精度不够,因为你使用的范围太大了。通过将相机的
平面附近的设置为100
(而不是1
),闪烁消失
尝试此代码,看看它是否有效:
cubeMesh.position.set(0, 0, 1);
谢谢,帮了大忙:)如果你正在处理一个挨着另一个的加载的OBJs平面,你会用同样的方法修复它吗?我尝试将“接近值”设置为100,将“对数深度缓冲区”设置为true。在某些模型中,这两种设置对我都不起作用。你有什么其他建议吗?我也遇到过同样的闪烁阴影问题,我需要将我的聚光灯上附近的平面设置为100
。我也解决了这个问题。我的飞机很大,当我缩小它时,它解决了这个问题