计算机图形学(三维观察投影线、视图变换、投影变换)

一、三维观察流水线
概念:将建立的三维场景显示在二维视口的过程称为三维观察流水线。
在三维观察流水线中,也就是在将三维场景显示在二维视口的过程中,需要在不同坐标系下进行不同的操作,这些坐标系包括:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
建模坐标系需要建立几何模型,通常将坐标系原点与几何模型的特殊点相对应,如球体的球心等,然后将在建模坐标系中建立的多个模型变换位置统一显示到世界坐标系中(该过程称为模型变换)。
观察坐标系是确定的是观察者的位置和方向,可以观察场景的不同视角:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
场景从世界坐标系到观察坐标系的变换称为视图变换。
裁剪坐标系确定了视见体,三维裁剪窗体称为视见体,确定观察坐标系的可见范围。由观察坐标系到裁剪坐标系的变换称为投影变换。投影变换还包括三维图像到二维图像的变换,可以采用不同的投影模式,包括正交投影和透视投影两种。采用正交投影时,视见体通常被定义为平行六面体,采用透视投影时,视见体被定义为棱台,透视投影的观察结果与人眼观察结果更相符。视见体的大小由用户完成,用户可以根据投影模式的不同将视见体定义为任意大小的长方体或棱台:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
用户定义的视见体的随机性不利于计算机进行统一的处理,更不利于设备无关性的实现,因此,图形学中通常将用户定义的视见体进行规范化,即将视见体统一规范化为[-1,1]的立方体,这种规范化的变换过程称为裁剪与规范化变换,实现的是裁剪坐标系到规范化设备坐标系之间的变换。场景被规范化到立方体内的视见体后,就可以通过视口变换在显示屏幕中某个窗体的视口区域显示出来。需要注意的是,若视见体的纵横比与视口的纵横比不同,也会影响到场景的最终显示比例:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
坐标变化与坐标系之间的关系:
《计算机图形学(三维观察投影线、视图变换、投影变换)》

二、视图变换(又称观察变换、视点变换、照相机变换)
视图变换实现的是世界坐标系到观察坐标系的变换。
世界坐标系通常是由x,y,z确定的笛卡尔坐标系,观察坐标系可有用户自己定义,例如将观察坐标系定义为用uvn表示的笛卡尔直角坐标系
《计算机图形学(三维观察投影线、视图变换、投影变换)》
《计算机图形学(三维观察投影线、视图变换、投影变换)》
两个三维坐标系间的复合变换过程难以避免使用旋转变换,为方便界定旋转角度,可以考虑将世界坐标系表示为球面坐标系,笛卡尔之间坐标系一点(x,y,z)与球面坐标系的点的关系:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
世界坐标系与观察坐标系的位置关系为:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
世界坐标系定义为os(x,y,z),观察坐标系定义为os(xs,ys,zs),观察坐标系的原点(视点Os)在世界坐标系下的坐标为(a,b,c),观察坐标系z轴为视点Os指向世界坐标系原点O的方向(即Zs在OsO直线上),给定世界坐标系向上的Ys方向,通过左手定理可确定Xs方向。
接下来考虑如何实现世界坐标系到视觉坐标系的变换(视图变换):
通过基础几何变换实现世界坐标系到视觉坐标系的重合。
(1)将世界坐标系的原点O移动到视觉坐标系的原点Os,得到临时坐标系x1y1z1,变换矩阵为:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
《计算机图形学(三维观察投影线、视图变换、投影变换)》

(2)将x1y1z1的z1坐标轴与视觉坐标系的Zs坐标轴重合。这一步需经过两步旋转变换。
做O1到平面xoy的投影P。
第一步旋转:实现x1与O1OP平面的重合
第二部旋转:分两步进行,首先绕Z1顺时针旋转以下角度,使得y1轴旋转到O1OP平面内
得到临时坐标系x2y2z2,此时的y2z2均位于O2OP平面内,x2垂直于O2OP平面
《计算机图形学(三维观察投影线、视图变换、投影变换)》《计算机图形学(三维观察投影线、视图变换、投影变换)》
旋转矩阵为:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
第二部旋转将坐标轴z2绕坐标轴x2逆时针旋转以下角度,使得坐标轴z2轴与视觉坐标系的z坐标轴(即O1O重合),得到临时坐标系x3y3z3:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
变换矩阵为:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
(3)将x3y3z3的x轴做反射变换,即将x值取反,变换矩阵M4为:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
将变换中的四个变换矩阵自右向左相乘:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
此时就可以实现世界坐标系下的坐标到视觉坐标系下的坐标的变换。

三、投影变换
投影变换是把三维物体投影到投影面上得到二维平面图形的变换。其中投影面为平面的投影称为平面几何投影变换,接下来讨论的就是平面几何投影变换。
《计算机图形学(三维观察投影线、视图变换、投影变换)》
平面几何投影又分为平行投影和透视投影,平行投影的投影中心距离投影面无穷远,投影线是平行的,而透视投影的投影中心与投影面间有有限的距离,投影线间不平行:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
平行投影的物体大小不变,多用于工程制图,透视投影的物体相关比例会发生变化,形成一种近大远小的效果(例如平行的两条火车轨道在远处相较于一点),更符合人眼自身的观察结果。
平行投影又分为正平行投影(投影线与投影面垂直,又称正交投影)和斜平行投影(投影线与投影面不垂直),还可再细分。
《计算机图形学(三维观察投影线、视图变换、投影变换)》
1.正交投影
正交投影的视见体通常为平行六面体,将平行六面体的前平面作为投影平面,正交投影将平行六面体内可见的三维形体投影到平行六面体的前平面,完成将三维形体投影到二维平面的过程。
《计算机图形学(三维观察投影线、视图变换、投影变换)》
正交投影中,当投影面与某一坐标轴垂直时,得到的投影是三视图:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
当投影面与三个坐标轴都不垂直时,得到的投影为正轴测图:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
常见的正交投影是三视图,生成的投影图为主视图(投影到xoz平面)、俯视图(投影到xoy平面)、侧视图(投影到yoz平面)。
《计算机图形学(三维观察投影线、视图变换、投影变换)》
三视图的投影变换矩阵:
主视图变换矩阵(将y坐标变为0):
《计算机图形学(三维观察投影线、视图变换、投影变换)》
得到的三个投影面不在同一平面内,可将其移到同一平面内。
例如,将xoy平面内生成的俯视图绕x轴旋转90度变换到xoz平面进行显示,为了拉开一定距离,再将其沿z轴负方向平移一段位移,这个复合变换的变换矩阵为:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
仍以同样的方法得到xoz平面的侧视图:将yoz面得到的侧视图绕z轴正转90度到xoz平面,再将其沿负x方向平移一段距离。
投影矩阵为:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
2.正轴测投影
《计算机图形学(三维观察投影线、视图变换、投影变换)》
3.透视投影
通常定义的视见体是棱台:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
透视投影的投影线从与投影面相距有限远的空间一点投射,该点称为视点或投影中心。将眼睛所在的位置称为视点,视线称为投影线,垂直于屏幕的视线与屏幕的交点称为视心,视点到视心的距离称为视距。通常可以设定视点是视觉坐标系的坐标原点,视心是屏幕坐标系的坐标原点。透视投影有近大远小的特点,当投影小到极点会消失,这个极点被称为灭点。
以视觉坐标系的点变换到屏幕坐标系来讨论投射投影:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
假设视觉坐标系XvYvZv一点为(xv,yx,zv),投影到屏幕坐标系中投影平面设定为z=d,投影平面垂直于视觉坐标系的z轴,视觉坐标系投影到屏幕坐标系的投影平面中的点为(xs,ys,zs),(xs,ys,zs)可以通过相似三角形来求解。
《计算机图形学(三维观察投影线、视图变换、投影变换)》
《计算机图形学(三维观察投影线、视图变换、投影变换)》
点的透视矩阵为:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
注意,在透视投影过程中平行线之间的关系是否发生变化,规律是:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
《计算机图形学(三维观察投影线、视图变换、投影变换)》
《计算机图形学(三维观察投影线、视图变换、投影变换)》
上述规律对于视点在x轴、y轴同样适用。
透视投影改变平行线间的平行关系:
《计算机图形学(三维观察投影线、视图变换、投影变换)》
《计算机图形学(三维观察投影线、视图变换、投影变换)》

    原文作者:微扬嘴角
    原文地址: https://blog.csdn.net/qq_51476492/article/details/121561035
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞