我是 Vulkan 初學者,以前從未使用過 3D 圖形。所以,我想將一個物件移動到我用游標單擊的地方。我在 stackoverflow 和 reddit 上找到了一些主題。我的實作:
int width, height;
glfwGetWindowSize(gWindow, &width, &height);
double x_ndc = (2.0 * x / width) - 1;
double y_ndc = (2.0 * y / height) - 1;
glm::mat4 viewProjectionInverse = glm::inverse(m_activeCam.m_projectionMatrix * m_activeCam.m_viewMatrix);
glm::vec4 worldSpacePosition(x_ndc, y_ndc, 0.0f, 1.0f);
auto world = viewProjectionInverse * worldSpacePosition;
m_objects[0].transform.position.x = world.x * abs(m_activeCam.mPosition.z);
m_objects[0].transform.position.y = world.y * abs(m_activeCam.mPosition.z);
在我看到的示例中,世界坐標是在沒有乘數的情況下計算的abs(m_activeCam.mPosition.z),但是我想要移動的物件幾乎沒有移動。如果我添加一個乘數,它會按預期作業。你能解釋一下為什么我需要添加這個乘數嗎?
m_activeCam.mPosition.z是與相機的距離。

uj5u.com熱心網友回復:
當您將它們用作 3D 坐標而不是仿射時,您可能需要重新劃分您的和world.x。world.yworld.w
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/516806.html
上一篇:添加尾隨零以動態匹配精度
