我有世界三维坐标[3D_x, 3D_y, 3D_z]
,我想用透视投影投影到屏幕坐标[screen_x, screen_y]
。我还需要一个相机视图,经过一些研究,我明白这是一个观察矩阵。我知道以下值:
screen = [screen_width, screen_height]
Camera_Coordinates = [cx, cy, cz]
Target_Coordinates = [0,0,0]
最后我有一个三维坐标[3D_x, 3D_y, 3D_z]
,透视投影矩阵,视图矩阵
我错过什么了吗?如果不是,我应该以什么顺序将上述数据相乘以获得最终屏幕坐标[screen_x, screen_y]
?在
你好像少了几步。 事实上,你需要根据你的相机旋转和位置计算出一个世界的视角矩阵,然后将你的世界视图矩阵乘以投影矩阵得到变换矩阵,然后你必须乘以世界坐标才能得到“视野”坐标。 然后,您必须使用以下公式(我使用的公式)将获得的坐标投影到屏幕(2D)空间:
我知道我的方法还远远不够完美(我正在寻找更好的方法来实现这一点),而且我在这个过程中丢弃了一些矩阵乘法,但我自己找到了它,而且它正在工作。;-) 而且,你不需要一个lookat_矩阵,但它可以非常有用(例如,它可以用于背面剔除)
相关问题 更多 >
编程相关推荐