【发布时间】:2021-06-08 18:03:09
【问题描述】:
对于个人项目,我使用尽可能少的库在 python 中创建了一个简单的 3D 引擎。我做了我想做的事——我能够渲染简单的多边形,并且有一个可移动的相机。但是,有一个问题:
我实现了一个简单的平面着色器,但为了让它工作,我需要知道相机的位置(相机是我的光源)。但是,问题是我无法知道相机在世界空间中的位置。在任何时候,我都可以显示我的视图矩阵,但我不确定如何从中提取相机的位置,尤其是在我旋转相机之后。这是我的引擎与视图矩阵的屏幕截图。相机尚未旋转,提取其位置(0、1、4)非常简单。
但是,在将相机移动到 X 轴和 Z 轴之间的点并将其指向上方(并保持相同高度)时,视图矩阵会变为:
现在很明显,不能直接取最后一列来确定相机位置(它应该是最后一张图片上的(4,1,4)之类的东西)。
我已经尝试了很多数学运算,但我无法弄清楚从视图矩阵中确定相机 x、y、z 位置的方法。我将感谢解决此问题的任何和所有帮助,因为这似乎是一个简单的问题,但我的解决方案却让我望而却步。谢谢。
编辑: 有人建议我通过我的视图矩阵转换一个顶点 (0,0,0,1)。但是,这不起作用。看例子(顶点显然不在打印的坐标处):
【问题讨论】:
标签: matrix graphics 3d vertices