반응형

D3DXMatrixOrthoLH( &m_ProjectionTM,m_width,m_height,m_zn,m_zf );

 

이처럼 직교투영을 설정한후

 

윈도우 사이즈인 width , height 의 비(aspect)에 맞게 m_height, m_width 를 증가시켜준다, 혹은 감소

 

 

 

 

직교투영 픽킹시에는 윈도우 에 맞게 픽킹이 되려면 화면좌표에서 카메라 좌표까지 변환할때 다음과 같이 처리해주면 된다

 

D3DXVECTOR3 WindowVector= D3DXVECTOR3(0.0f,0.0f,0.0f);

 

// 화면좌표에서 투영좌표로

     WindowVector.x = ((  ((float(Pt.x)*2.0f/width ) - 1.0f)) );

     WindowVector.y = (( -((float(Pt.y)*2.0f/height) - 1.0f)) );

  * 여기서 화면 사이즈 width, height

  -> -1 ~ 1 사이로 변환 한다

  

 

 

카메라까지 지나온점 Pc 라 정의하면 다음과 같이 투영좌표에서 카메라 좌표로 변환된 식을 얻을 수 있다

 

Pc * 투영행렬 * 화면좌표계행렬 = p`   을

Pc 에 대하여 푼다

 

이것에 대한 소스는 다음과 같다

 

// 투영좌표에서 카메라 좌표로 변환
     WindowVector.x = (WindowVector.x  - ProjectionTM->_14) / ProjectionTM->_11;
     WindowVector.y = (WindowVector.y  - ProjectionTM->_24) / ProjectionTM->_22;

 

 

출처 :  http://www.cyworld.com/sjh0628


반응형

'수학 (Mathematics) > 3D수학' 카테고리의 다른 글

에르미트  (0) 2012.11.02
Z-Fighting  (0) 2012.11.02
폴리곤중간의 텍스처 좌표 구하기  (0) 2012.11.02
[D3DX] Vertex Normal  (0) 2012.11.02
Directx Aspect 비율  (0) 2012.11.02

+ Recent posts