我已经读过一些文章,甚至在堆栈溢出中也有问题。我没有找到想要的东西。我可能没有仔细看过,因此,如果您知道我的观点,请指出我纠正的文章/问题。
无论如何,我想做的很清楚。我知道相机的位置(x',y',z'),并且具有相机旋转矩阵(Matrix3)。我也有相机的宽高比(W / H)和输出尺寸(W,H)。我的POINT位于(x,y,z),我想要一个代码或(一个算法,因此我可以编写代码)来计算其在屏幕上的位置(屏幕的大小与相机输出的大小相同)为(x'',y ”)。
您知道任何有用的文章吗?对于支持相机旋转矩阵的文章或算法,我很重要。
谢谢你们。
好,您需要先指定投影类型(正交,透视...?)
将任何点转换(x,y,z)
为相机空间
减去摄像机位置,然后应用摄像机方向(坐标系)矩阵的逆矩阵。Z
相机的轴通常是观看方向。如果您使用4x4均匀矩阵,则减法已经在其中,因此不要重复两次!
应用投影
正交投影只是比例矩阵。透视投影更为复杂,因此请使用google搜索。这是应用纵横比以及FOV(视野)视角的地方。
剪辑到屏幕和Z缓冲区空间
现在您已经拥有x,y,z
了预计的相机空间。要实际获取具有透视图的屏幕坐标,您必须除以z
或w
坐标(取决于所使用的数学和投影),因此对于3x3矩阵
xscr=x/z;
yscr=y/z;
这就是为什么z-near的投影必须是> 0
!(否则可能导致被零除)
渲染或处理像素 (x,y)
有关更多信息,请参见:数学计算简单的图形管道
[笔记]
如果您查看OpenGL教程/参考或任何用于渲染的3D矢量数学,您会发现很多东西。Google均匀变换矩阵或均匀坐标。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句