Three.js画布粒子不使用OrthographicCamera渲染

时间:2012-06-28 17:39:38

标签: canvas three.js particles orthographic

如果我拍摄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中的错误还是我对正交投影的理解?

更改前的粒子图像: enter image description here

切换到OrthographicCamera后: enter image description here (注意粒子缺失,线条在空白处终止)

1 个答案:

答案 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位置实际上仅确定剔除行为。场景看起来仍然一样。这是输出:

enter image description here