




已阅读5页,还剩80页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机图形学 ComputerGraphics 教材 计算机图形学 王汝传等编著人民邮电出版社http 10 20 79 1 沈同hentp1986 第五章目录第五章三维图形生成和变换技术5 1三维图形的概念5 2自由曲面的生成5 3三维图形的变换5 4三维图形裁剪和消隐 三维图形投影变换通常图形输出设备 显示器 绘图仪等 都是二维的 用这些二维设备来输出三维图形 就得把三维坐标系下图形上各点的坐标转化为某一平面坐标系下的二维坐标 也就是将 x y z 变换为 x y 或 x z 或 y z 这种把三维物体用二维图形表示的过程称为三维投影变换 这种变换方式有很多种 在实际中 根据不同目的或需要而采用不同的变换方式 三维投影变换大致分类如图所示 平行投影是将物体上所有点都沿着一组平行线投影到投影平面 而透视投影是所有点沿着一组汇聚到一个称为投影中心的位置的线进行投影 两种方法如图所示 1 正平行投影变换投影方向垂直于投影平面时称正平行投影 l 正投影变换在工程上将三维坐标系OXYZ中的三个坐标平面分别为H面 XOY平面 V面 XOZ平面 和W面 YOZ平面 如图所示 所谓正投影就是三维图形上各点分别向某一坐标平面作垂线 其垂足便称为该三维点投影点 将所有投影点按原三维图形中点与点之间的对应关系一一连起来便得到了一平面图形 这一平面图形称为三维图形在该平面上正投影 如图所示 在V面上的投影图形称主视图 在H面上的投影图形称俯视图 在W面上的投影图形称侧视图 正面 V面 投影主视图变换正面投影是物体在XOZ平面上的投影 使物体的y坐标都等于零 x和z坐标不变 其变换矩阵是 水平面 H面 投影俯视图变换水平面投影是物体在XOY平面上投影 使物体的z坐标都等于零 x和y坐标不变 其变换矩阵是 侧面 W面 投影侧视图变换侧面投影是物体在YOZ平面上投影 使物体的x坐标都等于零 y和z坐标不变 其变换矩阵是 三视图上面投影后的三面投影图仍位于空间 根据工程中需要还须将V面 H面 和W面上得到的三个正投影以一定方式展平在同一平面上而得到三个视图 习惯上是放在V面上 为了在V面上构成三视图 使V面上投影保持不变 而使H面上正投影绕X轴逆转90 到V面 为了防止与原V面上投影发生拥挤现象 再让它向轴方向平移一段距离n 同样 使w面上正投影绕Z轴正转90 再向轴方向移一段距离l 以上立方体为例 V面上投影保持不变 F G E H Z X Y 再向轴方向移一段距离l 变换矩阵为 得出三视图除上述方法外 还可以先将立方体绕坐标轴X 或Z 旋转90 再平移n 或l 最后作正投影变换 其实两种方法得到结果是一样 所以 要求得一个三维实体在V面上的三视图 必须将三维实体上各点分别乘以新的变换矩阵TV TH TW即 2 正轴测投影变换 正轴测投影变换矩阵若将空间立体绕某个投影面所包含的两个轴向旋转 再向该投影面作正投影 即可获得立体正轴测图 通常选用V面 XOZ坐标平面 为轴测投影面 所以将立体绕Z轴正向旋转 角 再绕X轴反向旋转 角 最后向V面作正投影 因此将绕Z轴旋转变换矩阵TZ 绕X轴旋转的变换矩阵TX和向V面作正投影的变换矩阵TV连乘 即得到正轴测变换矩阵 对于立体上任一顶点A x y z 正轴测变换投影结果为 变换后点A 坐标为 将 和 值代入正轴测变换矩阵T正 再将立体顶点位置矩阵乘此变换矩阵T正 可获得立体顶点正轴测图位置矩阵 最后依次将各顶点连线 即可得到立体的正轴测图 选用不同 和 值 可以产生不同的正轴测图 工程中常用的有正等测图 正二测图 对正六面体进行正轴测投影变换如下图所示 如图所示 进行轴测投影变换后 立体上原来的坐标轴OX OY OZ变换成轴测图上轴测O X O Y O Z 下面我们讨论变换的轴向变形系数和轴间角 a 轴向变形系数取三根坐标轴上的点 它们的齐次坐标分别为A l001 B 0101 C 0011 对它们分别进行正轴测投影变换得 A B C 分别位于轴测轴O X O Y O Z 上 故各轴的轴向变形系数为 b 轴间角由上述A B C三点的变换可知 O Z 轴和OZ轴重合 设O X 轴 O Y 轴和水平轴的夹角分别为 见下图 则 正等测投影变换正等测投影为三根轴上变形系数相等的正轴测投影 即由此可得 2 如图 b 是图 a 的正等测图 正二测投影变换正二测投影一般取X和Z轴变形系数相等 且为Y轴变形系数的二倍 即 2 斜平行投影 斜轴测投影 变换投影方向不垂直于投影面的平行投影称为斜平行投影 即斜轴测投影 这种投影可以通过三维空间形体的错切变换后作正投影获得 下面推导其变换矩阵 1 斜轴测投影变换矩阵斜轴测投影是先将立体沿两个方向产生错切 再向投影面作正投影而得到的 通常先沿X含Y错切 再沿Z含Y错切 最后向XOZ坐标平面投影而成 变换矩阵为 变换矩阵中元素d f取不同的值 即可得到任意的斜轴测投影 d f的正负可以改变斜轴测的方向 轴向变形系数用与正轴测投影同样的方法 如图所示 对距原点为单位长度的点A 1001 B 0101 C 0011 进行斜轴测投影变换 变换后A与A 点重合 C与以C 点重合 即OX与O X 重合 OZ与O Z 重合 因此轴向变形系数为 轴间角由上面对A B C三点的变换可以看出 只有O Y 轴与水平轴有一夹角 y 如图所示 且 2 斜等测投影变换斜等测投影定义为 即 d和f的正负决定沿X轴和沿Z轴错切方向 可视具体情况而定 这样我们得到常用斜等测变换矩阵为 单位正六面体斜等测投影 3 斜二测投影变换在斜轴测图中 常用的还有斜二测图 斜二测投影定义为 即 在画斜二测投影图时 为了增强图形立体感 往往使立体沿 Z方向错切 故f取负值 而d的正负决定沿X轴错切方向 可视具体情况而定 因此 斜二测投影变换矩阵为 y 单位正六面体斜二测投影 三维图形透视投影变换透视投影属于中心投影 透视图也是一种将三维物体用二维平面来表达的立体图 与轴测图不同 它是用中心投影法 通过空间一点 即投影中心 将立体投射到投影面上所得到的投影图 如图所示 投影中心又称为视点 它相当于观察者的眼睛 投影面置于视点与立体之间 将立体上各点与视点相连所得到的投影线分别与投影面相交 其交点就是立体上相应点的透视投影 再将其依次相连 即获得具有真实立体感的透视图 透视投影可用矩阵变换方法获得 在4 4阶变换矩阵中第四列元素p q r称为透视参数 若赋其非零数值即形成透视变换矩阵 1 点的透视变换如图所示 在Y轴上取一点E为视点 投影面取XOZ面 V面 A x y z 与视点E的连线AE与V面的交点为A x y z 即为A的透视投影 同样B的透视投影为B C的透视投影为C D的透视投影为D 图5 38透视投影坐标关系 根据图可以找到空间点坐标与点的透视投影坐标的关系 因为 DEB与 D EB 相似 所以 图5 38透视投影坐标关系 同理可得 若用矩阵表示上述关系式 则有 在Y 同理 视点在X轴上透视变换矩阵Tp和视点在Z轴上透视变换矩阵Tr分别为 现将Y轴上无限远点 0100 注意无限远点第四维齐次坐标为0 作透视变换 其结果为 变换结果表明 Y轴上的无限远点 0100 进行透视变换后成为有限远点 0l q01 由此可以证明 原来平行于X轴和Z轴直线变换后仍平行于对应坐标轴 但原与Y轴平行直线 变换后不再与Y轴平行 而是汇交于Y轴上一点 0 1 q 0 这个点称为透视的灭点 同理 分别用透视变换矩阵Tp和Tr对X轴和Z轴上无限远点进行透视变换后 所有平行于X轴和Z轴的直线都应分别交于灭点 l p 0 0 和 0 0 1 r 2 立体透视投影变换和三维实体平行投影方法一样 只要将三维实体上各个点分别透视投影 再将投影后得到的各个点按原来点与点之间的关系用线段一一连接 便可得到三维实体的透视投影 由前述可知 透视变换矩阵Tp Tq和Tr分别改变了三维实体中沿X方向Y方向以及Z方向的平行线段的平行性 形成三个灭点 1 p 0 0 0 l q 0 和 0 0 1 r 然而 如果用Tp Tq和Tr中任意两个矩阵去作用三维实体 那么就会改变三维实体沿两个坐标轴方向的平行线段的平行性 并形成两个灭点 同样地 如果用三个矩阵Tp Tq和Tr一同作用于三维实体 那么就会改变三维实体中沿三个坐标轴方向的平行线段平行性 并形成三个灭点 所以 根据透视投影中灭点多少又可分为一点透视 二点透视和三点透视 1 一点透视一点透视就是只有一个灭点的透视 一般采用透视变换矩阵Tq作为一点透视的透视变换矩阵 对于图所示立方体作透视变换后 只有一个方向的棱线汇交于灭点 其它两个方向的棱线仍是相互平行的 平行于Y轴方向棱线交于一点 平行于X Z轴方向棱线平行 为了使透视投影后的图具有立体感 我们在透视投影变换之前 要对三维实体先作平移变换 其沿着X方向 Y方向和Z方向的平移量分别为l m n 然后再进行透视变换 最后再向V面作正投影 其一点透视投影变换矩阵为 2 二点透视二点透视就是具有两个灭点的透视 一般以Tp和Tq作为二点透视的透视变换矩阵 对立方体作透视变换后 除垂直方向棱线互相平行外 另外两个方向的棱线分别汇交于灭点 平行于X Y轴方向棱线交于一点 平行于Z轴方向棱线平行 为了使二点透视后的投影有一恰当的位置 通常对立体进行平移 透视 绕Z轴转 角 于是总的变换矩阵T2为 为了增加透视图立体感 一般取p 0 q 0 3 三点透视三点透视就是有三个灭点的透视 对立方体作透视变换后三个方向的棱线分别交汇于三个不同的灭点 三点透视首先将对立体进行平移 然后再进行透视变换 接着将变换后立体绕Z轴和X轴分别旋转 1和 2角 最后向V面正投影 其变换矩阵为 平行 正射 投影最大一个特点是无论物体距离投影面 相机 多远 投影后的物体大小尺寸不变 这种投影通常用在建筑蓝图绘制和计算机辅助设计等方面 这些行业要求投影后的物体尺寸及相互间的角度不变 以便施工或制造时物体比例大小正确 透视投影符合人类的生理机制 即离视点近的物体大 离视点远的物体小 远到极点即为消失 成为灭点 它的视景体类似于一个顶部和底部都被切割过的棱椎 也就是棱台 这类投影通常用于动画 游戏 视觉仿真以及其它许多具有真实性反映的方面 第五章三维图形生成和变换技术5 1三维图形的概念5 2自由曲面的生成5 3三维图形变换5 4三维图形剪裁和消隐技术 5 4三维图形裁剪和消隐技术一 三维图形裁剪1 概述在二维图形裁剪过程中 图形视见区域是一个矩形窗口 落在此窗口内图形均可在屏幕视图区中显示输出 而在三维观察空间内 物体的视见区域是一个三维区域 和二维平面中定义窗口相类似 我们也可以在三维空间中定义一个子空间 并称这个子空间为三维窗口 常用的三维窗口有两种形状 一种是平行投影立方体三维窗口 另一种是透视投影的棱台 组成三维窗口的六个面 把整个三维空间分割成两部分 窗口内部分和窗口外部分 把落在窗口内的立体或部分立体从整个空间的立体群中分离出来 这就是三维裁剪所要做的工作 三维裁剪的过程包含两个基本阶段 第一阶段是几何处理阶段 在这个阶段中所做工作是用窗口平面去裁切立体 第二阶段是拓扑处理阶段 在这个阶段中所要做工作是把经截切后残留下来的信息重新组成新的立体模型 在三维图形处理中 只有经过三维裁剪后 才能对经裁剪后保留下来的立体进行消隐处理 最后送去作二维图形显示 2 三维编码裁剪法如图所示 立方体裁剪窗口六个面的方程分别是 空间任意两点p1 x1 y1 z1 和p2 x2 y2 z2 直线段p1p2端点和六个面的关系可转换为一个6位二进制代码表示 其定义如下 第1位为1 点在裁剪窗口的上面 即y 1 第2拉为1 点在裁剪窗口的下面 即y l 第3位为1 点在裁剪窗口的右面 即x 1 第4位为1 点在裁剪窗口的左面 即x 1 第5位为1 点在裁剪窗口的后面 即z l 第6位为1 点在裁剪窗口的前面 即z 1 如同二维线段对矩形窗口的编码裁剪算法一样 若一条线段的两端点的编码都是零 则线段落在窗口的空间内 若两端点编码的逻辑与 逐位进行 为非零 则此线段在窗口空间以外 否则 需对此线段作分段处理 即要计算此线段和窗口空间相应平面的交点 并取有效交点 对任意一条三维线段的参数方程可写成 裁剪空间六个平面方程的一般表达式为 把直线方程代入平面方程 求得 如求一条直线与裁剪空间上平面的交点 即将y 1 0代入 得 如t不在O到1的闭区间内 则交点在裁剪空间以外 否则将t代人直线方程可求得 这时三维线段与裁剪窗口的有效点为 类似地可求得其它五个面与直线段的有效交点 连接有效交点可得到落在裁剪窗口内的有效线段 对于透视投影的棱台其方法类似 请自行推导 3 三维中点分割裁剪法前面讨论的二维中点分割裁剪方法可以直接推广到三维 其原理和过程是完全相同的 对于平行投影和透视投影 仅仅是线段编码的处理和线段与体表面的交点计算不同 其它部分则完全相同 三维图形的消隐1 消隐技术概述在现实世界中 当我们观察空间任何一个不透明的物体时 只能看到物体上朝向我们的那部分表面 而其余的表面 物体背面 是不可能被我们看见的 在用计算机生成立体图形时 若将物体的所有部分都表现出来 不管是可见的还是不可见的 这样的图形所表示的物体形状是不清楚的 甚至是不确定的 是一个立方体的线条画 它的所有的边均无一遗落 全部画出 可以有两种解释 从立方体的左上方向下看 从立方体的右下方向上看 为了得到一个确定的 立体感强的投影图 就需要消除隐藏线和隐藏面 也就是在给定的投影图中 确定物体哪些边 面是可见的 消除那些不可见的棱线和表面 这就是所谓消隐问题 消隐问题是计算机领域的难题之一 目前 虽已提出了多种算法 但仍吸引着人们探索新的更有效的解决方法 而这方面研究工作又主要是寻求正确可靠 占用存储空间少 运算速度快的消隐算法 所有的隐线 隐面消除算法均和某种排序算法有关 排序的主要依据是被显示的点 线 面或体与观察点之间的几何距离 一个显示对象离观察点越远 那么它越是可能被其他物体所遮挡 这是排序的基本前提 当然 在确定了不同的对象离观察点的不同距离以后 还要对它们在x方向和y方向进行比较 以确定某个较远的对象实际上是否真的被较近的对象所遮挡 提高效率的主要途径是充分利用画面的相关性 也就是画面的某些性质在一些相邻的局部区域中是相同的或者相差甚微这一特征 消隐算法一般可以分为两类 区分的依据是消隐算法是在哪种空间中实现的 物体空间算法 算法是在描述要显示对象的物理坐标系中实现的图像空间算法 算法是在显示图形的屏幕坐标上实现的 物体空间算法有比较高的精度 生成的图形即使放大一定倍数后仍有令人满意的观感 因此在比较精密的对象显示方面有较多的应用 图像空间的算法在精度上不及前者 它最多到屏幕分辨率时就无法再提高精度 但计算效率较高 因为在图像空间中各种相关性可以得到充分应用 所以也有许多方法是在图像空间中实现的 2 几种消隐方法 l 背面消除背面消除虽不是一个完整的隐面消除方法 但它是隐面消除算法中的关键部分 在消隐问题中 单个凸多面体是最简单情形 凸多面体是这样形体 连接形体上不属于同一表面的任意两点的线段完全位于形体的内部 对于单个凸多面体背面消除即可达到隐面消除的目的 假设给定视点位置 为了决定一个面相对于视点为可见还是不可见 以图为例予以说明 定义垂直于物体平面且背离物体的直线向量为平面法线向量 定义从视点到物体表面上任一点直线方向为视线向量方向 那么利用这两个矢量之间夹角可以进行背面测试 只有当两个矢量之间夹角小于90O时面为可见面 如图所示 在某一表面内取两个向量p pl p2 p3 和q q1 q2 q3 它们向量积p q是一个与该向量所确定的平面垂直的法向量n p q n方向由右手法则定义 食指指向p的方向 中指指向q的方向 姆指所指的方向则是n的方向 为了得到符合上述要求的p和q 对所要考虑的表面按逆时针方向取出2 3 8号三个顶点 由2号点到3号点决定p 由2号点到8号点决定q 根据2 3 8号顶点坐标容易算出p和q的各分向量p1 p2 p3和q1 q2 q3 根据p和q 就可算出n因为 n p qn n1 n2 n3 所以nl p2q3 q2p3n2 p3q1 q3p1n3 p1q2 q1p2 视线向量v v1 v2 v3 由视点和2号坐标可求分向量v1 v2和v3 法向量n和视线向量v之间夹角有如下关系 v n v n cos 由于模总是正的 所以数量积v n符号只取决于cos 这就是说 如果能够算得数量积v n 便可根据它的正负号判定 大小范围 若数量积大于0 则 90 否则 90 如前所述 90 时表示表面可见 否则为不可见 数量积的计算可按下式进行 v n v1n1 v2n2 v3n3 综上所述 为了决定一个凸多面体的不可见面 对于每一个面进行以下几个工作 求平面的法向量n 求平面的视线向量v 计算v n 根据v n符号判别该面是否可见 对于单一的凸多面体而言 背面消除完全可以消除不可见面 而对于多个物体组成的复杂体 仅仅经过背面消除是不够的 还需作进一步测试 但是 背面消除是一个关键的步骤 简单地经过这个过程就可以消去大约50 的隐藏面 2 深度缓冲器法深度缓冲器法是图像空间中一种常用的方法 这种方法的基本思想是 对于显示屏上的每一个像素点 x y 测试一系列平面 记录下位于此像素投射线上最靠近观察点的平面的深度 除了深度外 一般还需记录下用以显示此对象的亮度值 一般的深度缓冲器算法采用两个数组 一个用来记录每一个像素点的深度值 一个用来记录此像素点所对应的亮度值 深度缓冲器算法的过程 1 对于屏幕上每一个像素点 x y 置深度缓冲器Depth x y 为一较大值 置亮度缓冲器为背景值 2 对于景中的每个多边形 找出多边形投影到屏上时位于其边界内的全部像素 x y 对于这些像素计算出此多边形在 x y 处的深度z 如果z Depth x y 此多边形相对于其它多边形在 x y 处更靠近观察者 所以置Depth x y z 置亮度数组为该多边形的亮度值 如果z Depth x y 说明该多边形在此像素点处被其它多边形隐藏 所以不采取任何行动 当对所有像素进行扫描后 深度缓冲器和亮度缓冲器分别包含了所有可见点及可见的亮度值 由于采用屏坐标系进行计算 所以每个像素点 x y 处的深度值可由如下方程直接算出 这样 当扫描线沿X方向增加一个单位时 像素点 x l y 处的深度值为 同理 当y y 1时 像素点 x y l 处的深度值为 3 画家方法所谓画家方法就是按照画家作画的过程形成一幅图像的方法 它是根据物体的远近程度的不同来完成隐面消除的 画家方法过程是 首先画底色 然后是最远物体 其后根据物体由远向近一层层覆盖 如图所示 物体按C B A次序进行显示 画家方法也称表优先级法 这种方法是介于物体空间算法和图像空间算法 它在物体空间预先计算物体各面可见性优先级 然后在图像空间产生消隐图 它是以深度优先级进行排序 按照多边形离观察者的远近来建立一张深度优先级表 离观察者远的优先级低 近的优先级高 当深度优先级表确定以后 画面中任意两个图形元素在深度上均不重叠 从而解决消隐问题 表优先级算法的基本思想是建好深度优先级表后 只要从优先级低的多边形开始 依次把多边形颜色填入帧缓冲存储器中以形成多边形图形 直到优先级最高的多边形图形送入帧缓冲器后 整幅图就显示好了 这一处理过程与画家创作一幅画过程类似 在建立深度优先表时 对于比较简单的画面 可直接按画中各元素的最大或最小z值排序 如图 a 所示的情形 但是 对于比较复杂的画面 若按最大或最小z值建立深度优先表 就容易出现错误的结果 如图 b 所示 若按最大z值对图形元素A B进行排序 则在深度优先表中 A应排在B的前面 按照这一顺序写入帧缓存器 B将部分地遮挡A 然而实际上是A部分地遮挡B 为了得到正确的处理结果需要在深度优先表中交换A B的位置 建立深度优先表时 常常出现的另一个问题是多边形的相互覆盖或多边形的相互贯穿 如图 a 所示 A在B的前面 B在C的前面 而C反过来又在A的前面 多边形相互贯穿时 也会出现类似的覆盖情况 如图 b 所示 P部分地位于Q的前面 而Q又部分地在P的前面 在这两个例子中 都无法根据物体的z值来建立确定的深度优先表 解决的方法是对多边形进行子分割 就是利用多边形所在平面间的交线来分割多边形 经过分割后的多边形就可以按z坐标值的大小进行排序 从而建立正确的深度优先表 4 Warnock方法Warnock算法也可叫区域细分算法 这种算法在图像空间中实现 它既可以用于消除隐藏线 也可以用于消除隐面 它适用于解决多边形所表示的画面的消隐问题 Warnock算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西双版纳球场施工方案
- 日照市岚山区2025届中考数学考前最后一卷含解析
- 农村水渠混凝土施工方案
- 丛林穿越项目施工方案
- 钢排架柱施工方案
- 乙腈管道施工方案
- 长螺旋隧道施工方案
- 钢筋施工方案及施工工艺
- 汕尾防滑路面施工方案
- 电商直播运营策略升级指南:2025年流量转化与用户粘性提升方案
- 电商企业海外中转仓库管理方法与经验
- 高压电气设备试验的基本知识
- 整理我的小书桌(课件)小学劳动二年级通用版
- 激光束传输与变换-第九讲课件
- 时空大数据讲义课件
- 2023年上海国企中远海运(上海)有限公司招聘笔试题库含答案解析
- 管工安全技术操作规程
- 曲臂车高空作业车施工方案
- 武汉某厂房设备基础施工方案
- 第4部分 质量经理-质量管理体系章节题-43题附有答案
- DL-T 736-2021 农村电网剩余电流动作保护器安装运行规程
评论
0/150
提交评论