了解three.js射线投影

时间:2013-01-08 14:37:21

标签: three.js

我想了解光线投影的工作原理。几乎我在哪里看到,我得到这样的代码:

new THREE.Vector3(mouseX, mouseY, 0.5); 

我对z位置的0.5感到困惑。根据我的理解,我们预测z=1 plane(不是z=0.5 plane)。那么我们不应该像这样使用它吗?

new THREE.Vector3(mouseX, mouseY, 1.0);

1 个答案:

答案 0 :(得分:3)

经常使用的模式是这样的:

var vector = new THREE.Vector3(
    ( event.clientX / window.innerWidth ) * 2 - 1,
    - ( event.clientY / window.innerHeight ) * 2 + 1,
    0.5,
);

这是标准化设备坐标(NDC)空间中的一个点。

功能

projector.unprojectVector( vector, camera );

从NDC空间映射到世界空间。

0.5的值vector.z可以设置为介于-1和1之间的任何值。

为什么呢?因为这些点都位于与NDC空间中的z轴平行的线上,并且都将映射到从世界空间中的相机发出的相同光线。

设置z = -1将映射到近平面上的一个点; z = 1远方飞机。

所以简短的回答是,z的值是什么并不重要,只要介于-1和1之间。由于数值原因,我们远离端点,0.5是经常使用。