第八章 透视投影
- 格式:ppt
- 大小:16.92 MB
- 文档页数:137
透视投影透视投影是用中心投影法将形体投射到投影面上,从而获得的一种较为接近视觉效果的单面投影图。
它具消失感、距离感、相同大小的形体呈现出有规律的变化等一系列的透视特性,能逼真地反映形体的空间形象。
透视投影也称为透视图,简称透视。
在建筑设计过程中,透视图常用来表达设计对象的外貌,帮助设计构思,研究和比较建筑物的空间造型和立面处理,是建筑设计中重要的辅助图样。
透视投影符合人们心理习惯,即离视点近的物体大,离视点远的物体小,远到极点即为消失,成为灭点。
它的视景体类似于一个顶部和底部都被切除掉的棱椎,也就是棱台。
这个投影通常用于动画、视觉仿真以及其它许多具有真实性反映的方面。
在平行投影中,图形沿平行线变换到投影面上;对透视投影,图形沿收敛于某一点的直线变换到投影面上,此点称为投影中心,相当于观察点,也称为视点。
平行投影和透视投影区别在于透视投影的投影中心到投影面之间的距离是有限的,而平行投影的投影中心到投影面之间的距离是无限的。
当投影中心在无限远时,投影线互相平行,所以定义平行投影时,给出投影线的方向就可以了,而定义透视投影时,需要指定投影中心的具体位置平行投影保持物体的有关比例不变,这是三维绘图中产生比例图画的方法。
物体的各个面的精确视图可以由平行投影得到。
另一方面,透视投影不保持相关比例,但能够生成真实感视图。
对同样大小的物体,离投影面较远的物体比离投影面较近物体的投影图象要小,产生近大远小的效果.透视投影的原理和实现by Goncely摘要:透视投影是3D渲染的基本概念,也是3D程序设计的基础。
掌握透视投影的原理对于深入理解其他3D渲染管线具有重要作用。
本文详细介绍了透视投影的原理和算法实现,包括透视投影的标准模型、一般模型和屏幕坐标变换等,并通过VC实现了一个演示程序。
1 概述在计算机三维图像中,投影可以看作是一种将三维坐标变换为二维坐标的方法,常用到的有正交投影和透视投影。
正交投影多用于三维健模,透视投影则由于和人的视觉系统相似,多用于在二维平面中对三维世界的呈现。
透视投影详解概述投影变换完成的是如何将三维模型显示到二维视口上,这是一个三维到二维的过程。
你可以将投影变换看作是调整照相机的焦距,它模拟了为照相机选择镜头的过程。
投影变换是所有变换中最复杂的一个。
视锥体视锥体是一个三维体,他的位置和摄像机相关,视锥体的形状决定了模型如何从camera space投影到屏幕上。
最常见的投影类型-透视投影,使得离摄像机近的物体投影后较大,而离摄像机较远的物体投影后较小。
透视投影使用棱锥作为视锥体,摄像机位于棱锥的椎顶。
该棱锥被前后两个平面截断,形成一个棱台,叫做View Frustum,只有位于Frustum内部的模型才是可见的。
透视投影的目的透视投影的目的就是将上面的棱台转换为一个立方体(cuboid),转换后,棱台的前剪裁平面的右上角点变为立方体的前平面的中心(下图中弧线所示)。
由图可知,这个变换的过程是将棱台较小的部分放大,较大的部分缩小,以形成最终的立方体。
这就是投影变换会产生近大远小的效果的原因。
变换后的x坐标范围是[-1, 1],y坐标范围是[-1, 1],z坐标范围是[0, 1](OpenGL略有不同,z值范围是[-1, 1])。
透视投影矩阵推导下面来推导一下透视投影矩阵,这样我们就可以自己设置投影矩阵了,就可以模拟神奇的D3DXMatrixPerspectiveLH函数的功能了。
那么透视投影到底做了什么工作呢?这一部分算是个难点,无论是DX SDK的帮助文档,还是大多数图形学书籍,对此都是一带而过,很少有详细讨论的,早期的DX SDK文档还讨论的稍微多一些,而新近的文档则完全取消了投影矩阵的推导过程。
我们可以将整个投影过程分为两个部分,第一部分是从Frustum 内一点投影到近剪裁平面的过程,第二部分是由近剪裁平面缩放的过程。
假设Frustum内一点P(x,y,z)在近剪裁平面上的投影是P'(x',y',z'),而P'经过缩放后的最终坐标设为P''(x",y",z")。
透视投影估计测量长度
在透视投影中,由于远近物体的大小和距离的关系,物体在投影中呈现出透视效果,即距离观察者越远,物体看起来越小。
因此,在透视投影中估计测量长度时,需要考虑到透视效果对物体大小的影响。
一种常用的方法是使用比例关系。
首先,确定一个已知长度的参考物体(比如一根标尺),将其放置在与待测物体相同的平面上。
然后,根据参考物体在透视投影中的大小,估计待测物体在相同距离下应该显示的大小。
最后,通过比较两者的大小,可以推测出待测物体的长度。
另一种方法是使用测量工具。
现代数字图像处理软件或手机应用程序通常具有测量工具,可以准确测量透视投影中的长度。
使用这些工具,只需选择物体上的两个点,然后软件将根据透视效果自动计算出物体的真实长度。
无论使用哪种方法,都需要理解透视投影的特性及其对物体大小的影响,并根据具体情况进行适当的估测和计算。
透视投影的原理范文
透视投影是一种用于在平面上绘制出三维物体的方法。
它通过模拟人眼观察物体时的视觉效果,使二维图像能够呈现出立体感。
视点是观察者在观察物体时的位置。
在透视投影中,我们通常假设视点位于无限远处的一个点,这样可以确保物体投影的比例保持不变。
视线是从视点延伸出来的一条直线,它连接视点和物体上的点。
视线贯穿物体,决定了物体在投影平面上的位置。
投影平面是一个垂直于视线的平面,它是观察者和物体之间的分隔界面。
投影平面上的点被用来构建物体的投影。
投影点是物体上的点在投影平面上的映射。
投影点位于视线与投影平面的交点上,它的位置取决于物体的位置、视点和投影平面的相对位置。
第一步是确定视点和投影平面的位置。
观察者通常位于投影平面的正前方,而投影平面可以位于观察者的任意位置。
第二步是确定物体在投影平面上的位置。
可以通过选择物体上的一些点,并将它们沿着视线延伸到投影平面上来确定物体在投影平面上的投影点。
第三步是连接投影点,绘制出物体在投影平面上的轮廓。
通过连接相邻的投影点,可以绘制出物体的轮廓线。
第四步是绘制物体的内部细节。
通过在投影平面上的轮廓线上添加适当的细节,可以增加物体的立体感。
总之,透视投影的原理是通过模拟人眼观察物体时的视觉效果,将三维物体绘制在平面上,使二维图像具有立体感。
它基于视点、视线、投影
平面和投影点的概念,并通过确定视点和投影平面的位置,绘制出物体在投影平面上的轮廓和细节。
透视投影的原理可以通过几何学和数学方法来解释和计算。
成像的过程实质上是几个坐标系的转换。
首先空间中的一点由世界坐标系转换到摄像机坐标系,然后再将其投影到成像平面(图像物理坐标系),最后再将成像平面上的数据转换到图像平面(图像像素坐标系)。
1透视投影公式
1.1世界坐标系转摄像机坐标系
公式如下:
其中,R为旋转矩阵,T为平移矩阵,右侧矩阵是世界坐标系坐标点,左侧是摄像机坐标系坐标点。
R旋转矩阵表示的是摄像机在世界坐标系中绕X,Y,Z旋转的程度,平移矩阵表示的是摄像机在世界坐标系中里世界坐标原点的程度。
R矩阵为3*3的正交矩阵,T为3*1的矩阵。
绕x,y, z轴旋转的矩阵分别如下:
1.2 摄像机坐标系转图像物理坐标系公式如下:
f是焦距
1.3图像物理坐标系转图像像素坐标系
公式如下:
每个像素沿x轴的实际物理尺寸大小是dx,沿y轴的实际物理尺寸大小是dy,单位值毫米。
图像物理坐标系原点在图像像素坐标系中记为(u0,v0)
2.代码
3.逆映射相关
逆映射是将图像像素坐标系坐标点,提供已知的内外参数逆映射到真实世界坐标点。
3.1 像素坐标系到物理坐标系
internalMatrix是相机内参数,取其逆矩阵与像素坐标点相乘,得物理坐标点。
3.2 物理坐标到摄像机坐标
先求得焦距的矩阵,取其逆矩阵与物理坐标点相乘,再乘以缩放因子即可得摄像机坐标点(缩放因子目前不知,暂时全部设为250)3.3 摄像机坐标到真实坐标点
先求得旋转矩阵和平移矩阵,合并两个矩阵之后,取其逆矩阵,让该
逆矩阵与摄像机坐标点相乘,即可得真实世界坐标点。
透视投影透视投影最显著的特征就是透视缩短,物体距离照相机越远,它在最终图像中看上去就越小。
这是因为透视投影的视景体可以看成是一个金字塔的平截头体(顶部被一个平行于底面的平面截除)。
位于视景体之内的物体被投影到金字塔的顶点,也就是照相机或观察点的位置。
靠近观察点的物体看上去更大一些,因为和远处的物体相比,它们占据了视景体中相对较大的区域。
这种投影方法常用于动画、视觉模拟以及其他要求某种程度的现实感的应用领域,因为它和我们在日常生活中观察事物的方式相同。
glFrustum()函数定义了一个平截头体,它计算一个用于实现透视投影的矩阵,并把它与当前的投影矩阵(一般为单位矩阵)相乘。
记住,视景体用于裁剪那些位于它之外的物体。
平截头体的4个侧面、顶面和底面对应于视景体的6个裁剪平面,如图3-13所示。
位于这些平面之外的物体(或物体的一部分)将裁剪掉,1.void glFrustum(GLdouble left, GLdouble right,2.GLdouble bottom, GLdouble top,3.GLdouble near, GLdouble far);创建一个表示透视视图平截头体的矩阵,并把它与当前矩阵相乘。
平截头体的视景体是由这个函数的参数定义的:(left, bottom, -near)和(right, top, -near)分别指定了近侧裁剪平面左上角和右下角的(x, y, z)坐标。
near和far分别表示从观察点到近侧和远侧裁剪平面的距离,它们的值都应该是正的。
平截头体在三维空间中有一个默认的方向。
可以在投影矩阵上执行旋转或移动,对这个方向进行修改。
但是,这种做法难度较大,因此最好还是避免。
高级话题平截头体并不一定要求是对称的,它的轴也并不需要与z 轴对齐。
例如,可以使用glFrustum()函数绘制一幅图片,就像透过房子右上角的一个矩阵窗口向外观察一样。
摄像师使用这种视景体创建人工透视效果。