460 likes | 642 Vues
几何物体的表示 (3). 几何物体的表示. 隐式曲面 细分曲面 物体的 CSG 树表示 自然景物表示方法. 几何物体的表示. 隐式曲面 细分曲面 物体的 CSG 树表示 自然景物表示方法. 隐式曲面. R 3 中的 隐式曲面表示为: { ( x , y , z ) R 3 : f ( x , y , z )=0 } 三维空间中的一个二维曲面 ( 二维流形 ) f ( x , y , z ) 称为隐式函数:数学表达式或过程定义的函数 当 f ( x , y , z ) 为多项式函数时,隐式曲面称为代数曲面. 隐式曲面举例.
E N D
几何物体的表示 • 隐式曲面 • 细分曲面 • 物体的CSG树表示 • 自然景物表示方法
几何物体的表示 • 隐式曲面 • 细分曲面 • 物体的CSG树表示 • 自然景物表示方法
隐式曲面 • R3中的隐式曲面表示为: {(x,y,z)R3: f (x,y,z)=0} • 三维空间中的一个二维曲面(二维流形) • f (x,y,z)称为隐式函数:数学表达式或过程定义的函数 • 当f (x,y,z)为多项式函数时,隐式曲面称为代数曲面
隐式曲面举例 • 球面:x2 + y2 + z2 = 1 • 圆柱面:x2 + y2 = 1
隐式曲面与参数曲面的比较 • 与参数曲面相比,隐式曲面的优点 • 隐式曲面可以表示具有复杂拓扑的形状 • NURBS曲面只能表示拓扑等价于矩形的四边曲面 • NURBS曲面表示非退化封闭光滑曲面时,需要光滑拼接 • 隐式曲面比NURBS曲面更适合于进行布尔运算、光线跟踪、点集判断等
隐式曲面与参数曲面的比较 • 与参数曲面相比,隐式曲面的不足 • 隐式曲面表示不直观,难以进行外形的交互修改。NURBS曲面的外形控制手段非常直观 • 隐式曲面通常没有边界,而NURBS曲面具有显式的边界 • 隐式曲面难以直接进行显示,而NURBS曲面则可以借助于剖分算法,对逼近多边形表示进行绘制
隐式曲面与参数曲面的相互转化 • 隐式化:从参数曲面到隐式曲面 • 消除NURBS曲面的两个参数(u,v)得到其隐式表示 • 参数化:从隐式曲面到参数曲面 • 并非所有的隐式曲面都可以参数化 • 对于非退化的二次代数曲面和具有一个奇异点的三次代数曲面,可以进行有理多项式参数化
图形学中常用的隐式曲面造型技术 • 基于骨架的隐式曲面造型 • 基于点、线和面骨架的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树表示 • CSG树:通过一系列几何操作将简单的基本体素组合起来 • 基本体素:立方体、球、圆柱、圆锥等 • 几何操作 • 布尔运算:并、交、差、补等 • 几何变换:平移、旋转、放缩、剪切等 • CSG树:含有丰富的造型信息 • 物体生成过程 • 物体表示
减 并 圆柱体 立方体 立方体 一个CSG树表示的实例
物体的CSG树表示的分析 • CSG树的缺点 • 绘制耗时 • 限制了物体外形的修改 • 改进:混合表示 • 将边界表示和布尔运算结合起来,形成一种界与边界表示和CSG实体表示之间的混合表示
几何物体的表示 • 隐式曲面 • 细分曲面 • 物体的CSG树表示 • 自然景物表示方法
自然景物表示方法 • 自然景物的模拟是图形学中最具挑战性的问题之一 • 山、树木、花草、火焰、云、烟、流体等 • 目前三种常用方法 • 分形 • 基于语法规则的L-系统 • 粒子系统
分形 • 分形(Fractal)的主要特征 : • 自相似性质:分形物体的任何一个部分都和物体整体具有某种程度的相似 • 无限小细节性质:当无限地放大分形物体时,物体总是表现有细节,而不是像欧氏空间的物体一样最终会表现出光滑性 • 维数非整数
Koch雪花曲线 中间曲线的每一个线段被1/3大小的原始曲线所替代 后续的曲线又是中间曲线的一种缩小后的替代 分形举例:Koch雪花曲线
基于分形方法生成山 • 一维情形:线段位于x-轴,将线段在中点剖分,并将中点沿y方向移动一段距离,如此不断地剖分并且移动新得到的中点 • 记(xi, yi)、(xi+1, yi+1)为直线段的两个端点,则剖分后新生成的点(xnew, ynew)为: • Random(•)为[0, 1]之间的随机数,P(•)为一个控制随机量大小的函数,例如在第s步剖分中,P(s)=2-s
基于分形方法生成山:一维实例 • 在x-轴上的直线段 • 直线段的中点沿y方向移动一个随机量 • 进一步迭代的结果
基于分形方法生成山 • 二维情形 三角片被剖分为四个小三角形,每条边的中点沿y方向进行扰动
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-系统中引入更多控制 • 不同“代”之中的字符的不同解释 • (n+1)代的树枝要比n-代的树枝细一些、短一些 • 终止节点处赋予树叶和花朵 • 通过设计不同的语法规则和字符解释集,可以构造出各种美丽的树木和花草
粒子系统 • 粒子系统 • 由一组随时间变化的粒子组成 • 粒子的变化由某种随机统计规律控制 • 粒子有生命:产生、发展(运动)、消亡 • 按照确定或随机运动规律进行运动 • 模拟火、雾、烟、焰火等外形随时间的变化而变动的模糊物体
粒子系统一般性描述 • 粒子系统是一个动态变化的系统,生成其中每一瞬间画面的步骤 • 产生新的粒子并加入系统中 • 赋予每一个新粒子一定的属性 • 删除那些已经超过其生命周期的粒子 • 根据粒子运动属性对粒子进行移动和变换 • 绘制并显示出所有有生命粒子组成的画面
基于粒子系统的火焰与瀑布 粒子系统生成的火焰 粒子系统生成的瀑布
自然景物造型 • 用其它方法可以模拟波浪、云和大气、湍流、布料等等。 • 共同的特点:专用性 • 自然景物的模拟仍然是计算机图形学中最富有挑战性的研究课题
小结 • 隐式曲面:Metaball、代数曲面 • 细分曲面:Doo-Sabin、Catmull-Clark • 物体的CSG树表示 • 自然景物表示方法 • 分形 • L-系统 • 粒子系统