DirectX 3D/DirectX92016. 8. 21. 21:37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void CustomLookAtLH( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pEye, CONST D3DXVECTOR3 *pAt, CONST D3DXVECTOR3 *pUp )
{
    //*pOut : 출력될 결과물(행렬)
    //*pEye : 월드 내에서의 카메라의 현재 위치 행렬
    //*pAt  : 월드 내에서의 카메라가 바라보고 있는 한 지점(한 정점이라고 생각하면 된다.)
    //*pUp  : 월드의 업벡터
    D3DXVECTOR3 xAxis;        //x축 벡터 정의
    D3DXVECTOR3 yAxis;        //y축 벡터 정의
    D3DXVECTOR3 zAxis;        //z축 벡터 정의
 
    zAxis = *pAt - *pEye;
    //z축 = 카메라가 바라보는 지점 - 카메라의 위치
    D3DXVec3Normalize(&xAxis, &xAxis);
    //x축 벡터 단위화
    D3DXVec3Normalize(&zAxis, &zAxis);
    //z축 벡터 단위화
    D3DXVec3Cross(&xAxis, pUp, &zAxis);
    //x축 결과 리턴 = 업벡터 X(외적) z축 
    D3DXVec3Cross(&yAxis, &zAxis, &xAxis);
    //y축 결과 리턴 = z축 X(외적) x축
    *pOut = D3DXMATRIX(                //리턴할 결과물 (행렬)
        xAxis.x,                      yAxis.x,                        zAxis.x,                    0,
        xAxis.y,                      yAxis.y,                        zAxis.y,                    0,
        xAxis.z,                      yAxis.z,                        zAxis.z,                    0,
        -D3DXVec3Dot(&xAxis, pEye),   -D3DXVec3Dot(&yAxis, pEye),   -D3DXVec3Dot(&zAxis, pEye), 1
        );
}
 
cs
Posted by 멜데스