三个现实世界点的投射Z值.js

时间:2013-02-02 07:05:54

标签: 3d three.js linear-algebra

我想找到某个世界点的去标准化投影Z值。

我目前能够通过mrdoob在这里显示的内容得到投射X,Y值:https://stackoverflow.com/a/11605007

该示例显示了如何对投影X,Y进行去标准化(将其从范围[-1,1]取为实际的屏幕坐标)。它没有显示如何对投影Z进行去标准化。这些投射Z值也在[-1,1]的范围内,但我不知道如何对它们进行去标准化。

在代码中构建问题,建立在mrdoob的答案上面:

var width = 640, height = 480;
var widthHalf = width / 2, heightHalf = height / 2;

var projector = new THREE.Projector();
// this could be any point; using example from mrdoob's answer
var someWorldPoint = object.matrixWorld.getPosition().clone();
var vector = projector.projectVector(someWorldPoint, camera );

vector.x = ( vector.x * widthHalf ) + widthHalf;
vector.y = - ( vector.y * heightHalf ) + heightHalf;
// what does vector.z represent and how do I de-normalize vector.z?

感谢您的帮助。如果我的任何术语不正确或令人困惑,请更正。

1 个答案:

答案 0 :(得分:0)

z值用于深度排序。它并不打算“去标准化”。

near平面映射到z = -1,far平面映射到z = 1.

平截头体内的点将映射到介于-1和1之间的z值。(但是,映射不是线性的。)