게임수학책을 보면서 행렬을 공부하다가
이것 저것 현재 벡터와 행렬 클래스를 만들어보면서 해골책의 행렬부분에 적용을 하고있는데
투영부분에서 약간 애먹은 부분이 있어서 다른분들에게 도움이 되고자 글을씁니다.

직교투영(Orthographic Projection)
사용자 삽입 이미지
직교 투영을 할려면 DX9 함수로 D3DXMatrixOrthoLH 라는 함수를 사용합니다.
이함수는 밑의 값을 리턴값으로 반환해줍니다.
2/w           0               0              0
0             2/h              0              0
0               0         1/(zf-zn)         0
0               0       -zn/(zn-zn)        1

레퍼런스엔 조금 다른식으로 설명되있습니다만, 레퍼런스에 있는대로 하면않되길래 책보며 했습니다.
@대부분의 서적과 자료에는  _33이 1이고 _44가 0인데 실제론 _33이 0이고 _44가 1이더라구요
실제로했을때만 정상 처리되고 _33을 1주고 _44를 0줬을땐 프로젝션이 제대로않된것같습니다.
(*잘못된점있다면 댓글 부탁드립니다.)


원근투영(Orthographic Projection)



사용자 삽입 이미지
원근투영은 DX9에서 D3DXMatrixPerspectiveFovLH 라는 함수를 사용한다.
리턴값으로 밑의 값을 리턴한다.
w             0               0                 0
0               h              0                 0
0               0         zf/(zf-zn)          0
0               0       -zn*zf/(zf-zn)      1

w와 h값은 아래의 값을 넣어주면됩니다.
w = h / Aspect;
h = cot(fovY/2);
- Aspect는 뷰포트의 가로/세로비이구요.
-cot의 함수가 없던데 cot는 tan의 역함수이니 1/tan(fovY/2) 해주면됩니다.
[##_kaAmo_##]
Posted by 랜스.

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다


Leave your greetings here.

: 1 : 2 : 3 : 4 : 5 :