版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机图形学第九章高级建模与高级绘制主要内容9.1层级建模方法9.2过程建模方法9.3光线跟踪9.4辐射度方法9.5全局光照和路径跟踪9.6并行绘制9.7体绘制9.8基于图像的绘制9.1层级建模方法非层级建模客观世界中的物体都是三维的,真实地描述和显示客观世界中的三维物体是计算机图形学研究的主要内容之一。模型是对世界的抽象,如何存储一个由许多复杂对象组成的模型是利用计算机生成虚拟世界的基础。因此,需要解决两个直接相关的问题:1)如何定义一个复杂的对象?2)如何表示这些复杂对象的组合?一种较通用的做法是将要描述和现实的客观世界看成是一个场景(Scene),这个场景由很多离散的对象组成。因此,只需对这些对象进行几何建模,然后将这些几何模型组合到一起就得到了场景模型,这种场景模型构建方式称为非层级建模方法或者离散建模方法。这种建模方法的实质是将现实世界对象抽象为一个个的几何模型。9.1层级建模方法非层级建模目前大多数图形库API对图元采取最小完备的观点,即它们只包含少数的基本图元,用户基于这些基本图元可以构建更复杂的对象,如WebGL只提供了点、线、面等基本图元。某些附加的图形绘制函数库也会提供了一些建立在这些基本图元之上的复杂对象,如Three.js库就提供了球体、圆柱体、圆锥体等复杂对象。为了精细地描述场景,一般将场景中能够离散的对象抽象为几何模型,这些几何模型通常是根据自身的几何特征表示为由基本几何模型,经过合适的大小和方位变换得到。基本几何模型可以是立方体、球体、圆柱体等几何体,也可以是平面、字体和一些应用程序专用的图形对象。9.1层级建模方法非层级建模当基本几何模型通过几何变换将图符从建模坐标系变换到世界坐标系时就变成了场景中对应的几何模型,即完成了场景中一个几何对象的建模。这个几何变换过程也称实例变换,相应地,变换后得到的几何模型也称为实例。实例变换矩阵是平移变换矩阵、旋转变换矩阵和缩放变换矩阵等的组合。9.1层级建模方法非层级建模当基本几何模型通过几何变换将图符从建模坐标系变换到世界坐标系时就变成了场景中对应的几何模型,即完成了场景中一个几何对象的建模。这个几何变换过程也称实例变换,相应地,变换后得到的几何模型也称为实例。实例变换矩阵是平移变换矩阵、旋转变换矩阵和缩放变换矩阵等的组合。这样,当场景中的对象都已经用实力变换得到,则场景就可用图所示的表格来存储这个场景。9.1层级建模方法层级建模为了表示物理模型各部分之间的关系,可以使用树和有向无环图这样的层级表示方法。如左图所示的树结构表示汽车模型各个部件之间的关系:车身底盘是根节点,四个轮子是它的孩子节点。由于大多数汽车的四个轮子都是相同的,所以四个轮子节点存储相同的信息并绘制每一个轮子是一种低效的方法。因此,可以使用右图的有向无环图代替左图的树结构。9.1层级建模方法层级建模层级模型在机器人研究领域应用较广,如图的机器人手臂,可以使用三个简单的对象或图符来建立;这个机械装置具有三个自由度:两个是机械部件之间的关节连接角度,另一个是底座相对于地面某个固定点的旋转角度。9.1层级建模方法层次建模的树状表示左图是一个类人机器人的盒状表示,它可用于机器人建模或虚拟现实应用中。如果把机器人的躯干作为根节点,那么可以使用中图所示的树状结构表示该机器人。一旦确定了机器人躯干的位置,就可以通过与之相连的关节角度确定该模型其他部件的位置和方向,实际上,每个节点的变换矩阵是一个平移变换矩阵与一个旋转变换矩阵的乘积形式,如右图所示。9.1层级建模方法
9.1层级建模方法层次建模的应用1)模型绘制添加了变换矩阵的树状结构建好以后,就可以通过遍历这颗树来绘制机器人。比较常用的是使用先左后右的深度优先遍历(也称为先序遍历)算法,即沿着树左子树开始访问节点,一直遍历到树叶子节点,然后回溯到书上层访问第一个右子树,照此一直递归下去。9.1层级建模方法层次建模的应用2)关节动画层级模型综合考虑了模型各个部件的物理关系,因此可以使用这种层级结构模型模拟它们的合成运动。前面建立的机械手臂和机器人模型都是关节式链接模型,即它们都包含--些由关节连接起来的刚体部件。只要改变很少的一些参数值就可以使这些模型随时间变化而改变位置,即绘制这些模型的动画效果。这样的关节动画就是在某些关键位置设置关键帧,通过对关键帧之间的关节角度插值自动实现中间帧插值。帧——就是动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。在动画软件的时间轴上帧表现为一格或一个标记。关键帧——相当于二维动画中的原画。指角色或者物体运动或变化中的关键动作所处的那一帧。关键帧与关键帧之间的动画可以由软件来创建,叫做过渡帧或者中间帧。9.1层级建模方法层次建模的应用3)场景图场景可以看成是视域范围内对象的组合体,包括几何模型、材料和光源等,这些对象可以按组和相关的层次关系进行组合。通过层级建模,可以将场景转换为树状的场景图。场景图中包含了对象的分组信息、材质信息、颜色信息、变换信息等等,这些信息以及对象绘制方法可以利用对象封装技术封装起来,从而将复杂场景简单化,9.1层级建模方法层次建模的应用3)场景图——开放场景图(OpenSceneGraph)OpenSceneGraph(简称OSG)使用OpenGL技术开发,是一套基于C++平台的应用程序接口(API)OpenGL技术为图形元素(多边形、线、点……)和状态(光照、材质、阴影……)的编程提供了标准化的接口。而OSG开发的主要意义在于,将3D场景定义为空间中一系列连续的对象,以进行三维世界的管理。OSG可运行在所有的Windows平台、OSX、GNU/Linux、IRIX、Solaris、HP-Ux、AIX、Android和FreeBSD操作系统。9.1层级建模方法层次建模的应用3)场景图——开放场景图(OpenSceneGraph)正是由于场景及其参数定义的特点,通过状态转化、绘图管道和自定制等操作,OSG还可以用于优化渲染性能。OSG使用遮挡剔除(occlusionculling)和层次细节(LevelOfDetail,LOD)这两种实时绘制策略来减少复杂场景的绘制负荷。遮挡剔除用来裁剪哪些被其他对象遮挡的不可见对象,裁剪的时机是他们进入绘制流水线之前;LOD技术可根据需要使用对象的不同几何复杂度模型。9.1层级建模方法层次建模的应用4)构造实体几何表示法(ConstructiveSolidGeometry,CSG)构造实体几何表示法通过对原子几何实体,如平行六面体、圆柱体和球体等实施并、交和差的集合运来实现复杂模型构建的建模方法。9.1层级建模方法层次建模的应用5)BSP树(BinarySpatial-PartitionBSP)树结构除了可以描述对象各部分之间的层级关系,还可以用来描述场景的对象空间,并把对象组之间的空间关系封装起来。BSP树就是利用对象之间可见性测试来确定哪些对象是可见的,哪些是不可见的。9.1层级建模方法层次建模的应用6)四叉树和八叉树BSP树用于划分多边形的平面可以具有任意的方向,因此构建BSP树的计算开销很大。例如,多边形排序与经常出现的多边形分割都需要大量的计算开销。四叉树和八叉树由于使用与坐标轴平行的划分平面或划分直线,所以可以避免出现这个问题。中图即为左图第一次分割的情景,右图为与左图对应的四叉树。9.1层级建模方法层次建模的应用6)四叉树和八叉树在三维空间,四叉树扩展为八叉树。使用与坐标轴平行的平面划分空间,每次把空间划分成8个子空间。如左图所示。八叉树可用来表示体数据集,它由基本的体素(voxel)构成。如右图9.2过程建模方法使用层级建模方法(多边形模型)可以很容易地使用多边形表示规则物体并在现有的图形系统上绘制出来。但对于像云彩、烟雾等物理对象,多边形建模方法无法给这些物理对象增加物理约束条件,也无法表示物理对象的复杂行为。过程建模方法使用算法表示对象底层的物理对象,在绘制过程中只有需要的时候才绘制多边形,适合用来表达自然对象。9.2过程建模方法过程建模方法可以将计算机图形学与物理规律结合起来,实现自然景观的模拟,主要有以下四类:粒子系统:粒子遵守牛顿物理定律,通过求解一组微分方程模拟一些复杂的行为。基于语言的建模:使用类似于表示自然语言和计算机程序设计语言的文法模型代替多边形模型。分形几何:基于在许多自然现象中看到的自相似性,可以提供任一层次细节模型。基于过程噪音的建模方法:把数量可控的随机性引入模型中。9.2过程建模方法基于物理的建模和粒子系统基于物理的建模是一种让图形对象遵守物理规律的建模方法,主要有两种实现方式:方法一:模拟底层处理过程的物理规律,并利用这种物理规律来控制图形对象的行为;例如,如果想让一个实体对象看起来像在空中翻筋斗,并在各个表面之间来回弹跳,那么至少在理论上可以使用动力学和连续介质力学方面的知识推导所需的方程。方法二:把基本的物理原理和数学约束条件结合起来控制对象的行为。粒子系统使用的就是这种方法。9.2过程建模方法粒子系统粒子系统是许多粒子的集合,这里的粒子通常是指质点,可以通过求解微分方程组来确定粒子的动态行为。一般在实际中并不求解偏微分方程,而是生成一群受各种约束条件限制的粒子来模拟系统的动态行为。粒子系统已经在许多领域用来模拟对象的各种行为,例如在流体力学领域,研究人员使用粒子系统模拟湍流的行为。也可以使用粒子建立实体对象模型。例如,可以使用一个三维粒子阵列来模拟可变形的实体对象,且其中的粒子由弹簧连接起来。当对象受到外力的作用时,粒子就会移动并使它们的位置近似表示实体对象的形状。9.2过程建模方法粒子系统然而,仅仅根据一组微分方程来改变一群粒子的状态,这对于模拟真实世界中的碰撞等行为还是不够的。在实际中,可以把一些条件(比如两个实体不能互相穿透)视为约束条件,这些约束条件独立于那些决定每个粒子行为的物理定律。可以把两类约束强加于粒子。一类是硬约束(hardconstraint),是指那些必须严格满足的条件。例如,一个球碰撞墙面后一定会弹回来,它不可能穿墙而过。我们也不允许球仅仅接近墙面,然后就从另一个方向离开。另一类是软约束(softconstraint),是指那些只需近似满足即可的条件。例如,我们希望粒子网格上两个粒子之间的距离近似为某个指定的距离即可。9.2过程建模方法粒子系统计算机图形学领域的研究人员已经使用粒子系统建立了许多对象的模型,如烟火、鸟的群聚行为以及波浪起伏的行为等。在这些应用中,粒子系统的动力学规律确定了粒子的位置,而在每个位置上,可以放置一个图形对象,而不是一个点。在所有这些示例中,处理的都是一群粒子,把其中的每个粒子视为一个质点。根据物理规律得到粒子的运动方程,并用数值方法求解这些方程,从而得到这些粒子在每个时刻的状态。然后再把每个粒子作为一个图形对象来绘制,对于烟火粒子系统,粒子可能是一个有颜色的点,或者对于粒子动画系统,粒子可能是一个卡通人物。9.2过程建模方法粒子系统所以,一个典型的粒子系统在一个仿真周期内需要完成:通过用户自定义函数计算作用于n个粒子上的力;通过数值微分方程求解系统受这些力作用后的状态;根据这些粒子的新位置及其属性绘制粒子所处位置的图形对象。粒子效果9.2过程建模方法基于agent的建模(agent-basedmodel,ABM)基于代理的建模(agent-basedmodel,ABM)是一种用来模拟具有自主意识的智能体(独立个体或共同群体,例如组织,团队)的行动和相互作用的计算模型。相比于粒子系统中每个粒子都是相同的,在基于agent的建模中,每个agent都具有自身属性,例如,在猎物-捕食者的模拟中,猎物与捕食者具有不同的行为。同时,agent还能够对周围的环境产生影响。例如,在蚂蚁的行为建模中,当蚂蚁移动的时候,它们会留下信息素作为其他蚂蚁的化学跟踪信号。9.2过程建模方法基于语言的建模对于具有层级结构的图形对象,可以将一组规则和树结构模型结合起来,这种系统称为L系统,也称为正规文法模型;一个文法可以用一组符号和一组符号规则(也称产生式)来定义;产生式确定了如何用一个或多个符号来替换一个符号,如:A->BC,B->ABA;一旦给定一组产生式,就能生成无线长度的字符串。9.2过程建模方法基于语言的建模将树文法中的字符换成图形对象,就可以用来生成规则并把得到的字符串解释为图形对象。例如,如果一条产生式规则为:F→FLFRRFLF,F代表向前一个单位,L代表左转,R代表右转,如果转角固定为60°,则规则的图形解释为如左图;如果再次将规则同时应用到F实例的所有情况,则得到Koch曲线,如中图;如果把它应用到一个三角形,就能得到如右图的Koch雪花图形。9.2过程建模方法
9.2过程建模方法基于语言的建模使用进栈和出栈生成植被两侧的分支如规则F→F[RF]F[LF]F加随机应用可生成如右图的两棵树。也可以根据形状和仿射变换来直接描述文法,如Sierpinski镂垫可以根据三个仿射变换来定义细分细节。9.2过程建模方法递归方法和分形分形几何是由Mandelbrot创建的一个数学分支利用了许多现实世界对象的自相似性;提供了另一种用简单程序生成复杂对象的方法,由分型几何方法生成的图形对象称为分型物(graftal);分形几何有两大支柱:与几何尺寸和自相似性相关9.2过程建模方法
9.2过程建模方法递归方法和分形分形在计算机图形学中最著名的分型应用就是生成山脉和地形通过增加在中点的替换,可以通过四面体的细分过程来产生山脉。9.2过程建模方法递归方法和分形著名的Mandelbrot集是分形几何中一个有趣的例子通过复平面的变换,可以生成Mandelbrot集9.2过程建模方法过程噪音图形噪声,是计算机图形学中一类随机算法,经常用来模拟自然界中的各种纹理材质。通过不同的噪声算法,作用在物体纹理和材质细节,我们可以模拟不同类型的材质。9.2过程建模方法过程噪音一个基础的噪声函数的入参通常是一个点坐标(这个点坐标可以是二维的、三维的,甚至N维),返回值是一个浮点数值:noise(vec2(x,y))。然后将这个浮点值转成灰度颜色,就形成了噪声图。9.3光线跟踪光线跟踪是对基于局部光照模型绘制的一个逻辑扩展。该方法基于先前的观察结果,即对于光源发出的所有光线,对最终绘制的图像有贡献的只是那些进人虚拟照相机镜头并到达投影中心的光线。下图显示了一个点光源与一些理想镜面反射面之间可能的几种相互作用方式。从图可以看出,进人虚拟照相机镜头的光线,有的直接来自于光源;有的来自于光源与虚拟照相机(即视点)可见的对象表面之间相互作用形成的光线,这些光线可能是经过其他对象表面多次反射形成的反射光线;有的来自经过一个或多个对象表面的折射形成的折射光线。9.3光线跟踪离开光源的大部分光线并没有进人虛拟照相机的镜头,这些光线对最终绘制的图像没有任何贡献。因此,试图跟踪光源发出的所有光线来进行绘制是十个很耗时的方法。然而,如果按相反的方向来看光线,并且只考虑那些来自于投影中心的光线,显而易见,这些投射光线(castrays)对绘制的图像一定有贡献。因此光线跟踪器的初始模型如下图所示。9.3光线跟踪该图包括一个成像平面,并且成像平面被划分成像素大小的区域。由于必须给每个像素赋一种颜色,所以必须至少投射一条光线通过每个像素。每条投射光线要么与对象表面相交,要么与光源相交,要么不与对象表面相交而射到无穷远处。当投影光线与对象表面相交时(目前假定场景中所有对象表面都是不透明的),则需要在交点处进行着色计算(即计算明暗值或颜色值)。9.3光线跟踪光线跟踪算法并不马上利用光照模型计算交点的明暗值或颜色值,而是先检测投射光线和对象表面之间的交点是否被光源照亮。从对象表面上的点到每个光源,都需要计算阴影光线(shadowrays)或试探光线(feelerrays)。如果阴影光线在到达光源前与某个对象表面相交,那么光线被遮挡而不能到达考虑中的那个点,该点处于阴影中,至少是这个光源的阴影,则不需要计算光源在该点的光照强度。如果所有对象表面都是不透明的,而且不考虑对象表面之间反射形成的反射光,那么所得到的图像是在没有使用光线跟踪绘制得到的图像上再增加了阴影效果。右图显示了分别与立方体和球体表面相交的两条投射光线(虚线)所对应的阴影光线(实线)。其中,立方体的一条阴影光线与圆柱相交,因此投射光线与立方体的交点只被其中的一个光源照亮。9.3光线跟踪假如对于一些具有高反射属性的表面,如下图所示的对象。可以跟踪阴影光线在对象表面之间的来回反射,直到反射到无穷远处,或者与光源相交为止。左边的投射光线与一个镜面相交,其对应的阴影光线可以通过镜面反射到达左光源,因此如果该镜面位于另一个光源的前面,则投射光线与镜面的交点只被其中一个光源照亮。右边的投射光线与球面相交,在这种情况下有两条阴影光线,其中一条阴影光线通过镜面反射到左光源,此外,由于另一条阴影光线可以直接到达左光源,因此投射光线与球面的交点除了被左光源间接照亮外,还被左光源直接照亮。这个计算过程通常使用递归来实现,并且还要考虑表面材质对光的吸收作用。9.3光线跟踪光线跟踪特别适合于处理同时具有反射和折射属性的表面。从投射光线角度看,折射光和反射光可能和其他对象表面相交,或终止于光源,或射到无穷远处,如左图所示。中图显示了一条投射光线和它经过一个简单场景的路径,右图为所生成的光线跟踪树,它在光线跟踪过程中动态生成,它说明了我们必须跟踪哪些贡献。9.3光线跟踪光线与物体的求交是光线跟踪算法的核心,主要包括:光线与球的求交光线与多边形求交光线与二次曲面求交9.4辐射度方法辐射度方法通过采用能量守恒的方法模拟场景中物体之间的漫反射之间的相互作用问题,这种方法最先应用于解决热传递的问题。基本的辐射度方法把场景分解成很多面片(patch,小平面多边形),每个面片都假定是明暗值为一个常数的理想漫反射面。于是就可以计算这些面片的明暗值,然后有效地将颜色赋给每个面片。9.4辐射度方法
9.4辐射度方法
9.4辐射度方法
9.4辐射度方法排列因子F的计算如下图所示,假设pi和pj为两个具有理想漫反射性质的平面面片,由于面片pi上两个不同的点到达pj上某一点的距离不一样从而造成光强不一样,因此,为了计算所有pi到达pj的光线,必须对pj进行积分,反之同理。9.4辐射度方法
9.4辐射度方法排列因子F的计算对于真实的场景,需要使用数值求解的方法第一种,使用一个半球体将两个面片隔开,将pj投影到半球体上,然后用极坐标系进行计算。另外一种是使用半立方体,将半立方体分割成很多小正方形,然后将pj投影到半立方体上进行求解。9.4辐射度方法实现辐射度算法1)将场景分割成一个由许多面片组成的网格;这个步骤需要一些技巧,因为分割后的面片越多,需要计算的排列因子也越多。可以从一个很粗糙的网格开始,然后对它逐步细化,称之为渐进辐射度方法(progressiveradiosity),如下图所示。2)计算排列因子;3)求解辐射度方程确定矩阵b。9.5全局光照和路径跟踪在真实场景中,一个对象表面的明暗度由三个分量组成:1)对象本身的发射光;2)直接照射对象并沿视线反射的光;3)场景中其他表面反射的光,也称为间接光照(indirectillumination)。无论是流水线绘制器还是光线跟踪器,对间接光照的模拟都特别困难。对于流水线绘制器,通过增加一个环境分量来近似;对于光线跟踪器,仅仅跟踪反射和折射光线而忽略了漫反射表面的反射光线;辐射度方法因为要求所有的对象表面材质都是理想漫反射面,所以只提供了部分解决方案。9.5全局光照和路径跟踪路径跟踪(Pathtracing)通过使用蒙特卡洛方法来近似模拟每个表面的BRDF(BidirectionalReflectanceDistributionFunction)路径跟踪方法沿着试探光线随机地选择一个或多个方向继续跟踪路径,而不是将试探光线发射到光源;在与光线相交的每个表面,通过相同的概率生成路径的方向,这样一直跟踪下去,知道光线与光源相交或者确定光线射到无穷远处。对于跟踪的每条路径,都必须记录光线被每个表面吸收的累计损耗。9.5全局光照和路径跟踪下面两图说明了光线跟踪与路径跟踪的区别。左图显示了一条从视点发射的光线,它与一个不透明的漫反射球体相交于P点。通过计算到光源的阴影光线,可发现球体和光源之间没有其他的表面。跟踪反射光线s,该光线射到无穷远处,对生成的图像没有贡献。右图中,同样的一条从视点发射的光线与球体相交于P点,但是现在通过三次采样BRDF得到光线a,b和c。在路径跟踪中,并不向光源投射光线,也不计算光源在P点的漫反射贡献。光线a与灰色的多边形相交于Q点。在Q点采样BRDF并在多个方向生成新的跟踪光线。光线c与蓝色的多边形相交于R点,可以对R点做同样的处理。光线b不与任
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高等学校教师职业修养
- 苏打粉企业管理方案
- 苏教版五年级(下册)口算题教材同步
- 数控编程基本知识
- 2026杭州外办面试题目及答案
- 2026河道管养面试题及答案
- 水泥化学知识基础教程
- 水泥行业主要生产工艺、职业病危害因素识别和防护措施
- 当代大学生就业趋势分析
- 数字孪生在国内外工业工程应用的热点和趋势分析
- 配电网单相接地故障场景分析及实测波形研究
- 2025年中国会计指数研究报告-中国人民大学
- ISO9001-2026质量管理体系中英文版标准条款全文
- 小学实验室安全知识培训课件
- 山西建设工程施工合同(标准版)
- 产品品质标准化生产与管控指南
- 护理安全消防知识培训课件
- 2025年特种设备检验人员资格考试(场(厂)内专用机动车辆检验员CCY)历年参考题库含答案详解(5套)
- DB13∕T 5984-2024 河湖生态清淤工程勘察测量技术规程
- 高校设计教学课件
- 2025年古典音乐理论考试试卷及答案
评论
0/150
提交评论