模具技术论坛's Archiver

ergoo 发表于 2009-11-6 21:11

NURBS曲面和Bezier曲面介绍

根据曲面拓扑形式的不同,自由曲面建模手段分为两大类:
第一种是以三角Bezier曲面为基础的曲面构造方法;
第二种是以NURBS(非均匀有理B样条)曲线、曲面为基础的矩形域参数曲面拟合方法。
这两种曲面重构方案,各有利弊。

三角域Bezier曲面拟合具有构造灵活、边界适应性好等优点,对复杂形状曲面的拟合具有很大的灵活性,因而在散乱数据点的曲面拟合中被广泛应用。这种方法最适合表现无规则、复杂型面的物体,特别是人脸这类对象。但这种方法所构造的曲面模型不符合产品描述标准,与通用CAD/CAM系统数据交换困难,因此,利用这种方法生成的曲面必须转换为NURBS曲面。但是,在转换过程中,不可避免地会丢失一些信息.产生一定的误差;同时,这种方法还存在对曲面修改能力不足、可控性差等缺点,这些都限制了它在实践中的应用。

NURBS方法建立在B样条方法之上,较好地实现了解析几何与自由曲线曲面的统一,成为当今CAD/CAM软件中曲面数学表达的主流。这类曲面可以应用四边参数曲面片插值、拉伸、旋转、放样( Lofting )或蒙皮(Skinning )、扫掠( Sweeping )、混合(Blend)和四边界构造,并以此为基础,形成了一套完整的曲面延(札求交、裁减、变换、拼接及光顺等算法。但该方法只有当测量点数据满足以张量积形式分布和数据变化不太剧烈的要求时,才能得到光顺的曲面,不适用于大规模散乱数据的曲面重建。

(摘自:逆向工程中的CAD建模技术及软件系统)

注:NURBS= non uniform rational B-spline,非均匀有理B样条

想象一块绷紧的薄橡皮,当用一个手指按在表面时,会凹下一个洞,如果用两个的手指按上去,就会出现两个洞,并且两个手指会互相影响,任何一个移动都会使两个洞周围的形状改变。如果我们有足够多的手指从正反两面压上去,就可以把这块橡皮摆弄成任何形状。这正是B样条曲面造型的原理,也是其样条一词的含义:样条=可摆弄成所需样子的橡皮条。(未经考证J )
B样条曲面(或面片patches)由两个参数变量描述(如s和t),变量值从0取到1。可以通过将这两个参数的当前值代入一个公式,计算出曲面上每个点的xyz空间坐标。

控制点是在xyz空间的点,你可以把它看成牵线的手指,这些线拴在曲面上。当一个手指移动时会拉动一根线,下面的参数化曲面形状就会相应改变。这种控制点运动在一定距离内起作用,这意味着一个曲面上的点可能同时(通常就是)受控于多个手指(控制点)。样条技术允许我们描述表面上的一个点是怎样被影响的它所有控制点的运动影响的。它是通过为每个顶点累加每个控制点对它产生的影响来实现的。离点越近的控制点影响作用越大。总会有一个界限,超出后控制点不再影响表面点。因此,每个手指在参数通过它(drift away from it)之后失去影响,另一个手指取而代之。

记住在任意一点有多于一个手指产生影响(除了bezier的端点)。节点就象一种边界,在这个边界上一个手指失去影响作用,另一个手指取得影响。因此sknots和tknots是这种变换的数目。(不完全对但很接近),map2vertex是OpenGL中取得绘制曲面必要信息的方法。

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.