2013-02-02 1 views
0

일부 세계 점에 대해 정규화되지 않은 투영 Z 값을 찾고 싶습니다.실세계 점의 투영 Z 값이 three.js로 표시됩니다.

내가 현재 투영의 X를 얻을 수 있어요, mrdoob 여기서 보여줍니다 무엇을 수행하여 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? 

감사합니다. 내 용어가 잘못되었거나 혼동을 일으키는 경우이를 수정하십시오.

답변

0

z 값은 깊이 정렬에 사용됩니다. 이것은 "표준화 해제"되지 않습니다. 절두체 내부 Z = -1

near 평면지도, 및 z에 far 평면 맵 = 1

점 -1과 1 사이의 Z 값에 맵핑한다 (매핑은 없다 선형).

+0

감사합니다. 가능할 수 있습니까? 투영면과 직각을 이루는 선을 찾고 내 세계 점과 교차하고 두 점 사이의 거리를 찾으십시오. – paulbbauer

관련 문제