[김재진] 카메라 시점 자동 설정

Programming/DirectX 2010. 7. 6. 17:01 Posted by 알 수 없는 사용자

카메라 시점 자동 설정(강제적으로 카메라를 Object를 바라 보도록 설정하기위한 방법)



Y값과 Z값은 0.1f 이상이어야 한다.
D3DXVECTOR3 DA = D3DXVECTOR3(0.0f, 0.1f, 0.0f); // Object 위치정보를 저장한 Vector Y값
m_fXAngle = D3DXVec3Dot(&DA, &m_vCameraPos);
zDA = D3DXVECTOR3(0.1f, 0.0f, 0.0f);                     // Object 위치정보를 저장한 Vector X값
m_fYAngle = -D3DXVec3Dot(&m_vCameraPos, &DA);

// D3DXToDegree : 값
// D3DXToRadian : 각도
// 회전값을 저장한 Quaternion변수에 Rotation값을 저장
D3DXQuaternionRotationYawPitchRoll( &m_qRotation
                                                     , D3DXToRadian(m_fYAngle)
                                                     , D3DXToRadian(m_fXAngle)
                                                     , 0.0f);
   

// 회전과 이동을 곱한 것을 m_qRotation을 행렬변수인 m_matOrientation로 변경
D3DXMatrixAffineTransformation(&m_matOrientation, 1.0f, NULL, &m_qRotation, &m_vCameraPos);

/* m_matOrientation을 m_matView에 반대값을 입력
    (카메라가 움직이는것이 아닌 월드행렬이 움직이는 것이기 때문에) */
D3DXMatrixInverse( &m_matView, NULL, &m_matOrientation );

단, 카메라의 위치가 Z축이 0.001보다 낮다면 X와 Y값의 변경 가중치 값을 변경해야 한다.
(0.5f 이상 변경해야함)

문제점 많은 오브젝트 시점 바라보게 만드는 코딩임...
해결할 사람 ㄱㄱㄱㄱ