1
我有以下功能代码:雷采摘方向不正确计算
D3DXVECTOR3 Mouse::GetClickDirection(D3DXMATRIX projMatrix, D3DXMATRIX viewMatrix, D3DXVECTOR3 cameraPosition)
{
POINT mousePoint;
GetCursorPos(&mousePoint);
ScreenToClient(hwnd, &mousePoint);
float x = ((mousePoint.x * 2.0f)/(float)backBufferWidth) - 1.0f;
float y = ((mousePoint.y * -2.0f)/(float)backBufferHeight) + 1.0f;
D3DXVECTOR3 mouseClip = D3DXVECTOR3(x, y, 1.0f);
D3DXMATRIX invViewMatrix;
D3DXMatrixInverse(&invViewMatrix, 0, &viewMatrix);
D3DXMATRIX invProjMatrix;
D3DXMatrixInverse(&invProjMatrix, 0, &projMatrix);
D3DXMATRIX inversedMatrix = invViewMatrix * invProjMatrix;
D3DXVECTOR3 mouseWorldSpace;
D3DXVec3TransformCoord(&mouseWorldSpace, &mouseClip, &inversedMatrix);
D3DXVECTOR3 direction = mouseWorldSpace - cameraPosition;
D3DXVec3Normalize(&direction, &direction);
system("CLS");
std::cout << "sX: " << x << std::endl;
std::cout << "sY: " << y << std::endl;
std::cout << "X: " << direction.x << std::endl;
std::cout << "Y: " << direction.y << std::endl;
std::cout << "Z: " << direction.z << std::endl;
return direction;
}
我试图根据x和y的屏幕一点上,用户点击了在计算和创建一个定向光线我DirectX 3D应用程序。到目前为止,印刷的结果似乎表明我的计算是错误的,因为Z值总是在0.9左右,我不知道为什么。我在这里做错了什么?请帮忙。谢谢
你知道,还有就是[D3DXVec3Unproject功能(http://msdn.microsoft.com/en-us/library/windows/desktop/bb205526(V = vs.85)的.aspx),做基本上这个? –