안녕하세요. Zeprod님의 빠른강의에 발맞추기 위하여 다시금 올립니다 -_-;; 이거 아는것도없는데 ㅠ.ㅠ
오늘은 카메라에 대해 알아보겠습니다.
카메라는 사람의 눈과 똑같습니다. 다만 다르게도 설정할수있지요.
사람의 눈의 시야 범위가 부채꼴 모양으로 생겼지요.
\ /
\ 범위 /
\ /
\ /
\ /
눈
요래~ 요래~ 생겼지요. 카메라도 마찬가지입니다.
\ 최대범위 /
\ /
\ /
\ /
\ /
최소범위
모니터
모니터에 보이는 화면은 최소범위부터 최대범위까지입니다.
최소범위는 대부분 1.0f기준이며 최대범위는 설정 나름입니다. 최소범위조차도 정해줄수있습니다.
자그럼 본론으로 들어가지요.
VOID SetupMatrices( void )
{
D3DXMATRIX matView, matProj, matLocal;
D3DXMatrixLookAtLH( &matView,
&D3DXVECTOR3( Eye.x, Eye.y, Eye.z ), //관찰자의 눈 위치
&D3DXVECTOR3( Look.x, Look.y, Look.z), //관찰자가 쳐다 보는 위치
&D3DXVECTOR3( Up.x, Up.y, Up.z ) ); //카메라의 윗방향 설정
// 뷰 변환
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
// 프로젝션 변환
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.333333f, 1.0f, 500.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
}
화면의 카메라 지점을 설정햊는 것입니다. 짧지요? 이것만 설정해도 DirectX기초 카메라 설정은 끝납니다.
D3DXMatrixLookAtLH( &matView,
&D3DXVECTOR3( Eye.x, Eye.y, Eye.z ), //관찰자의 눈 위치
&D3DXVECTOR3( Look.x, Look.y, Look.z), //관찰자가 쳐다 보는 위치
&D3DXVECTOR3( Up.x, Up.y, Up.z ) ); //카메라의 윗방향 설정
matView에 카메라위치값을 설정해줍니다.
카메라의 위치가 어디이며 쳐다보는곳 그리고 어느정도 위에있는지를 설정해서 matView에 모든계산을 해서 넣어줍니다.
자세히 파고들어가면 한도끝도없으니 그냥 넘어가겠습니다.
뷰 변환
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView ); 셋팅한값을 생성해줍니다. 워우!!
/ 프로젝션 변환
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.333333f, 1.0f, 500.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
이건 화면 비율을 설정합니다.
D3DX_PI/4는 각도설정입니다. 시야의 좌우 각도를 설정해줍니다.
1.33333333f는 화면의 좌우 비율입니다. 4:3비율이기때문에 1.33333333f입니다. 와이드모니터가 없는 시절에는 1.3333333f를 그대로 썼지만 와이드모니터환경을 지원하느냐에 따라서 16:9가될수도 16:10이될수도있씁니다.
1.0f 화면에 최소범위입니다. 카메라와 대상체의 거리가 1.0f이하라면 화면에 찍히지 않습니다.
500.0f최대 화면 범위입니다. 카메라와 대상체의 거리가 500.0f이상이라면 화면에 찍히지 않습니다.
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj ); 셋팅한값을 생성합니다~
자 이렇게 설정하시면 셋팅한 값에 따라 화면이 적용됩니다.
자 쉽죠?
-_-;;