版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机图形学第四章观察主要内容4.1经典观察4.2计算机观察4.3定位照相机4.4平行投影4.5透视投影4.6隐藏面消除4.7投影和阴影4.8裁剪4.1经典观察观察是指如何呈现建立好的场景,也即照相机的描述(摆放)方式观察的基本元素包括:对象观察者投影线和投影平面投影线相交于投影中心(COP)我们通常遇到的投影:投影面是平面,投影线是直线。4.1经典观察观察允许观察者距对象无穷远:COP移动到无穷远,则投影线会变成平行线,此时可以用投影方向(DOP)代替COP如果COP在有限远处,那么生成的是透视投影图如果COP在无限远处,那么生成的是平行投影图4.1经典观察经典观察想要表明在对象、观察者和投影平面之间的特定位置关系,当建筑师绘制建筑物的投影图时,他知道他想要显示建筑物的哪一面,因此也就知道观察者相对于建筑物应位于何处。因此,每一种经典投影图都是由对象和观察者之间的特定位置关系确定的。4.1经典观察经典观察可以生成许多不同的投影图,从多视图到一点、两点和三点透视。这些投影图是根据能看到的主面的多少进行划分的建筑对象等的表面往往由一些平面组成,这些平面可以看成一个主面(principalface)4.1经典观察正投影在所有的正投影(正交投影)中,投影线和投影平面垂直,投影面与对象的主面平行。一个投影图只能看到一个主面。在多视图正投影中,绘制多个投影图,每个投影图的投影平面平行于某个主面。4.1经典观察轴测投影可以在一个投影图中看到多个主面。投影线仍然垂直于投影平面,但投影平面相对于对象的方向可以是任意的。4.1经典观察轴测投影长方体形状的对象的一个顶点有三个主面相邻,如果投影平面的位置相对于这三个主面对称,则成为等轴测投影(右)。如果投影平面相对于两个主面对称,则为正二测投影(左)。一般情形是正三测投影(中)。4.1经典观察斜投影是最一般的平行投影,允许投影线和投影平面成任意角度。4.1经典观察透视观察在透视观察中,COP在有限远处,投影后尺寸会缩短;在经典透视投影中,观察者的位置相对于投影面是对称的,并且位于投影中心的垂线上;沿着每个主方向的平行线相交于有限远处的一点,称为主灭点;根据主灭点的多少,通常把经典透视投影分为一点、两点和三点透视
。4.2计算机观察计算机图形学中的观察建立在虚拟照相机模型的基础上,可以生成任何一种经典投影图。所有的经典投影图都依赖于对象、观察者和投影线之间的特定位置关系;计算机图形学中强调对象定义和照相机参数设置这两者之间的独立性;为了生成某种经典投影图,应用程序必须利用对象的信息来创建照相机,并将照相机放在恰当的位置。4.2计算机观察为了使观察过程更加灵活,计算机观察过程可以分解成两个基本的操作首先,必须设置照相机的位置和方向;该操作由模-视变换来完成;当顶点经过模-视变换的处理之后,它们将位于眼坐标系或照相坐标系中。第二步是使用投影变换。也就是把指定的投影应用于顶点,并且把位于指定的视见体内部的对象变换到位于裁剪坐标系中的裁剪立方体的内部。4.3定位照相机初始的模-视变换矩阵是单位矩阵,因此照相机坐标系和对象坐标系是重合的。照相机的初始方向是指向z轴的负方向,默认的照相机无法包含场景中的全部对象。要在照相机中包含全部对象,要么移动照相机,要么移动对象。4.3定位照相机在任何时候,照相机标架和对象标架之间的关系都由模-视变换矩阵决定。因此,可以通过应用一系列旋转和平移变换改变模-视变换矩阵来改变照相机标架和对象标架之间的关系;但要注意:1、在定义场景中的任何对象之前定位好象机;2、应用到照相机的变换所生成的图像看起来和我们期望看到的正相反。4.3定位照相机假定想从x轴的正半轴观察同一个对象。现在不但要把照相机从对象所在的位置移开,还要绕y轴旋转照相机。在绕y轴旋转90°之后必须进行平移。在程序中必须以相反的顺序调用变换函数,所以编写出的代码应该像下面这样:modelViewMatrix=mult(translate(0,0,-d),rotateY(-90));相机旋转实例4.3定位照相机一些图形系统API可以通过指定VRP、VPN和VUP来定位相机VRP(View-ReferencePoint,观察参考点),VRP是在对象标架下给定的,可以通过调用函数来指定:varviewReferencePoint=vec4(x,y,z,1);VPN(View-PlaneNormal,观察平面法向量,图中为n),给出了投影平面方向,或者说给出了照相机胶片平面的方向;varviewPlaneNormal=vec4(nx,ny,nz,0);VUP(View-UpVector,观察正方向),varviewUp=vec4(vupX,vupY,vupZ,0);VUP投影到观察平面上得到v,v与n正交,v与n叉积得到与v、n都正交的u,uvn构成了观察坐标系。4.3定位照相机更直接定位相机的方式—LookAt函数如图,照相机位于点e,该点称为视点,坐标为(eyex,eyey,eyez),照相机指向另外一个点a,该点叫做参考点或者目标点,坐标为(atx,aty,atz)。LookAt函数实例4.3定位照相机更直接定位相机的方式-lookAt函数视点e(eyex,eyey,eyez)和目标点a
(atx,aty,atz)确定了VPN和VRPvpn=a-e,对其归一化就得到n=vpn/|vpn|只需再对照照相机指定想要的观察正向up,则用于构造观察方位矩阵的lookAt函数可能具有这样的形式LookAt(eye,at,up)。4.3定位照相机更直接定位相机的方式-lookAt函数4.3定位照相机其他观察API在飞行模拟器中,飞行员通常用三个角度,即滚转角(roll),俯仰角(pitch)和偏航角(yaw)来指定方向。基准点是飞行器的质心,基准方向是飞行器机身的三个轴向。根据这三个角度和对象到飞行器质心的距离,可以用一个平移和三个简单的旋转构造出观察变换。4.3定位照相机其他观察API在许多应用中,指定观察最自然的方式是通过极坐标在观察者的位置定义一个法向量,并由这个法向量定义一个平面,并可定义另外两个坐标轴;观察者与对象之间可以定义仰角(Elevation);方位角(Azimuth)是从该平面内的一个坐标轴旋转到观察者和对象连线在该平面内投影的角度;照相机还可以绕它所指的方向旋转,这个旋转的角度称为扭转角(twistangle)。4.4平行投影
4.4平行投影WebGL提供了唯一的一个平行投影观察函数ortho(left,right,bottom,top,near,far)该投影的视见体是一个直平行六面体,裁剪体的四个侧面为:x=right,x=left,y=top,y=bottom近裁剪平面(前裁剪面)相距原点的距离为near,而远裁剪平面(后裁剪面)相距原点的距离为far。nearandfarmeasuredfromcamera4.4平行投影
4.4平行投影4.4平行投影使用投影规范化(projectionnormalization)技术,可将所有的投影转化为正交投影,因此视见体变形为规范视见体,从而相同的绘制流水线可以既支持透视投影又支持平行投影。4.4平行投影斜投影斜投影的投影线不与投影平面垂直,但它的近裁剪面和远裁剪面都平行于投影平面,右面、左面、顶面和底面都平行于投影方向。4.4平行投影
4.4平行投影
4.5透视投影使用镜头是有限长焦距的照相机或使用投影中心距离镜头有限长的虚拟照相机模型获得的就是透视投影。透视投影也采用lookAt函数定位照相机。透视投影过程可以看成是一个变换,它把点(x,y,z)映射为另一个点(xp,yp,zp)。尽管直线仍变换为直线,但不是仿射变换;透视投影不是可逆的,因为一条投影线上所有的点都会投影到同一点。4.5透视投影
4.5透视投影
4.5透视投影可以通过frustum(left,right,bottom,top,near,far)来指定一个棱台视见体(左)也可以通过perspective(fovy,aspect,near,far)函数,设置视角或者视域来指定视见体(右)4.5透视投影如果考虑照相机的性质,则位于视角以外的对象需从场景中裁剪掉。因此,左图中无限的视锥体就需要像平行投影一样定义视见体。在透视投影中,视见体是一个棱台,或者说是一个截头锥体。4.5透视投影
4.5透视投影假定视见体的侧面和投影平面之间的夹角为45°,那么视角固定为90°。换句话说,视见体是由x=
z,y=
z四个平面构成的无穷棱锥。为了得到有限的视见体,还需指定近裁剪面z=-near和远裁剪面z=-far,其中near和far分别是从投影中心到近裁剪面和远裁剪面的距离,满足0<near<far。4.5透视投影
4.5透视投影
4.5透视投影
4.5透视投影
4.5透视投影perspective(fovy,aspect,near,far)函数4.6隐藏面消除如果一个物体不透明,那么根据特定的观察方向,观察者只能看到面向观察者的面,看不到的面应该删除。在图形系统中,处理不可见面的算法,称为隐藏面消除算法。隐藏面消除算法分类两类:1、对象空间算法:试图对场景中对象的表面排序,按照所排列的顺序来绘制表面可以得到正确的图像。为了确定绘制对象的正确顺序,图形系统必须能够获取所有对象的信息,这样才能把它们按照从后到前的顺序排列。2、图像空间算法:试图确定每一条投影线与对象表面形成的所有交点之间的关系。4.6隐藏面消除比较出名的消隐算法是z缓存算法,它是一种图像空间算法,其基本思想如图所示:从COP出发的每一条投影线和两个表面相交,由于圆比三角形离观察者更近,所以如果这条投影线与投影平面的交点对应于颜色缓存中的某个像素,那么该像素的颜色就由圆来决定(只显示每条投影线上最近的点)。因此,需要一个深度缓存来存储必要的深度信息。深度缓存的大小和分辨率与颜色缓存的相同。4.7投影和阴影投影变换矩阵的一个有趣的应用是生成简单的阴影。考虑如图所示的由点光源所生成的阴影。假定阴影落在了y=0平面上,这个阴影是平面多边形,称为阴影多边形,同时它还是原来多边形在地面的投影。如果通过平移T(-xl,-yl,-zl)将光源移到原点,则可通过透视投影矩阵M就可求出阴影多边形。4.8裁剪
位于定义好的视见体内部的图元可以通过裁剪模块,或者说被裁剪模块所接受(accepted),而不会在屏幕上显示的图元则被裁剪模块删除[丢弃(rejected)或剔除(culled)]。对于只有一部分位于视见体内部的图元,必须通过裁剪模块将位于视见体之外的部分裁减掉。4.8裁剪裁剪处理可以发生在观察流水线的一个或多个地方。建模器可能首先对图元进行裁剪处理,从而减少了图形硬件必须处理的图元数量。当把图元从三维对象投影为二维对象后也可以对它进行裁剪处理。二维线段裁剪是图形裁剪的基础,它可以直接扩展到三维裁剪和多边形裁剪。4.8裁剪线段的裁剪线段的二维裁剪问题如图所示,从上图可以看到:线段AB会显示在屏幕上,而线段CD不会显示在屏幕上。线段EF和线段GH在显示之前必须裁减掉位于裁剪窗口之外的部分。尽管一条线段完全由它的两个端点确定,但是从线段GH可以看到,即使线段的两个端点都位于裁剪窗口之外,它的一部分线段仍有可能显示在屏幕上。可以计算线段所在的直线与裁剪窗口各条边的交点,从而确定必要的裁剪信息。然而,如果可能的话,希望避免这种求交计算,因为每个求交过程都需要进行浮点除法运算4.8裁剪
4.8裁剪
4.8裁剪
4.8裁剪
4.8裁剪
4.8裁剪
4.8裁剪多边形裁剪多边形裁剪不能简单地用直线裁剪算法对多边形各边进行裁剪实现。因为计算机图形学中的多边形通常被认为是封闭的,它把平面分为多边形内和外,也便于对多边形进行填充。如果把多边形分解为边界的线段逐渐裁剪,则只能得到一些离散的线段并可能导致本来封闭的多边形变得不封闭。4.8裁剪多边形裁剪多边形的裁剪算法主要解决两个问题:一个封闭的多边形被裁剪后通常变得不再封闭,需要用窗口边界的适当部分来封闭它;一个凹多边形被裁剪后可能形成几个多变形,要正确封闭它们。矩形窗口裁剪一个凸多边形最多只能生成一个凸多边形,因此图形系统要么禁止使用凹多边形,要么将一个凹多边形剖分(细分)成一组凸多边形4.8裁剪多边形裁剪Sutherland-Hodgeman多边形裁剪算法把线段裁剪模块视为一个黑盒子,输入是待测试或待裁剪线段的一对端点坐标,输出或者是裁剪后线段的一对顶点坐标,或者当输入线段完全位于裁剪窗口之外时,不输出任何东西。将裁剪窗口视为由4条无限长的直线相交而成的矩形对象,这4条无限长的直线确定了裁剪窗口的顶边、底边、右边和左边。将裁剪模块分解成由更简单裁剪模块组成的流水线结构,其中的每个裁剪模块都使用裁剪窗口某条边延长后的直线对多边形进行裁剪处理。4.8裁剪
4.8裁剪多边形裁剪Sutherland-Hodgeman多边形裁剪算法分别使用裁剪窗口的底边、顶边、右边和左边进行独立的裁剪处理,裁剪时使用与上面相同的公式计算交点,这4个裁剪模块可以构成如图所示的流水线结构。4.8裁剪多边形裁剪Sutherland-Hodgeman多边形裁剪算法下图所示的简单例子显示了对一个多边形进行连续裁剪的情况。4.8裁剪其他图元的裁剪包围盒与包围体假定有一个具有很多边的多边形,如左图所示。可以采用前面介绍的某个裁剪算法对该多边形进行逐边裁剪。然而,可以看到该多边形完全位于裁剪窗口之外。通过观察可以发现,使用与坐标轴对齐的包围盒或多边形区域[参见下图]来进行裁剪处理,多边形的包围盒是指与裁剪窗口的边对齐且包含该多边形的最小矩形。要计算多边形的包围盒,只需要比较多边形所有顶点的坐标值并求出最大和最小的x值和y值。4.8裁剪其他图元的裁剪包围盒与包围体有了包围盒,通常可以避免对多边形进行复杂的逐边裁剪。如图所示的三种情况。对于位于裁
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络安全威胁情报师绩效考核表
- 加强安全意识预防传染病小学主题班会课件
- 通讯行业售后服务专员服务响应与问题解决能力绩效考评表
- 网络营销专员流量转化率绩效评定表
- 职位十七市场专员考评表
- 小学生心理健康教育主题:培养阳光心态小学主题班会课件
- 2026年经济专业技术资格考试(中级)《工商管理专业知识与实务》试题及答案
- 筑牢防火墙安全用电小学一年级主题班会课件
- 信息安全事情紧急响应指导书手册
- 脚手架搭设操作规程
- 2025年湖南省长沙市初中学业水平考试中考(会考)地理试卷(真题+答案)
- 机房保洁除尘方案(3篇)
- 旅游景区餐饮管理制度
- 中医药器材文化
- 北师大版2025年八年级数学下册计算题专题训练专题04分式的混合运算(计算题专题训练)(学生版+解析)
- 应收应付款管理制度
- 林业行政处罚流程
- 飞机构造基础(完整课件)
- 退休人员劳务用工合同范本
- 2023年四川阿坝州遴选(考调)和选调公务员考试真题
- 2024年预防接种理论知识竞赛考试题库(含各题型)
评论
0/150
提交评论