2009-10-08 4 views
2

저는 매우 일반적인 질문이 있습니다. 나는 약 300 점 (x, y, z)을 갖는 30-50 개의 닫힌 다각형 (z)를 포함하는 다수의 객체의 경계 점을 결정하고자한다. x, y 및 z 축 (알파, 베타, 감마)에 대해 폴리곤 좌표계의 원점을 중심으로 회전하는 고정 뷰포트로 작업하고 있습니다.원근 투영 대 레이 트레이싱/레이 캐스팅의 효율성

두 가지 가능성이 있습니다. 투시 투영 또는 광선 추적입니다. 투시 투영은 뷰포트 내부 또는 외부에 위치를 결정하기 위해 각 점에 대해 많은 수의 행렬 작업이 필요합니다. 또는 많은 수의 포인트가 주어진다면 뷰포트 픽셀을 대상으로 광선 추적하는 것이 좋습니다. 교차점이 존재하는지의 여부를 판정하고, 오브젝트가 존재하는지의 여부를 판정한다. 어느 경우 제가

이 기대 부탁드립니다 뷰포트 나타내는 200x200 크기의 정수 행렬 (내부) (외부)은 0 또는 1로서,이 결과를 기록 할

답변

6

투시 투영 (다음에 다각형 변환 스캔 이미지 좌표)는 로 더 빨라질 것입니다.

원근 투영 (기본적으로 세계 대 카메라 행렬)에 필요한 행렬 변환은 광선 추적 할 때 정확히 같은 방식으로 필요합니다. 그러나 투시 투영에서는 코너 포인트 만 변환하는 반면 광선 추적에서는 모두 이미지의 점을 변형합니다.

+0

감사를 찾을 수 있습니다 : 난 아직도 somehow- 아마도 수직 최대 거리를 "코너 포인트"의 하위 집합을 결정해야하지만 "카메라 렌즈 "축? –

+0

"코너 포인트"로, 나는 다각형의 정점을 의미합니다. 귀하의 다각형이 정점 목록에 의해 정의되었다고 가정합니다. (그렇지 않은 경우, 어떻게 다각형을 정의합니까?) 다각형에 투시 투영을 수행하려면 꼭지점을 투영하는 것으로 충분합니다. 투시 투영법은 항상 공간상의 직선을 이미지의 직선으로 매핑하기 때문입니다. –

+0

그 꼭지점이 50 * 300 (x, y, z) 점인지 확인하십시오. 다시 한 번 감사드립니다! –

0

원근 투영과 원근 투영 행렬을 사용하여 화면 공간에서 정점의 위치를 ​​계산할 수 있어야합니까? 당신이 정말로하고 싶은 것을 이해하는 것은 어렵습니다. 해당 3D 장면의 이미지를 만들고 다각형을 약간만 사용하여 코드를 최적화하면 레이 트레이싱과 래스터 화간에 차이가 발생하기 쉽습니다 (레이 트레이싱 접근법에 대한 가속 구조를 사용해야합니다.), 네 래스터 화는 어쨌든 더 빨라질 수 있습니다.

이제 눈 (카메라의 원점)과 카메라의 시점을 통해 보이는 지오메트리 사이의 거리를 계산해야하는 경우, 어떤 샘플에 대해서도 깊이 값을 사용할 수없는 이유는 알 수 없습니다. 픽셀을 사용하고 원근 투영 행렬의 역함수를 사용하여 카메라 공간에서 거리를 찾습니다.

문제의 속도가 왜 빠른가요? 그렇지 않으면 참으로 RT를 사용하십시오.

이 정보의 대부분은 빠른 응답을 www.scratchapixel.com에