【发布时间】:2012-01-08 14:45:42
【问题描述】:
我正在使用 glm 数学库来解决以下问题:将 2d 屏幕位置转换为 3d 世界空间。
为了追查问题,我将代码简化为以下内容:
float screenW = 800.0f;
float screenH = 600.0f;
glm::vec4 viewport = glm::vec4(0.0f, 0.0f, screenW, screenH);
glm::mat4 tmpView(1.0f);
glm::mat4 tmpProj = glm::perspective( 90.0f, screenW/screenH, 0.1f, 100000.0f);
glm::vec3 screenPos = glm::vec3(0.0f, 0.0f, 1.0f);
glm::vec3 worldPos = glm::unProject(screenPos, tmpView, tmpProj, viewport);
现在使用 glm::unProject 在这种情况下,我希望 worldPos 为 (0, 0, 1)。但是它以 (127100.12, -95325.094, -95325.094) 的形式出现。
我是否误解了 glm::unProject 应该做什么?我已经跟踪了这个函数,它似乎工作正常。
【问题讨论】:
-
嗨。我对 glm::unProject 也有一些问题。我已经尝试过你的测试代码(复制粘贴它),对我来说 worldPos 是(-215677、-161758、-99864.4)知道为什么吗???