这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » NURBS曲线知识

共1条 1/1 1 跳转至

NURBS曲线知识

高工
2014-06-12 10:31:54     打赏

  Nurbs 概述

  Nurbs是非统一有理样条曲线(Non-Uniform Rational B-Splines)的缩写,NURBS由Versprille在其博士学位论文中提出,1991年,国际标准化组织(ISO)颁布的工业产品数据交换标准STEP中,把NURBS作为定义工业产品几何形状的唯一数学方法。1992年,国际标准化组织又将NURBS纳入到规定独立于设备的交互图形编程接口的国际标准PHIGS(程序员层次交互图形系统)中,作为PHIGS Plus的扩充部分。目前,Bezier、有理Bezier、均匀B样条和非均匀B样条都被统一到NURBS中。

  NURBS曲线和NURBS曲面在传统的制图领域是不存在的,是为使用计算机进行3D建模而专门建立的。在3D建模的内部空间用曲线和曲面来表现轮廓和外形。它们是用数学表达式构建的,NURBS数学表达式是一种复合体。在这里,只是简要地介绍一下NURBS的概念,来帮助了解怎样建立NURBS和NURBS物体为什么会有这样的表现。

  Nurbs的起源

  样条曲线是一类特殊的曲线,最初在计算机建模出现之前由船舶工业发展需求而创造并发展起来的。当时


  样条的最初定义海军的设计师需要通过几个点来画一条光滑曲线。为此他们想出了一个简单而有效的方法,就是将金属重物(Weights)(这在后来的数学解释上称之为结点Knots)放置在控制点(Control Points)上,并使用薄金属片绕过这些控制点自然弯曲得到光滑变化的形状,他们把这个形状称之为样条。

  在物理上,样条的形状在结点处的影响最大并且沿着样条远离结点会逐渐减小,想要获得对样条某一区域更多的控制,只能在相应的区域增加更多的结点才行。

  这种方案在数据交换的时候遇到了麻烦,因为要在不同的平台进行数据交换,人们必须用一种数学的方法来描述曲线的形状,为此诞生了三次方程样条。后来从多项式样条引伸出B样条(基础样条),B样条是低级别的多项式样条的集合,为了适应更复杂的样条数据交换,最后从B样条又引申出了Nurbs样条。

  1 NURBS的定义

  NURBS是Non-Uniform Rational B-Splines的缩写,是非统一有理B样条的意思。具体解释是:

  .Non-Uniform(非统一):是指一个控制顶点的影响力的范围能够改变。当创建一个不规则曲面的时候这一点非常有用。同样,统一的曲线和曲面在透视投影下也不是无变化的,对于交互的3D建模来说这是一个严重的缺陷。

  .Rational(有理):是指每个NURBS物体都可以用数学表达式来定义。

  .B-Spline(B样条):是指用路线来构建一条曲线,在一个或更多的点之间以内插值替换的。

  简单地说,NURBS就是专门做曲面物体的一种造型方法。NURBS造型总是由曲线和曲面来定义的,所以要在NURBS表面里生成一条有棱角的边是很困难的。就是因为这一特点,我们可以用它做出各种复杂的曲面造型和表现特殊的效果,如人的皮肤,面貌或流线型的跑车等。

  2 度数和连续性

  所有的曲线都有Degree(度数)。一条曲线的度数在表现所使用的等式里面是最主要的指数。一个直线的等式度数是1,一个二次的等式度数是2.NURBS曲线表现是立方等式,度数是3.可以把度数设得很高,但通常不必要这样做。虽然度数越高曲线越圆滑,但计算时间也越长。一般只要记住Degree(度数)值越高曲线越圆滑就可以了。

  曲线也都有Continuity(连续性)。一条连续的曲线是不间断的。连续性有不同的级别,一条曲线有一个角度或尖端,它的连续是是C0。一条曲线如果没有尖端但曲率有改变,连续性是C1。如果一条曲线是连续的,曲率不改变,连续性是C2,如图所示。

  一条曲线可以有较高的连续性,但对于计算机建模来说这三个级别已经够了。通常眼睛不能区别C2连续性和更高的连续性之间的差别。

  连续性和度数是有关系的。一个度数为3的等式能产生C2连续性曲线。NURBS造型通常不需要这么高度数的曲线。

  一条不同片断的NURBS曲线可以用不同级别的连续性。具体来说,在同样的位置或非常靠近的地方放置一些可控点,会降低连续性的级别。两个重叠的可控点会使曲率变尖锐。三个重叠的可控点会在曲线里建立一个有角度的尖角。附加一个或两个可控点会在曲线的附近联合它们的影响力。

  从可控点中删除一个离开它们,就增加了曲线的连续性的级别。在3DMAX里,Fuse(熔化)可控点会在曲线里建立一个假象的曲率或尖角。如果要恢复原状,Unfuse(反熔化)那个点就可以了。

  3 Refine(精炼)曲线和曲面

  精炼一条NURBS曲线的方法是在上面加更多的可控点。精炼能更精细地控制曲线。当在3DMAX里精炼一条曲线的时候,软件会保持原始的曲率(从技术上说,它保持着统一的节点矢量)。换句话说,曲线的形状不会改变,但是相邻的可控点会从新加的可控点那里移开。

  NURBS曲面与NURBS曲线本质上有一亲的属性。

  4 点曲线和点曲面的概念

  在3DMAX里可以用点曲线和点曲面来建立模型。控制这些物体的点是被强制依附于曲线或曲面上的。它没有黄色的虚线控制格和重量控制。这是一个比较简单的界面,初学者可能更喜欢用。这并不是说高级用户就用不上了,如果是那样的话开发商就不会把它加到3DMAX中去了。可以用基础点来构建一条曲线,然后构建从属曲面。

  可以使用按钮来把点曲线或点曲面转换成独立的可控曲线或可控曲面。另一方面,尽量不要把可控曲线或曲面转换成点曲线或曲面,因为这样会有多种点的解决方案,会有难以遇料的结果。

  5 Tolerance(容差)

  这里先介绍一个容差的概念,以后将要用到。容差是指在3DMAX所使用的度量单位里的一个距离。如果连接的曲线间的间距大于这个值,3DMAX实际上是先建立一条融合曲线,然后再把三个部分连接在一起形成一条完整的曲线。如果间距小于这个值,则3DMAX不建立融合曲线。

  先在两条曲线间建立一条Blend(融合)曲线,然后把三条曲线连接在一起形成一条单个的曲线,这是一种比较好的方法,得到的结果与父曲线匹配得很好。

  当有一个距离,但是它太小的时候会出现问题。在这种情况下,3DMAX要产生融合,但是因为那里没有足够的空间给它,结果曲线会有一个环形在那里。要避免这个环形,把Tolerance(容差)设置得比间距大就可以了。如果设置容差为0,3DMAX会为它选择一个值。




关键词: NURBS    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]