我想做的就是创建一个视口,将三维平面正方形地图映射到二维透视图。
想象一下,看着一个完全平坦的田野。更远的地形块将向地面倾斜向内倾斜,并且看起来也会更短。
我已经做了很多关于如何正确地科学地做到这一点的研究,并且发现了这个:
http://en.wikipedia.org/wiki/Visual_angle
(除了这篇文章是2D。我希望它也能说明视口的“高度”或z维度)
有没有更简单的方法来做到这一点并创造真正的感知,而不是必须编程:
-3D射线/球体交叉点
- 球体上点到点的距离
我要问的是,是否存在一种更简单的方法将3D世界中的顶点映射到2D平面,同时保持透视变形?
非常感谢任何有用的文章或建议!
谢谢!
答案 0 :(得分:2)
执行此操作的标准方法是使用homogeneous coordinates和perspective projection矩阵。这根本不需要任何距离计算:每个顶点,它需要4x4矩阵乘法和除法来缩放最终的2D点。
并且,是的,它在科学和几何上是正确的,但我应该注意它假设一个平坦的,类似照相机的投影屏幕和理想的针孔式镜头。如果您想要一个基于“视角”的fisheye视图,最好的选择可能是添加barrel distortion作为后期处理....
你应该从一个介绍性的计算机图形文本开始,比如Alan Watt的 3D Computer Graphics 。一部较旧的“经典”作品是Foley,van Dam等人的计算机图形学:原理与实践