|
发表于 2009-8-16 20:24:00
|
显示全部楼层
Re:初学者问:如何实现点下目标对象,视角进行变换?
主要用到的函数也就一下两个:
D3DXMatirxRotationAxis(D3DXMATRIX* pOut, CONST D3DXVECTOR3* pV, FLOAT Angle);
D3DXVec3TransformCoord(D3DXVECTOR3* pOut, CONST D3DXVECTOR3* pV, CONST D3DXMATRIX* pM);
给你一份第一种方法的代码吧:
//获得摄像机的观察方向
D3DXVECTOR3 lookDir = pAt - pEye;
D3DXMATRIX matRotation1, matRotation2, matTranslation;
//按摄像机观察方向旋转45°
D3DXMatrixRotationAxis(&matRotation1, &lookDir, D3DX_PI / 4.0f);
//按摄像机的UP方向旋转-45°
D3DXMatrixRotationAxis(&matRotation2, &pUp, -D3DX_PI / 4.0f);
//按摄像机观察方向的负方向进行平移
float delta = 0.5f; //根据你的需求自己定
D3DXVECTOR3 translation = -delta * lookDir;
D3DXMatrixTranslation(&matTranslation, translation.x, translation.y, translation.z);
//获得模型的世界矩阵
D3DXMATRIX matWorld;
m_Device->GetTransform(D3DTS_WORLD, &matWorld);
//旋转
matWorld *= matRotation1 * matRotation2 * matTranslation;
m_Device->SetTransform(D3DTS_WORLD, &matWorld);
//接下来就是模型绘制了 |
|