几何物体的表示(3)
几何物体的表示 隐式曲面 细分曲面 物体的CSG树表示 自然景物表示方法
几何物体的表示 隐式曲面 细分曲面 物体的CSG树表示 自然景物表示方法
隐式曲面 {(x,y,z)R3: f (x,y,z)=0} R3中的隐式曲面表示为: 三维空间中的一个二维曲面(二维流形)
隐式曲面举例 球面:x2 + y2 + z2 = 1 圆柱面:x2 + y2 = 1
隐式曲面与参数曲面的比较 与参数曲面相比,隐式曲面的优点 隐式曲面可以表示具有复杂拓扑的形状 NURBS曲面只能表示拓扑等价于矩形的四边曲面 NURBS曲面表示非退化封闭光滑曲面时,需要光滑拼接 隐式曲面比NURBS曲面更适合于进行布尔运算、光线跟踪、点集判断等
隐式曲面与参数曲面的比较 与参数曲面相比,隐式曲面的不足 隐式曲面表示不直观,难以进行外形的交互修改。NURBS曲面的外形控制手段非常直观
隐式曲面与参数曲面的相互转化 隐式化:从参数曲面到隐式曲面 参数化:从隐式曲面到参数曲面 消除NURBS曲面的两个参数(u,v)得到其隐式表示 参数化:从隐式曲面到参数曲面 并非所有的隐式曲面都可以参数化 对于非退化的二次代数曲面和具有一个奇异点的三次代数曲面,可以进行有理多项式参数化
基于点、直线混合骨架的Metaball造型 图形学中常用的隐式曲面造型技术 基于骨架的隐式曲面造型 基于点、线和面骨架的Metaball方法 基于骨架的卷积曲面 基于点骨架的Metaball造型 基于点、直线混合骨架的Metaball造型
图形学中常用的隐式曲面造型技术 代数曲面片造型技术,包括二次代数曲面、A-Patch方法等 代数曲面片造型
隐式曲面的显示 多边形化:用平面多边形逼近隐式曲面, Marching Cube方法 光线跟踪:生成高质量的图像 粒子系统:在隐式曲面上均匀布撒粒子 多边形化 光线投射 粒子系统
几何物体的表示 隐式曲面 细分曲面 物体的CSG树表示 自然景物表示方法
细分曲面 Chaikin算法(1974):均匀二次B-样条曲曲线的离散生成 输入多边形折线 每次在边的1:3和3:1处生成两个新顶点,按规律连接新生成的顶点 极限曲线为均匀二次B-样条曲线
Chaikin算法举例 Chaikin算法示意图 Chaikin算法动态示意图
Doo-Sabin细分曲面 Donald Doo和Malcolm Sabin推广了Chaikin 算法 由二次B-样条曲线推广到二次B-样条曲面 输入为一个多边形面片,经过重复的剖分,生成光滑的极限曲面
Doo-Sabin细分曲面生成的各类顶点 面点(face point):面的顶点的平均 边点(edge point):边的中点 新顶点(new Vertex):对每个面的每一个顶点,计算面点、两个边点和原有顶点的平均 Doo-Sabin细分曲面生成的各类顶点
对于每条边,连接与该边相邻的两个面上的对应新顶点 Doo-Sabin细分曲面新顶点连接 初始多边形及生成的新顶点 对于每个面,连接生成的新顶点 对于每个老顶点,连接与之相邻的新顶点 对于每条边,连接与该边相邻的两个面上的对应新顶点
细分曲面实例 Doo-Sabin细分曲面 Catmull-Clark细分曲面
其它类型细分曲面 Catmull-Clark细分曲面(双三次B-样条曲面) Loop细分曲面(六次三角样条曲面) Loop细分曲面实例
细分曲面的优势与不足 优势 不足 极限曲面C1或C2连续的光滑曲面 可以表示任意拓扑 适合于动画造型、快速显示 奇异点处没有解析表达,难以计算微分量 难以精确控制其外形 难以构造高阶光滑曲面
更多的细分曲面实例
几何物体的表示 隐式曲面 细分曲面 物体的CSG树表示 自然景物表示方法
物体的CSG树表示 CSG:Constructive Solid Geometry CSG树表示:面向浇铸、加工或拉伸等CAD/CAM过程 表示实体:即有边界,也包含内部 表示边界:多边形、参数曲面、隐式曲面、细分曲面 CSG树表示:面向浇铸、加工或拉伸等CAD/CAM过程
物体的CSG树表示 CSG树:通过一系列几何操作将简单的基本体素组合起来 CSG树:含有丰富的造型信息 基本体素:立方体、球、圆柱、圆锥等 布尔运算:并、交、差、补等 几何变换:平移、旋转、放缩、剪切等 CSG树:含有丰富的造型信息 物体生成过程 物体表示
一个CSG树表示的实例 立方体 并 减 圆柱体
物体的CSG树表示的分析 CSG树的缺点 改进:混合表示 绘制耗时 限制了物体外形的修改
几何物体的表示 隐式曲面 细分曲面 物体的CSG树表示 自然景物表示方法
自然景物表示方法 自然景物的模拟是图形学中最具挑战性的问题之一 目前三种常用方法 山、树木、花草、火焰、云、烟、流体等 分形 基于语法规则的L-系统 粒子系统
分形 分形(Fractal)的主要特征 : 自相似性质:分形物体的任何一个部分都和物体整体具有某种程度的相似 无限小细节性质:当无限地放大分形物体时,物体总是表现有细节,而不是像欧氏空间的物体一样最终会表现出光滑性 维数非整数
分形举例:Koch雪花曲线 Koch雪花曲线 中间曲线的每一个线段被1/3大小的原始曲线所替代 后续的曲线又是中间曲线的一种缩小后的替代
基于分形方法生成山 一维情形:线段位于x-轴,将线段在中点剖分,并将中点沿y方向移动一段距离,如此不断地剖分并且移动新得到的中点 记(xi, yi)、(xi+1, yi+1)为直线段的两个端点,则剖分后新生成的点(xnew, ynew)为: Random(•)为[0, 1]之间的随机数,P(•)为一个控制随机量大小的函数,例如在第s步剖分中,P(s)=2-s
基于分形方法生成山:一维实例 在x-轴上的直线段 直线段的中点沿y方向移动一个随机量 进一步迭代的结果
三角片被剖分为四个小三角形,每条边的中点沿y方向进行扰动 基于分形方法生成山 二维情形 三角片被剖分为四个小三角形,每条边的中点沿y方向进行扰动
基于分形方法生成山的实例
L-系统:植物建模 L-系统 L-系统成功地用于植物建模 语法规则:通过对所给字符根据语法规则的迭代生成新的字符串,每次迭代结果称为一代 字符解释:将字符串中的字符解释为适当的几何体素,就可以得到一个基于语法规则生成的物体 L-系统成功地用于植物建模
一个L-系统实例 字符集:“A”, “B”, “[” “]”, “(”, “)” 语法规则: A→AA; B→A[B]AA(B) 迭代两次 B A[B]AA(B) AA[A[B]AA(B)]AAAA(A[B]AA(B)) 字符解释:“A”表示一个主干,“B”表示一个分支,“[]”表示分支向左45°,“()”表示分支向右45°
一个L-系统实例的图示 (a) 初始字符 (b) 一代结果 (c) 二代结果
基于L-系统的植物建模实例
L-系统:植物建模 在L-系统中引入更多控制 通过设计不同的语法规则和字符解释集,可以构造出各种美丽的树木和花草 不同“代”之中的字符的不同解释 (n+1)代的树枝要比n-代的树枝细一些、短一些 终止节点处赋予树叶和花朵 通过设计不同的语法规则和字符解释集,可以构造出各种美丽的树木和花草
基于L-系统生成的花与树木
粒子系统 粒子系统 模拟火、雾、烟、焰火等外形随时间的变化而变动的模糊物体 由一组随时间变化的粒子组成 粒子的变化由某种随机统计规律控制 粒子有生命:产生、发展(运动)、消亡 按照确定或随机运动规律进行运动 模拟火、雾、烟、焰火等外形随时间的变化而变动的模糊物体
粒子系统一般性描述 粒子系统是一个动态变化的系统,生成其中每一瞬间画面的步骤 产生新的粒子并加入系统中 赋予每一个新粒子一定的属性 删除那些已经超过其生命周期的粒子 根据粒子运动属性对粒子进行移动和变换 绘制并显示出所有有生命粒子组成的画面
基于粒子系统的火焰与瀑布 粒子系统生成的火焰 粒子系统生成的瀑布
自然景物造型 用其它方法可以模拟波浪、云和大气、湍流、布料等等。 自然景物的模拟仍然是计算机图形学中最富有挑战性的研究课题 共同的特点:专用性 自然景物的模拟仍然是计算机图形学中最富有挑战性的研究课题
一个在计算机中生成的复杂场景
小结 隐式曲面:Metaball、代数曲面 细分曲面:Doo-Sabin、Catmull-Clark 物体的CSG树表示 自然景物表示方法 分形 L-系统 粒子系统