문제

나는 사용하고있다

worldview_inverse * (projection_inverse * vector)

화면 공간 좌표를 월드 공간 좌표로 변환합니다.나는 그것을 가정했다

(x,y,1,1)

원거리 평면의 한 점으로 변환됩니다.

(x,y,-1,1)

가까운 평면의 점으로 변환하고 선을 연결하면 선과 교차하는 뷰 절두체의 모든 개체를 쿼리할 수 있습니다.변환 후 결과 포인트를 해당 .w 구성 요소로 나눕니다.이는 원거리 평면에서는 작동하지만 근거리 평면의 지점은 어떻게든 월드 공간 원점으로 변환됩니다.

나는 이것이 1의 w 구성요소와 관련이 있다고 생각합니다. 왜냐하면 일반적으로 투영 전이 1이고 이후가 아니라 역 투영을 수행하기 때문입니다.내가 도대체 ​​뭘 잘못하고있는 겁니까?

도움이 되었습니까?

해결책

이것은 해결 방법일 뿐이라는 것을 알고 있지만 원거리 점과 보기 위치만 사용하여 근거리 평면 점을 추론할 수 있습니다.

near_point = view_position
           + (far_point - view_position) * (near_distance / far_distance)

당신에 관해서는 진짜 문제입니다.먼저, W로 나누는 것을 잊지 마세요!또한 투영 행렬에 따라 z=-1이 아닌 (x,y,0,1)을 시도해 보셨습니까?

near_point = worldview_inverse * (projection_inverse * vector)
near_point /= near_point.W
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top