在我的OpenGL应用程序中,我创建了一个SkyBox,如果我从原点呈现它,它就会工作得很好。我用PVMatrix (ProjectionMatrix * ViewMatrix相机)渲染它,就像我说的,如果我从原点渲染它,一切都很好。但是如果我移动相机,比如说(0,6,-8),它不能工作,SkyBox被呈现为普通立方体。
我认为应该为SkyBox创建一个SkyBox,并将其中的位置设置为摄像机的位置,但这并没有帮助。当然,我现在用新的SkyBox呈现MVPMatrix。你知道为什么不起作用吗?我该怎么做才能让它起作用?
发布于 2015-01-28 11:02:42
一般来说,把天窗盒翻译成照相机应该会有效果。你检查过是否把它移到正确的位置了吗?
最常见的故障之一是,您将相机移向与您的对象相同的方向,这会导致该对象两次向错误的方向移动。为了解释这一点,让我们看看不同的坐标系:
每个模型都在自己的模型空间中定义。让我们称这个空间为M,使用模型矩阵(m),我们能够从模型空间转换到世界空间(W)。
M ---m---> W现在我们在场景中有了第二个物体,摄像机,它的视图空间V和摄像机模型矩阵c。
V ---c---> W但是,由于我们需要视野中的一切,而不是把相机带到世界空间,所以我们必须将这种转换转化成这样
W ---v---> V通常,这是由v = c^-1给出的,它是应用程序中指定的视图矩阵.从这一点出发,当视图矩阵包含到z=8的转换(因为T(8) = T(-8)^-1)时,应该非常清楚为什么要用z=-8移动对象。有关更多细节,请查看这份报告 (从幻灯片6开始)。
https://stackoverflow.com/questions/28188402
复制相似问题