我想找到某个世界点的去归一化投影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?
谢谢你的帮助。如果我的任何术语不正确或令人困惑,请更正。
z值用于深度排序。它并非旨在"去规范化"。
near
平面映射到z=-1,far
平面映射到z=1。
截锥体内的点将映射到-1和1之间的z值。(然而,映射不是线性的。)