摄像机

来源:互联网 发布:淘宝店铺头像去哪改 编辑:程序博客网 时间:2024/06/11 19:43

Directx c++实现一个灵活的第三人称camera(角色跟随)

class CameraClass
{
private:
    //成员变量的声明
    D3DXVECTOR3                m_vRightVector;        // 右分量向量
    D3DXVECTOR3                m_vUpVector;           // 上分量向量
    D3DXVECTOR3                m_vLookVector;         // 观察方向向量
    D3DXVECTOR3                m_vCameraPosition;        // 摄像机位置的向量
    D3DXVECTOR3                m_vTargetPosition;        //目标观察位置的向量
    D3DXMATRIX                m_matView;          // 取景变换矩阵
    D3DXMATRIX                m_matProj;          // 投影变换矩阵   
    LPDIRECT3DDEVICE9        m_pd3dDevice;  //Direct3D设备对象


    D3DXVECTOR3        m_vNewXAxis;
    D3DXVECTOR3        m_vNewZAxis;


public:
    //一个计算取景变换的函数
    VOID CalculateViewMatrix(D3DXMATRIX *pMatrix);    //计算取景变换矩阵


    //三个Get系列函数
    VOID GetProjMatrix(D3DXMATRIX *pMatrix)  { *pMatrix = m_matProj; }  //返回当前投影矩阵
    VOID GetCameraPosition(D3DXVECTOR3 *pVector)  { *pVector = m_vCameraPosition; } //返回当前摄像机位置矩阵
    VOID GetLookVector(D3DXVECTOR3 *pVector) { *pVector = m_vLookVector; }  //返回当前的观察矩阵


    //四个Set系列函数,注意他们参数都有默认值NULL的,调用时不写参数也可以
    VOID SetTargetPosition(D3DXVECTOR3 *pLookat = NULL);  //设置摄像机的目标观察位置向量
    VOID SetCameraPosition(D3DXVECTOR3 *pVector = NULL); //设置摄像机所在的位置向量
    VOID SetViewMatrix(D3DXMATRIX *pMatrix = NULL);  //设置取景变换矩阵
    VOID SetProjMatrix(D3DXMATRIX *pMatrix = NULL);  //设置投影变换矩阵
    void ThirdPersonRotationX(float angle);//第三人称摄像头绕右分量向量旋转
    void ThirdPersonRotationY(float angle);//第三人称摄像头绕上分量向量旋转


public:
    // 沿各分量平移的三个函数
    VOID MoveAlongRightVec(FLOAT fUnits);   // 沿right向量移动
    VOID MoveAlongUpVec(FLOAT fUnits);      // 沿up向量移动
    VOID MoveAlongLookVec(FLOAT fUnits);    // 沿look向量移动


    // 绕各分量旋转的三个函数
    VOID RotationRightVec(FLOAT fAngle);    // 绕right向量旋转
    VOID RotationUpVec(FLOAT fAngle);       // 绕up向量旋转
    VOID RotationLookVec(FLOAT fAngle);     // 绕look向量旋转


    //返回一个


public:
    //构造函数和析构函数
    CameraClass(IDirect3DDevice9 *pd3dDevice);  //构造函数
    virtual ~CameraClass(void); 

http://www.cnblogs.com/shit/archive/2013/05/13/3075825.html


0 0
原创粉丝点击