2011-03-27 7 views
0

저는 3D 플래시 게임을 개발 중입니다. 제 질문은 매우 간단합니다.투시 투영 공식 문제

3D 포인트를 2D 포인트로 변환하는 방법? I는 (카메라를 원점에 위치된다)

  1. X '= X/ZY'= Y/z
  2. 비 = 초점 거리/(focallength + z)
    인터넷에 다음 식을 찾았

    X = X * 비율
    Y = Y *의 비율이 식 내게 Z 미만 제로 (Z < 0)

    01 이상이다 결과를 제공

하지만 당신은 내가

가 어떻게이 문제를 해결할 수있는 차원 차원에서 B 지점으로 변환 할 때이 방정식은 정말 이상한 결과를 제공 볼 수 있듯이 , 23,516,

나는 B (-100 100100)로 A (100,100,100)에서 라인을 구축 할 필요 ?

답변

3

z = 0 일 때의 의미를 고려하십시오. 이것은 x/0을 수행하고 있다는 것을 의미합니다.이 경우에는 포인트가 카메라와 동일한 위치를 차지합니다. 그리고 z가 작아짐에 따라 점이 카메라 뒤쪽에 있다는 의미이므로 전혀 렌더링하지 말아야합니다.

'화면 뒤쪽'에있는 점을 추려 내야합니다 (렌더링하지 않음). 작은 z를 당신의 '가까운 평면', 예를 들어 z = 1로 선택하십시오. 잘못된 렌더링을 방지하려면이 z = 1 평면에 대해 모든 지오메트리를 잘라야합니다.

포인트의 경우 point.z < 1을 확인할 수 있습니다. 선의 경우, 더 복잡합니다. 선의 z = 1 평면과의 교점을 계산하고 필요한 경우 클립해야합니다.

라인 클리핑에 대한 정보는 here입니다.