번호 원본에 따르면 NDC는 W 구성 요소에 의한 분할 후 단지 클립 공간이라는 점에서 클립 공간과 다릅니다. 프리 머 티브는 OpenGL에서 X, Y 및 Z 축을 따라 -1 대 1 인 클립 공간에서 잘립니다 (편집 : 잘못되었습니다, 응답 참조). 즉, 클립 공간은 큐브입니다. 이 큐브 내에서 클리핑이 수행됩니다. 안쪽에 떨어지면 눈에 보이고 바깥쪽에 있으면 눈에 보이지 않습니다.원근법 설명?
이 간단한 예제를 살펴 보겠습니다. 뷰잉 절두체의 위에서 아래로, 음의 Y 축을 보았습니다. HALFFOV는 45도이며 NEAR과 RIGHT가 모두 동일합니다 (이 경우 길이 2). 예제 포인트는 (6, 0, -7)입니다.
이제 여기 원근 투영 매트릭스이다 : 우리는 (1)의 애스펙트 비를 사용할 것이다 편의상
1. 그래서 :
RIGHT = 2
LEFT = -2
TOP = 2
BOTTOM = -2
NEAR = 2
FAR = 8
우리의 투영 행렬을 얻을 그래서 우리의 가치에 작성 : 이제 우리는했다 우리 지점에 균일 W 추가
을 (6, 0, -7) get (6, 0, -7, 1)을 얻는다.
이제 행렬에 점을 곱해 (6, 0, 6.29, 7)이됩니다. 이 시점 (투영 행렬을 곱한 후의 점이 "클립 공간"에 있다고 가정 함)이 단계에서 클리핑 큐브의 내부 또는 외부에 점이 있는지 여부를 알아 내고,
나는 그것이 위와 같이 보이는 클리핑은,이 단계에서 수행되는 본 적이 소스에서W.로 나누어 전에 : 그것은 "클립 공간"에서의 모습 W.과 부문은 여기입니다 지금 W로 나눈다면, 포인트는 클립 스페이스 큐브의 오른쪽 영역에서 끝납니다. 그래서 내가 왜 모든 사람들이 클리핑 공간 이후에 투시 분할이 수행된다고 말하는지 이해하지 못합니다.이 공간에서, 투시 분할 전에 그 지점은 완전히 바깥에 자리 잡고 있으며 클리핑 공간 밖에서 볼 수없고 보이지도 않습니다. 그러나 W에 의해 관점 분할, 분할 후, 여기 보이는 방법입니다
이제 점은 클립 공간 큐브 내에있는, 내부로 판단 할 수 있으며, 눈에 보이는. 이것이 클리핑 전에 공간 분할이 완료되었다고 생각하는 이유입니다. 왜냐하면 클리핑 공간이 각 축에서 -1에서 +1까지이고 클리핑 스테이지가이 차원에 대해 검사를 수행하기 때문에이 큐브 안에있는 점이 이미 분할을 거쳐야하기 때문입니다 그렇지 않으면 거의 모든 점은 클리핑 공간 큐브 바깥에 놓이며 절대 보이지 않습니다.왜 모든 사람들은 투영 매트릭스의 결과 인 클리핑 공간이 온다고 말하면서 NDC를 초래하는 원근법 분할 (W로 나누기)가 있습니까?
가능한 복제 (https://stackoverflow.com/questions/6111721/understanding-the-projection-matrix) –
나는 그 질문 자체에서 많은 것을 배웠다. –