D3D 渲染X模型之后,发现模型会跟着视点的移动而移动,求解.
为了标记X模型的渲染位置和缩放比例,做了如下矩阵变换:
- C/C++ code
modelSite=XModelProScript->GetVariableAsVector("TreeSite"); //获取树的坐标 D3DXMatrixTranslation(&modelWorldMatrixSite,modelSite.x,modelSite.y,modelSite.z); modelSize=XModelProScript->GetVariableAsVector("TreeSize"); //取树的位置 D3DXMatrixScaling(&modelWorldMatrixSize,modelSize.x,modelSize.y,modelSize.z); modelWorldMatrix=modelWorldMatrixSize*modelWorldMatrixSite; g_D3DDevice->SetTransform(D3DTS_WORLD,&modelWorldMatrix); cxmodel[1]->Render(g_D3DDevice); //渲染
而摄像机每次移动的变换为:
- C/C++ code
D3DXMATRIX V; ccamera->getViewMatrix(&V); g_D3DDevice->SetTransform(D3DTS_VIEW, &V);
现在遇到的问题是,每次摄像机移动,模型却也跟着移动了,求解...
[解决办法]
这个是什么意思
float x = -D3DXVec3Dot(&_right, &_pos);
float y = -D3DXVec3Dot(&_up, &_pos);
float z = -D3DXVec3Dot(&_look, &_pos);
view矩阵中,xyz应该是相机在世界坐标的位置