이 관계를 파악하려고 노력했지만 어쩔 수 없지만 어쩌면 올바른 것을 검색하지 못하고 있습니다. Vector3.Project를 사용하여 클립 공간에 월드 공간 좌표를 투영하면 X와 Y 좌표는 의미가 있지만 Z (0..1) 좌표를 계산하는 방법을 알 수는 없습니다. 예를 들어, 내 근거리가 1이고 원거리가 1000 인 경우, 내가 얻은 화면 공간에 (0,0,500) (카메라 센터, 원거리 평면까지의 거리의 50 %)의 Vector3을 투영합니다 (1050, 500, .9994785)Direct3D의 투영 된 Z 값과 예상되지 않은 Z 값의 관계
결과 X 및 Y 좌표는 완벽한 의미를 갖지만 결과 Z 값을 얻는 위치를 이해하지 못합니다.
실제로 스크린 공간 좌표를 제거하려하고 있기 때문에 Z- 값을 선택하여 카메라와의 거리를 지정해야만 월드 - 공간 좌표를 원할 수 있기 때문에 필요합니다. 클립 공간 Z (0-1)와 월드 - 공간 Z (nearplane-farplane) 사이의 관계를 이해하지 못합니다. 이 도움이 경우
내 변환 행렬은 다음
World = Matrix.Identity;
//basically centered at 0,0,0 looking into the screen
View = Matrix.LookAtLH(
new Vector3(0,0,0), //camera position
new Vector3(0,0,1), //look target
new Vector3(0,1,0)); //up vector
Projection = Matrix.PerspectiveFovLH(
(float)(Math.PI/4), //FieldOfViewY
1.6f, // AspectRatio
1, //NearPlane
1000); //FarPlane
당신을 감사합니다! 나는 결국 해킹을 위해 정착했으나, 이것이 내가 올바르게 할 수있게 해줄 것이다. – HypnoToad