|
|
我想在3维的场景中用鼠标点击来实现人物的精确走动到某一个点,但是我现在从鼠标的2维坐标到3维场景坐标的转换有错误。下面是我的源代码。大哥大姐给我看看方法是否正确,是哪里有错误!
GetCursorPos(&pt);
ScreenToClient( hWnd, &pt );
D3DXMATRIXA16 matProj,matView,matWorld;
g_pd3dDevice->GetTransform( D3DTS_PROJECTION, &matProj );
g_pd3dDevice->GetTransform( D3DTS_VIEW, &matView );
g_pd3dDevice->GetTransform( D3DTS_WORLD, &matWorld );
D3DVIEWPORT9 viewPort;
g_pd3dDevice->GetViewport(&viewPort);
ScreenToClient( hWnd, &pt );
D3DXVECTOR3 vScreen((float)pt.x,(float)pt.y,0.0f),vOut;
D3DXVec3Unproject(&vOut,&vScreen,&viewPort,&matProj,&matView,&matWorld);
D3DXPLANE plane;
D3DXVECTOR3 v1(1.0f,0.0f,1.0f);
D3DXVECTOR3 v2(-1.0f,0.0f,1.0f);
D3DXVECTOR3 v3(-1.0f,0.0f,-1.0f);
D3DXPlaneFromPoints( &plane, &v1, &v2, &v3 );
D3DXPlaneIntersectLine( &vMousePt, &plane, &vEyePt, &vOut);
vMousePt 是最后转换出来的3维向量!
|
|