1、计算机图形学基础,第6章 三维变换,本章主要内容,6.1 图形变换的数学基础(矢量表示、齐次坐标)6.2 三维图形的基本几何变换; 6.3 三维图形的复合(组合)变换;6.4 平行投影 6.5 透视投影,三维图形变换概述,三维计算机图形学在图形学领域非常活跃。主要研究方向有: 立体对象的输入方式:(三维扫描仪) 建模方法、造型方法、CG与CAD的应用(视频制作、CAD/CAM系统等)、CG标准化。 核心:建模与造型建模:线框模型、表面模型、实体模型有立体信息,三者之间可以相互转换。 造型方法:线/面消隐、明暗处理、阴影、真实感造型(纹理贴图等)、分形造型等处理。,三维图形的基本问题,在二维屏幕
2、上如何显示三维物体?2. 如何表示三维物体?3. 如何反映遮挡关系?4. 如何产生真实感图形?,显示器屏幕、绘图纸等,是二维的显示, 对象是三维的。解决方法-投影,投 影,轴测投影,正投影,透视投影,问题与解决办法,问题1:如何在二维的图形设备上表示三维的形体 ?投影,如同照相机的成像技术。(三维显示设备正在研制中。三维电影?) 三维立体通过投影可得的平面图形(三视图、轴测图、透视图) 问题2:物体之间或物体的不同部分之间存在相互遮挡关系?-消除隐藏面与隐藏线(消隐) 问题3:空间位置关系-近大远小的透视关系和遮挡关系,光线传播引起的物体表面颜色的自然分布?-建立光照明模型、开发真实感图形绘制
3、方法,投影的应用:三视图、轴测图,三视图,斜二测,工程图(平行投影): 三视图、轴测图,投影的应用: 透视图实例,投影的应用:透视图,灯光处理,三维图形的基本研究内容,投影 三维形体的表示 消除隐藏面与隐藏线 建立光照明模型、真实感图形绘制方法,三维变换,基本变换三维图形变换 平行投影投影变换透视投影,正投影 斜投影,一点透视 两点透视 三点透视,投影视图:三视图、轴测图、透视图,复合变换,6.1 图形变换的数学基础,矢量运算 行列式矩阵 单位矩阵 逆矩阵 转置矩阵 矩阵运算 上机编程实现:a)矩阵的输入与输出;b)两个矩阵相乘。,特别注意: 矩阵相乘不适合交换律,矩阵相乘不符合交换律 ( M
4、atrix Multiplication is Not Commutative),先旋转,然后平移 =,先平移,然后旋转=,6.1.1 变换的数学基础(自行了解),矩阵 阶矩阵 n阶方阵 零矩阵 行向量与列向量 单位矩阵 矩阵的加法 矩阵的数乘 矩阵的乘法 矩阵的转置 矩阵的逆,6.1.2 齐次坐标 用n+1维向量表示n维向量,优越性 提供了用矩阵运算把二维三维甚至高维空间的点集从一个坐标系变换到另一个坐标系的方法。 可以表示无穷远的点。,三维点P(x,y,z)的齐次坐标:一个三维空间的向量(x,y,z), 它在四维空间中对应的向量即齐次坐标为(xh,yh,zh,h),其中h0。反之齐次坐标的
5、概念可以推广到n维空间的向量。 齐次坐标的表示不是唯一的,(如何让它唯一?)注意:当h=1时,称为规格化齐次坐标常用。,6.1.2齐次坐标,6.2 三维图形变换,坐标系 右手法则 拇指指向坐标轴Z的方向, 其余四指指向旋转方向,Y,Z,X,0,逆时针为正,6.2.1 三维图形变换基础,三维空间点的齐次坐标矩阵(x y z 1), x y z 1 = x y z 1 T,变换后的顶点坐标,变换前的顶点坐标,三维变换矩阵(4*4),6.2.1三维图形变换基础 三维变换矩阵可表示为: a b c pd e f qg h i rl m n s 其中: a b cd e f 产生比例、错切、镜象和旋转等
6、基本变换。g h i l m n 产生沿x、y、z三轴方向上的平移变换。pq 产生透视变换。r s 产生等比例缩放变换。,T =,三维图形变换中要注意的几个问题:1. (三维)采用 s 来实现整体的比例变换。当 |s | 1 时,三维图形整体等比例缩小。2.(三维)对称变换是相对于各个坐标平面进行的。3.(三维)旋转变换是指绕坐标轴的旋转。规定:右手坐标系下,绕坐标轴逆时针为正,顺时针旋转为负。,三维复合变换,4. 三维图形的级联(复合)变换对于复杂的三维图形变换,也需要通过若干个变换矩阵的级联才能实现。A = A *T1*T2*T3特别注意:变换的方法和矩阵级联的顺序。,6.2.2 三维几何
7、变换,平移变换,点的平移,立体的平移,6.2.2 三维几何变换,(相对于原点)比例变换,6.2.2 三维几何变换,对称变换 只考虑关于坐标平面的对称变换 关于xy平面对称关于yz平面对称关于xz平面对称,6.2.2 三维几何变换,错切变换 三维错切变换矩阵: 1 b c 0d 1 f 0g h 1 00 0 0 1 其中: b=c=f=h=0,沿X方向产生错切,T =,6.2.2 三维几何变换,旋转变换需要指定旋转角度和旋转轴.,预备基础知识:已知a、b、c,求、?,Y,X,Z,(a, b,c),6.2.2 三维几何变换,旋转变换 绕x轴,1,(x, y, z),(x, y, z),x,y,z
8、,2,(x, y, z),6.2.2 三维几何变换,旋转变换 绕y轴,(x, y, z),(x, y, z),x,y,z,6.2.2 三维几何变换,旋转变换 绕z轴,x,z,(x, y, z),(x, y, z),几点说明,1)平移变换只改变位置,不改变图形的大小和形状; 2)旋转变换保持图形各部分间的线性关系和角度关系(刚性),变换后直线的长度不变; 3)比例变换可改变图形的大小和形状; 4)错切变换引起图形角度关系的改变,甚至导致图形发生畸变; 5) 拓扑不变的几何变换不改变图形的连续关系和平行关系;,6.2.3 三维复合变换,实际的图形对象的变换往往是由多个简单变换复合而来。将相关的简单
9、变换的变换矩阵乘起来就可得到复合变换的变换矩阵。例6. 1 写出基于参考点(xf, yf, zf)的比例变换矩阵。(如:相对于参考点(1,2,3),分别在X、Y、Z方向上放大2倍、1.5倍、3倍)变换方法步骤:1)通过平移变换将参考点移到原点,使原点与参考点重合;2)相对于原点进行比例变换;3)通过反平移将参考点移原来位置。,绕空间任意轴的三维旋转变换,例6.2:有空间任意轴AB(用点A: xA,yA,zA,方向数a,b,c表示),现有空间点P(x,y,z)绕AB轴旋转角后为P(x ,y ,z ),求该变换矩阵。 方法步骤如下: 1)平移AB轴与原点重合;2)AB绕X轴旋转角,使之落到ZX平面
10、上;3)将AB绕Y轴旋转角,使之与Z轴重合;4)此时AB与Z轴重合,绕Z轴旋转 角;5)绕X轴反旋转-角;6)绕X轴反旋转-角; 7)反平移。,预备知识:方向数与各坐标轴、坐标平面的关系(夹角、投影等),B点的方向数为(2,3,4),-,Y,X,Z,绕X轴旋转角; 绕Y轴旋转-角。,习 题,在坐标系oxyz中,求一个变换将P(1,1,1)Q(2,2,2)变换到z轴上:P在坐标原点,Q在z轴正半轴。(方向数为:?),随堂练习,写出三维基本几何变换的逆变换; 将下图1中的物体ABCDEFGH进行如下变换:平移使C点与P(1,-1,0)重合,然后绕Z轴旋转60度。 将图2中的空间四面体进行关于P点的
11、整体放大,试写出变换矩阵。,P(2,-2,0),A(2,0,0),D(2,2,2),C(0,2,0),B(2,2,0),图1,图2,Y,X,Z,随堂练习,4. 假定空间直线AB两端点坐标为A(0,0,0)B(2,2,2),试写出绕AB轴旋转30度的三维复合变换矩阵。(问:方向数为?)5. *在右手坐标系中,从原点到P(x,y,z)给出一直线,用三种方法将此直线旋转到正的轴线上,并用代数证明所得的结果等价。a. 先绕X轴旋转到XZ平面上,再绕Y轴到Z轴上;b. 先绕Y轴旋转到YZ平面上,再绕X轴到Z轴上;c. 先绕Z轴旋转到XZ平面上,再绕Y轴到Z轴上.,1) (毋需) 2)AB绕X轴旋转角,使
12、之落到ZX平面上;3)将AB绕Y轴旋转角,使之与Z轴重合;4)此时AB与Z轴重合,绕Z轴旋转 角;5)绕X轴反旋转-角;6)绕X轴反旋转-角; 7) (毋需),Y,X,Z,三维形体的输出流水线,在用户坐标系中定义三维形体,变换到观察坐标系,在规格化投影空间中裁剪,投影变换,窗口到视区的变换,图形设备上输出,变换到规格化图象空间裁剪,6.3 投影变换,什么是投影法?对物体进行投影并在投影面上产生图形的方法。 分类中心投影法(灯光)透视投影平行投影法(阳光)斜投影法、正投影法透视投影最接近于视觉效果; 正投影法是绘制工程图样的基础。,6.3.1 平面几何投影几个术语,投影线 从投影中心向物体上各点
13、发出的射线 直线光线 曲线喷绘 平面几何投影 投影面是平面 , 投影线为直线 投影变换 投影过程、投影的数学表示,6.3.1 平面几何投影几个术语,投影 将n维的点变换成小于n维的点 将3维的点变换成小于2维的点 投影中心(COP:Center of Projection) 视觉系统观察点、视点 电影放映机光源 投影面 不经过投影中心 平面-照相机底片 曲面球幕电影,视网膜,正投影,平面几何投影 投影的概念及分类投影中心 三维空间中的一个点。投影面 不经过投影中心的一个平面。投影线 投影中心与被投影物体上某个点之间的连线。投影 投影线与投影面之间的交点,即为物体上某个点在投影面上的投影。,A,
14、B,A,B,A,B,A,B,投影中心,投影线,投影面,投影中心在无穷远处,平行投影,正投影与斜投影,6.3.2 正投影三视图的形成,将三个投影面画在一个平面上: (1)V面投影图保持不变(称正投影面,主视图); (2)H面绕OX轴向下翻转90度(称水平投影面,俯视图); (3)W面绕OZ轴向后翻转90度(称侧投影面,左视图); (4)省去投影面的边框和投影轴。见下页。 规律正面投影反映长、高;水平投影反映长、宽;侧面投影反映高、宽。 主、俯视图长对正;主、左视图高平齐;俯、左视图宽相等。,主视图的形成:直接向V面(XOZ坐标面)投影; 俯视图的形成:绕X轴向下旋转90度,平移 N 距离; 左视
15、图的形成:绕Z轴向后旋转90度,平移 L 距离。(X顺时针, Z逆时针),x,Z,Y,x轴,Z轴,正投影的投影变换矩阵为:主视图 1 0 0 00 0 0 0 0 0 1 00 0 0 1俯视图 1 0 0 0 1 0 0 0 1 0 0 00 1 0 0 0 0 -1 0 0 1 0 00 0 0 0 0 1 0 0 0 0 1 00 0 0 1 0 0 0 1 0 0 -N 1左视图 0 0 0 0 0 1 0 0 1 0 0 00 1 0 0 -1 0 0 0 0 1 0 00 0 1 0 0 0 1 0 0 0 1 00 0 0 1 0 0 0 1 -L 0 0 0,T主 =,T俯 =
16、,T左 =,主视图,俯视图,左视图,三视图的形成,正投影的投影变换矩阵为:主视图 1 0 0 00 0 0 0 0 0 1 00 0 0 1俯视图 1 0 0 0 1 0 0 0 1 0 0 00 1 0 0 0 0 -1 0 0 1 0 00 0 0 0 0 1 0 0 0 0 1 00 0 0 1 0 0 0 1 0 0 -n 1左视图 0 0 0 0 0 1 0 0 1 0 0 00 1 0 0 -1 0 0 0 0 1 0 00 0 1 0 0 0 1 0 0 0 1 00 0 0 1 0 0 0 1 -L 0 0 0,T主 =,T俯 =,T左 =,主视图,侧视图,俯视图,工程图的绘制
17、: (正投影),正平行投影 (正投影)举例: 写出下列三维图形的正投影变换矩阵。 (显示器中的坐标选择) 投影结果:,x,z,y,主视图,右视图,俯视图,x,y,问题: 用程序实现,绘制三视图,算法步骤如下: 给定一个三维图形顶点坐标(矩阵表示); 进行主视图投影变换(乘主视投影变换矩阵); 绘制主视图; 进行俯视图投影变换(乘俯视投影变换矩阵); 绘制俯视图; 进行左视图投影变换(乘左视投影变换矩阵); 绘制左视图; (比较三个视图的位置;结束)。,参见第6章实例“3Dtrans”,正平行投影 (正投影)特点,正投影的投影面与某一坐标轴垂直,而投影方向与该坐标轴的方向一致。正投影的图形,在长
18、宽高三个方向上的比例与实物保持一致,因此,常用于工程制图。规则为:“长对正,高平齐,宽相等”。,6.3.3 轴测投影,轴测图的形成,长方体及坐标轴一起按照投影方向向投影面做平行投影,得到同时反映长方体的长、宽、高的投影。投影线与物体的主要平面呈倾斜。沿轴测量轴测图的投影变换矩阵推导: 把形体绕Y轴旋转角; 绕X轴旋转 角; 最后投影到XY平面上。(见上图),轴测图推导,推导: 以下三个矩阵相乘 T1:把形体绕Y轴旋转角; T2:绕X轴旋转 角; T3:投影到XY平面上。正等测推导过程: (X、Y、Z轴上的三个单位矢量在新投影面上的投影长度相同。) 求单位矢量变换矩阵 在求该单位矢量在投影面上的
19、长度(模)(1) 正等测要求:p1=p2=p3 解得: 45,35.264 投影后X轴与水平线的夹角: =30,X,Z,正等测,正等测的轴向变形系数、轴间角p=q=r=0.82(为了作图方便,取p=q=r=1,实际上长度放大1.22)X1O1Y1 = X1O1Z1 = Y1O1Z1 =120 例: 平面立体的正等测画法(正六棱柱为例) 平行于坐标面的圆的正等测图以及回转体的正等测画法:(关键确定圆是在哪个坐标面上),轴测图术语,轴测轴直角坐标轴在轴测投影面上的投影,称轴测投影轴。 OXO1X1、OYO1Y1、OZO1Z1 轴间角轴测轴之间的夹角X1O1Y1 , X1O1Z1 , Y1O1Z1
20、轴向变形系数在空间三个坐标轴上,线段轴测投影长度与它们实际长度的比例:p= O1A1 /OA (X方向)q = O1B1 /OB (Y方向)r= O1C1 /OC (Z方向),平行投影特点,空间平行线其投影仍然平行; 正投影反映真实尺寸(至少需要两个投影图),但不直观; 轴测投影只需要一个投影图,作用:辅助设计。,6.3.4 透视投影 投影中心与投影平面之间的距离为有限 例:室内白炽灯的投影,视觉系统 问题:投影中心?投影面?投影线 。AB的投影是?,A,B,A,B,投影中心,投影线,投影面,A,B,A,B,投影中心在无穷远处,6.3.4 透视投影,灭点 不平行于投影平面的平行线,经过透视投影
21、之后收敛于一点,称为灭点。主灭点:平行于坐标轴的平行线的灭点。 一点透视 两点透视 三点透视 特点:产生近大远小的视觉效果,由它产生的图形深度感强,看起来更加真实。,主灭点的个数,由什么决定?,3. 灭点对于透视投影,不平行于投影面的平行线的投影会汇聚到 一个点,这个点就称为灭点.。透视投影的灭点有无限多个,与坐标轴平行的平行线在投影面上形成的灭点称为主灭点。主灭点最多有三个,其对应的透视投影分别被称为一点透视、二点透视、三点透视。,x,y,z,z轴灭点,x轴灭点,6.3.4 透视投影,一点透视,两点透视,三点透视,三点透视M.C.Esher作品: 上升与下降,二. 透视投影 (中心投影)1.
22、 透视变换原理设投影中心S在z = -d 的位置,投影面为XOY平面(与 Z 轴垂直),点 P( x, y, z )在投影面上的投影为 P ( x , y , z )。试推导一点透视变换的矩阵,并求某一空间点的一点透视投影。,d,P,P,2. 透视投影的特点由透视投影的计算公式xd+zyd+z 可知: 透视坐标与 z 值成反比,即 z 值越大,其透视坐标值 越小。符合近大远小的视觉效果。 d 的取值不同,可对形成的透视投影图起放大和缩小的 作用。 一点透视的推导过程:,x=,y=,d,d,o,z,y,p1,p2,p1,p2,P,(x,y,z),(x,y),一点透视变换, 结论:透视投影变换矩阵
23、(d:投影中心到投影面的距离),问:d-无穷大时,变换结果如何?,透视投影透视变换正投影,一点透视绘图方法,(为了获得较好的视觉效果,确定三维形体与画面的相对位置)平移三维形体到(l、m、n)。 确定d的值(视距投影中心到投影面距离)。 (为了绘图方便)向xoy平面作正投影变换( 在xoy平面绘制图形)。,举例: 单位立方体的一点透视投影,已知: l (=0.8), m(=-1.6), n(=-2), d(=-2.5),请写出变换矩阵,并上机绘制该投影图。,分析,(简单)单位立方体: T1:平移到(0.8,-1.6,-2)(二点透视加上旋转) T2 :d为(负向) 2.5 T3:投影到XOY平
24、面上。变换矩阵为三个矩阵相乘: T1 *T2 *T3,两点透视绘图方法(试写出该变换矩阵),为了获得较好的视觉效果,确定与画面的相对位置:平移三维形体到适当位置(l、m、n),使视点有一定高度,使形体主要表面不会积聚成线; 将形体绕y轴旋转角度(右手法则,90); 进行透视变换(选择p与r值),一般p0, r0,使变换后立体越远越小,符合视觉向xoy平面作正投影变换。,练习:完成上例的两点透视的推导,并上机实现该程序。,y,x,两点透视绘图: (ln 0, m -1.4,p-0.1, r-0.45,q=0, 30 ),-2.5,1.94,三点透视绘图方法,平移三维形体到适当位置(l、m、n);
25、 进行透视变换:将形体绕y轴旋转角度; 将形体绕x轴旋转角度; 向xoy平面作正投影变换。,本章小结,三维图形的齐次坐标 如何规范化? 三维图形的平移、旋转、变比、对称等变换; 复合(级联)三维变换矩阵的推导与三维变换的实现; 三维图形的投影变换:(1)投影变换的分类;(2)三视图的形成原理,及其变换矩阵的推导与实现;(3)轴测图的形成原理,及其变换矩阵的推导与实现;(4)一点透视图变换矩阵的推导,及其实现;(5)透视投影的分类,生成方法,特点:透视坐标与 z 值成反比,即 z 值越大,其透视坐标值越小。符合近大远小的视觉效果。d 的取值不同,可对形成的透视投影图起放大和缩小的作用。 熟练掌握:实现两个四维矩阵相乘。,End of Chapter 6,