0

我想找到某个世界点的非标准化投影 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?

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

4

1 回答 1

0

z 值用于深度排序。它不打算“去规范化”。

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

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

于 2013-02-02T14:56:47.780 回答