光线拾取方向计算不正确
Ray picking direction not calculating correctly
我有以下函数代码:
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;
}
我正在尝试根据用户在我的 DirectX 3D 应用中单击的 x 和 y 屏幕点计算和创建定向光线。到目前为止,打印的结果似乎表明我的计算是错误的,因为 Z 值总是在 0.9 左右,我不知道为什么。我到底做错了什么?请帮忙。谢谢
我认为你的逆矩阵计算是倒退的。
D3DXMATRIX inversedMatrix = invProjMatrix * invViewMatrix;
相关文章:
- 正弦级数方程计算不正确
- 计算幂级数的数学结果不正确
- 我的程序中的值计算不正确,即使支持数学是正确的
- 编译器在构造函数中计算的成员偏移量不正确
- 堆排序它不起作用或计算不正确
- 计算不正确
- C :不正确的文件大小计算Winapi
- 为什么此 stl 函数调用会导致不正确的布尔计算
- 平均计算不正确
- 斐波那契函数计算不正确
- 光线拾取方向计算不正确
- 为什么skb_transport_header计算不正确
- 逻辑错误:平均质心计算不正确,无限执行,'entries '函数 - K 表示一组点的聚类,以C++为单位
- 字符/int相等计算不正确
- C 加加计算不正确
- if-else 语句中的条件计算不正确
- CRC32计算不正确
- C++使用std::accumulate计算不正确的标准差
- 阴影贴图的纹理坐标计算不正确
- 这种情况似乎不起作用。(while (dAmount != (2*dbAmount)))此外,第一次计算不正确 o.O