如果我拍摄Three.js canvas_lines demo并用正交相机替换透视相机:
- camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
+ camera = new THREE.OrthographicCamera(-window.innerWidth/2, window.innerWidth/2, -window.innerHeight/2, window.innerHeight/2, -100, 10000);
虽然显示了线条,但它会导致粒子不再呈现。这是Three.js中的错误还是我对正交投影的理解?
更改前的粒子图像:
切换到OrthographicCamera
后:
(注意粒子缺失,线条在空白处终止)
答案 0 :(得分:1)
"失踪"粒子被简单地剔除,因为它们不在相机的近和远的zPlanes之间。
首先,OrthographicCamera上的nearPlane未正确设置。这有点棘手,但投影矩阵的z值必须> 0。这是因为它们被指定为摄像机前方的距离。"所以,先改变:
Exit Function
更重要的是,相机的位置应使其不在粒子云的中间。我只是把它搬回来了:
camera = new THREE.OrthographicCamera(-window.innerWidth/2, window.innerWidth/2, -window.innerHeight/2, window.innerHeight/2, 1, 10000);
在正交投影中,z位置实际上仅确定剔除行为。场景看起来仍然一样。这是输出: