1.4k likes | 1.64k Views
课程内容进展. 综述. ‘ 图形学’和‘图形系统’. 建模 观察 显示. 曲线曲面 实体造型. 坐标系统. 基本图元. 观察流水线 裁剪. 几何变换. 可见面判别 光照 面绘制. 其它. UI 动画 ……. 第六讲 三维对象的表示. 之 曲线曲面. 引子一:什么对象?. 真实的、艺术的、科学的 … : 生物、山海云石、房屋、服饰图案、股票行情图、动画设计、汽车飞机的外形、卫星的轨道、气流的运动 …. 从几何角度看:直线(平面)、曲线(曲面)
E N D
课程内容进展 综述 ‘图形学’和‘图形系统’ • 建模 • 观察 • 显示 曲线曲面 实体造型 坐标系统 基本图元 观察流水线 裁剪 几何变换 可见面判别 光照 面绘制 • 其它 UI 动画 ……
第六讲 三维对象的表示 之 曲线曲面
引子一:什么对象? 真实的、艺术的、科学的… :生物、山海云石、房屋、服饰图案、股票行情图、动画设计、汽车飞机的外形、卫星的轨道、气流的运动… 从几何角度看:直线(平面)、曲线(曲面) 一:可以用标准的解析式即方程来表示。直线、圆、抛物线、椭圆、平面、圆柱面、圆锥面、球面等等 二:自由曲线曲面。由从实际测量得到的一组离散数据点(控制点/型值点)来确定。通过数学方法惟一地定义其形状(计算机辅助几何设计CAGD-Computer Aided Geo-metric Design,综合了微分几何、代数几何、数值计算、逼近论、拓扑学、数控技术等的一门边缘性学科 )
引子二:对象如何表示? 核心问题:建立既适合于计算机处理,又有效地满足形状表示与几何设计要求,同时还便于进行形状信息传递和产品数据交换的形状描述的数学方法。 • 建立数学模型的方法: • 欧氏几何方法:多边形、(超)二次曲线(面)、样条曲线(面) • 过程式方法:分形几何,形状语法,粒子系统 • 基于物理的建模方法:例如织物的非刚性行为 • 等值面显示、体绘制等可视化技术:三维离散数据集合 • 内部数据的表示方法: • 边界表示:多边形表面、样条曲面 • 空间分区表示:八叉树(描述内部特征如颜色等) • 显示处理的基本方法: • 三角形或四边形面片
利用多边形的对象表示 • 几何数据表: • 点、边和面 • 如果多边形的顶点数>3,有可能不在一个平面上。 • 将多边形分成三角形。 • 估算平面参数A、B和C。
第六讲主要内容 • 简单曲线面表示 • 自由曲线面表示 • 插值,逼近,光顺 • 样条(Bezier,B)
线、面的数学描述 • 非参数式表示: • 显式表示: y = f ( x ) , z = f ( x, y ) • 隐式表示: f ( x , y ) = 0 , f ( x , y , z) = 0 • 参数式表示: • 线:x = x ( u ) , y = y ( u ), z = z ( u ) • 面:x = x ( u , v ), y = y ( u , v) , z = z ( u , v ) • P(u)=[x y z]=[x(u) y(u) z(u)] u∈[u0,u1] • 曲线的首末点分别为P(u0)、P(u1)。 • 曲线上任意点的切向量: P’(u)=dP/du=[dx/du dy/du dz/du]
y y y 1.0 1.0 1.0 x o x x o o 1.0 1.0 圆弧的三种表示方法 参数方式(一) 显示方式 参数方式(二)
二次曲线曲面 • 由二次方程所描述。包括球面、椭球面、环面、抛物面和双曲面。可以用来构造更复杂的物体 • 球面x2+y2+z2=r2 • 椭球面
环面 将圆或其它二次曲线绕指定轴旋转而成。
超二次曲线曲面 • 由二次曲线/面方程添加参数而成,更便于调整物体形状。 • 增加的参数个数=物体的维数:曲线一个参数,曲面二个参数 • 超椭圆(x/rx)2/s+(y/ry)2/s=1 • s是任意实数。当s=1时,可以得到一般椭圆 • x=rxcossθ -π≤θ≤π • y=rysinsθ • 超椭球面[(x/rx)2/s2+(y/ry)2/s2]s2/s1+(z/rz)2/s1=1 • 当s1=s2=1时,得到一般的椭球面 • x=rxcoss1Ψcoss2θ -π/2≤Ψ≤π/2 • y=rycoss1Ψsins2θ -π≤θ≤π • z=rzsins1Ψ
表示方式的比较 非参数方式 参数方式 • 与坐标轴相关 • 非平面曲线、复杂曲面难以用常系数表示 • 会出现斜率为无穷大的情况 • 不便于计算和编程 • 与坐标轴无关(几何不变性),以至于可以表示任意维空间中的复杂曲线, • 便于处理斜率无穷大情况 • 便于用参数变量的范围(例如限制在[0 ,1]内),获得唯一有界曲线或曲线分段描述 • 便于编程实现,易于计算曲线上的点、导数等。 • 有更大的自由度来控制曲线曲面的形状 几何不变性:在不同的坐标系中度量控制点时,所生成的几何形状保持不变
OpenGL多面体函数 • glutWireTetrahedron ( ); glutSolidTetrahedron ( ); • 四面规则三棱锥 • glutWireCube (edgeLength); glutSolidCube (edgeLength); • 立方体 • glutWireOctahedron ( ); glutSolidOctahedron ( ); • 规则8面体 • glutWireDodecahedron ( );glutSolidDodecahedron ( ); • 规则12面体 • glutWireIcosahedron ( ); glutSolidIcosahedron ( ); • 规则20面体
OpenGL曲面函数 • glutWireSphere (r, nLongitudes, nLatitudes); • 球面 • glutWireCone (rBase, height, nLongitudes, nLatitudes); • 圆锥面 • glutWireTorus (rCrossSection, rAxial, nConcentrics, nRadialSlices); • 环面 • glutWireTeapot (size); • 茶壶 • gluCylinder (quadricName, rBase, rTop, height, nLongitudes, nLatitudes); • 圆柱、圆台、圆锥面
柔性对象 • 形状不固定且具有一定的“流动性”:当其处于运动状态或接近其它物体时会变化其表面特征。例如分子结构、水滴和其它液体、带状物体、人类肌肉等。 人的肌肉形状 分子分离时分子形状的延伸、分裂和收缩效果
柔性对象的表示 • 思路:模拟表面形状而总体积不变 • 高斯密度函数、非指数型密度函数等 其中: 4个三维高斯凸形复合后的切面 T的选择决定了坐标重叠情况 三维高斯凸形的切面, 中心在0 高度为b,方差为a
柔性对象建模方法例(续) ——元球(meta-ball)模型 ——软对象(soft object)模型
自由曲线曲面的表示 • 根据一组离散的坐标点即控制点,结合应用需求,得到最贴近物体形状的数学函数描述。 • 核心思路:插值、逼近、光顺
插值 • 生成的曲线通过所有控制点。 • 当控制点太多时,构造一个插值函数使其通过所有的控制点相当困难,也没必要。 • 分段线性插值 • 分段抛物线(二次)插值 • 分段三次多项式插值
PC曲线(三次多项式插值曲线) • 美国波音公司的弗格森Ferguson J.C.于1963年首先在飞行器中用三次参数方程来定义曲线和曲面。参数三次曲线简称PC曲线(弗格森曲线)。 x(u)=axu3+bxu2+cxu+dx y(u)=ayu3+byu2+cyu+dy u∈[0,1] z(u)=azu3+bzu2+czu+dz • 曲线的首末端点分别在u=0和u=1处,方程组中的12个常数系数称为代数系数(algebraic coefficients),这组系数唯一确定了一条PC曲线
曲线的逼近 逼近、光顺 • 逼近:部分或全部控制点不在所生成的曲线上 • 最小二乘法。逼近的好坏用各点偏差的平方和或加权平方和衡量 • 参数多项式法。 • 光顺通俗的几何解释是:无论插值还是逼近,曲线的拐点(曲线由增变减或由减变增的转折点,上凹弧与下凹弧的分界点 )不能太多 • 对于平面曲线,相对光顺的条件是: • 曲线具有二阶几何连续性 ; • 不存在多余拐点; • 曲线的曲率变化较小;
几个概念 • 参数连续性、几何连续性 • 控制多边形 • 凸包
连续性条件 当许多参数曲线段首尾相连构成一整条曲线时,需要保证相邻曲线段在连接处具有一定的连续性。 假定参数曲线段pi以参数形式进行描述: 可以定义两种意义上的连续性: 参数连续性 几何连续性
0阶参数连续性 i i+1 记作C0连续性,是指曲线的几何位置连接,即第一个曲线段在ti1处的x,y,z值与第二个曲线段在t(i+1)0处的x,y,z值相等:
1阶参数连续性 i+1 i 记作C1连续性,指两个相邻曲线段的方程在交点处有相同的一阶导数(切线):
2阶参数连续性 (a)0阶连续性 (b)1阶连续性 (c)2阶连续性 记作C2连续性,指两个相邻曲线段的方程在相交点处具有相同的一阶和二阶导数。 几何含义:交点处的切向量变化率相等,即切线从一个曲线段平滑地变化到另一个曲线段。 类似地,还可定义高阶参数连续性。
几何连续性 参数连续 几何连续 与参数连续性差别在于:曲线段在相交处的参数导数只需要成比例。 0阶几何连续性,记作G0连续性,同0阶参数连续性 1阶几何连续性,记作G1连续性,指一阶导数在相邻段的交点处成比例。 2阶几何连续性,记作G2连续性,指相邻曲线段在交点处其一阶和二阶导数均成比例。
控制多边形和凸壳(凸包) • 按控制点的次序连接得到的直线序列称为控制多边形或特征多边形(不闭合) • 包含一组控制点的凸多边形边界称为凸壳(凸包)
曲面的两组控制多边形构成了二次曲面网的多边形面片曲面的两组控制多边形构成了二次曲面网的多边形面片
样条(自由曲线曲面的表示) • 引入的原因 • 经典样条定义方法
样条(spline)的引入 • 样条有效解决了大量形态的自由曲线曲面的数学表示问题,且是最简单、理论和应用最成熟的参数曲线(面)。 • 设计新物体形状 • 数字化一张图 • 描述动画路径。 • …… 在工程绘图术语中,采用模线样板法表示和传递自由曲线曲面的形状称为样条。 样条曲线:由多项式曲线段连接而成的曲线,在每段的边界处满足特定的连续条件。 样条曲面:用两组正交样条曲线描述的曲面。
样条的引入(续) • 定义样条的核心步骤 • 给出控制点 • 给出边界条件(曲线通过哪些控制点,在哪些控制点上满足何种连续性条件) • 列出(分段)多项式方程组 • 将条件代入方程组,解出所有多项式系数
样条的引入(续2) • 三次插值样条(hermite,cardinal,Kochanek-Bartels): • 插值,参数边界条件 • Bezier样条,B样条: • 逼近,参数边界条件 • Beta: • 逼近,使用几何边界的B样条 • 有理样条:两个样条相除 • 非均匀有理B样条:NURBS
三次样条插值方法 给定 n+1个点,可得到n条分段三次多项式曲线: 注意:4个点3组方程 PC曲线——4个点1组方程 三次多项式方程的特点 与更高次相比:计算量较少,存储较稳定; 与低次相比:模拟曲线形状时更灵活。能够表示曲线段的端点通过特定点且在连接处保持连续性。
自然三次样条 • 给定 n+1 个控制点 • 构造n个参数方程组(x,y,z)--共n*4*3个系数 • 要求相邻曲线段在连接处具有0、1、2阶参数连续性。 • 对于(n-1)个内部点,每组有4*3个条件----(n-1)*4*3 • 对于两端点,每组只有1*3个条件----2*1*3 • 再附加两个端点上的两个边界条件----2*1*3 • 假设二阶导数为0,或者两端各增加一个隐含控制点 • 解出方程组 • 特点: • 具有 C2 连续性 • 不能“局部控制” • 只适用于控制点分布比较均匀的场合 P1(1)=p1 P3’’(1)=0 P1’’(1)=P2’’(0) P2(0)=p1 P3(1)=p3 P1’(1)=P2’(0) P3(0)=p2 P2(1)=p2 P2’(1)=P3’(0) P1(0)=p0 P2’’(1)=P3’’(0) P1’’(0)=0
三次 Hermite 样条 • 给定控制点 • 给定每对控制点Pk和Pk+1之间曲线段的边界条件 • 假设曲线方程 p(t) , t∈[0,1] , • 给定矢量Pk、Pk+1、Rk 和 Rk+1 , • 且p(t)满足下列条件: 端点 斜率
a b c d a b c d [ 1 1 1 1 ] = Pk+1 [ 0 0 0 1 ] = Pk 推导1:
a b c d a b c d [ 3 2 1 0 ] = Rk+1 [ 0 0 1 0 ] = Rk 推导2:
a b c d a b c d [ 3 2 1 0 ] = Rk+1 [ 0 0 1 0 ] = Rk a b c d a b c d [ 1 1 1 1 ] = Pk+1 [ 0 0 0 1 ] = Pk