曲线和曲面理论: 线框底下的公式与算法基础

  Nurbs是现在火热的建模技术之一,在动画领域上举足轻重,在造型工业设计上更是独占鳌头。Nurbs也是最难掌握的建模技术之一,很多人难以把自己脑海中的造型放到虚拟的3D空间中。除了多练习,驾御Nurbs的另一个重要途径是理解它怎么样工作。

  一、曲线曲面的基础

  曲线曲面才是造型的真正统治者,它占据了我们生活和幻想中的造型的绝大部分。但曲线曲面又是如此地难以理解,让人们在一段很长很长的时间内无法征服它。人们和最常用的曲线之一—圆—搏斗了几千年,最后终于在终于在微分里实现了最精确的描述。可见,曲线曲面是一个很复杂的研究领域。

  曲面——"Surface"——这一专有名词最早提及在上世纪60年代图形学家Coons的应用曲面片拼合技术构造飞行器外形的讲稿中,其讲稿名为“曲面”。

  曲线曲面分为自由曲线曲面和解释曲线曲面两大部分。自由曲线曲面是使用若干个定义点和参数表现曲线曲面形状的技术(如:Bezier、B-spline、Coons、Subdivision、Nurbs),而解释曲线曲面则只是用参数表现曲线曲面形状的技术(如:圆—f(u)={ x=cos(u);y=sin(v) };球——f(u,v)={ x=cos(u)cos(v);y=cos(u)sin(v);z=sin(u) }等)。

  自由曲线曲面的基础是样条Spline,而样条函数来源于工业造型绘制。样条是一根富有弹性的细木条或塑料条,工作时绘图员会

用压铁压住样条,使它通过所有特定的点(N urbs里的EditPoint),然后调整压铁,使样条达到符合设计要求的形状,则沿样条绘制曲线。

  自由曲线的思想也是从此而来的——最初曲线是一条线段或直线,可以看做是一条弹性的细梁,当细梁受到压铁——EditPoint的负荷时就会变形,变成曲线;适当移动E ditPoint到一定的位置,就可以使曲线变成设计者想要的形状。

  但样条有很多局限,最大的局限就是修改一个点会影响到整条曲线或整个曲面的形状!所以人们后来开发出Bezier(Photoshop的Path)、B样条(Nurbs的基础)和Nurbs等比较成熟的曲线曲面,但这些曲线曲面的很多性质都继承了样条的开发初衷,特别是样条的思想。使用曲线曲面虽然不用知道它的公式、物理意义和算法,但它的一些工作方式、基础知识我们还是要懂一点的。

  参数:参数是给曲线曲面的隐式方程使用的,给出一定的参数就可以计算出一定的结果。我们常常使用uv表示曲线曲面的参数,

因为所有的自由曲线隐式方程都f(u)、所有的自由曲面隐式方程是f(u,v)。u v通常属于[0,1],因为这样可以简化计算,而且使用贴图的时候可以把曲面的表面映射到贴图上

  切线、法线:切线和法线是互相垂直的,假设曲线上的一点P旁有一点P1,当P1无限接近于P时P-P1会形成一条从P出发的射线,这就是曲线在P 上的切线。曲面的切线和曲线的切线定义大致相同。曲线曲面的切线、法线不象多边形的法线一样可以改变,曲线曲面的切线、法线在曲线曲面形成的时候就已经定了下来,在曲线曲面形状改变的情况下才可以改变。

  方向:曲线曲面都有严格的方向要求,一般是从(0)->(1)/(0,0)->(1,1)。分清楚方向才可以使用Loft、Brail等操作。

  曲线曲面的无穷可分:曲线曲面实际上并不存在,它只是一种数学描述,你必须把描述转换成可见的现实。既然是数学描述,它

就有一定的数学性质,其中一个很重要的性质就是无穷可分。严格地说,我们使用的曲线曲面是连续的。所谓的无穷可分,就是你可

以把一段曲线不断地细分,永远也分不完;如果你要用点表示它,你就需要无限个无限小的点。所以渲染N urbs的时候我们要注意它

的细分,细分程度不够就会造成曲面起棱角的不连续的情况。

  曲面空间:曲面是三维的,但曲面空间是二维的,就如地球的表面,你只有向前向后向左向右走,不能向上向下走——这样你就

离开了表面的空间了。表示曲面上的点不能使用三维的坐标,因为当曲面变化时它将随之而变化,所以我们使用曲面的参数表示:

(U,V)。因为当曲面的形状变化是(U,V)没有变化,只是(U,V)所指向的三维坐标起了变化,与(U,V)无关。理解了曲面空间,那贴图

UV问题就完全不是问题了,因为贴图只是把图上的( x,y)影射到曲面的(U,V)上。比如说:一张512 X 512 的贴图,如果你贴到一张

曲面上,那么曲面上的(0,0)点上的颜色就是贴图(0,0)上的颜色,曲面(1,1)上的颜色就是贴图(512,512)上的颜色。

  次(阶):幂次其实可以理解为用多少个控制顶点去控制曲线的形状,一次的曲线就用一个控制顶点可以控制曲线的形状,三

次的就用三个、七次的就用七个……次越多,曲线曲面就越精确,但计算量就越大,也越不容易控制。

  权节点(weight):权节点是一组节点矢量,如U=[0,0,0,0,1,2,2,2,3,5,5,6,6,6,6]。节点矢量与曲线段的界限有关,曲线段的

界限其实就是E ditPoint。Nurbs的线段与线段之间必须在C3上连续,每段曲线都会互相影响,所以使用Editpoint建造曲线时会觉得

比较吃力,而且出来的形状和想象的出入比较大。权节点的计算其实就是曲线段与曲线段之间的特征多边形长度的关系,公式比较复

杂,也没有必要知道,在此就不说了。

  特征多边形:这个名词恐怕大家很陌生,但如果你理解了,那就可以很快找到修炼Nurbs空间曲线造型的捷径了。下面的特征多

边形一章就专门讲这个:

  二、特征多边形

  样条的思想是从力学上推敲出来的,但并不直观、方便。另一种更直观、方便的思想就是特征多边形。

  假设有两段相连的线段,如果不相连的两个顶点相连的曲线无限接近另一个顶点会出现怎么样的情况?答案是一条和线段很相似的曲线出现了。

  这条曲线就是从那两段线段——曲线的特征多边形——进化出来的曲线,线段的顶点就是曲线的CV,控制顶点。

  特征多边形其实就是Maya中的Hull,他才是真正衡量Nurbs形状的利器!很多朋友以为Hull没有用,但请听我说说特征多边形是怎么样进化出N urbs的,Nurbs是怎么样退化到特征多边形的,就知道Hull的厉害所在了。

  当你把所有的CV连起来时,就会构成了曲线的特征多边形,它表示了曲线的特征、CV之间的平均曲率、曲线之间的大致距离、曲

线的平均曲率(Hull之间的夹角)、曲线退化的形状等等信息。特征多边形是曲线的基本形状,决定了曲线的整体走向;若Hull之间

的夹角大,则曲线的曲率教大相反则教小;若Hull通过曲线,则曲线走向改变,若Hull成一直线,则曲线无教大变化

  如果把曲线退化到一阶,则曲线就变成了特征多边形了。

  如果你的多边形建模很厉害,那就建议你试一下使用特征多边形修炼Nurbs,你会很快就可以驾御Nurbs的。

  三、Nurbs

  Non-Uniform Rational B-Spline,非均匀有理B样条,叫Nurbs。

  注:如果不使用Mel,我无法在Maya中无法调整Nurbs中的非均匀项——权节点。如果你知道方法,请告诉我,谢谢。

  Nurbs方法的研究经历了很长的时间,70年代初,Nurbs的方法就陆续得到完善,波音公司的研究人员在Nurbs的研究中发挥了重

要的作用,从此可看到真正推动造型设计发展的还是工业造型设计。

  控制Nurbs的常量有次、CV和Weight。

  Nurbs的最大优点是移动一个CV对只对本曲线段内的曲线形状产生影响,具有良好的局部性。但Nurbs只能表示绝大部分的曲线曲

面,并不是所有的曲线曲面都可以表示。

  重节点:在三次以上的Nurbs里如果要做出尖角就要使用重节点,也就是把CV重合。

  (因为我的Nurbs资料是大量的公式和推导,没有太多的用处,所以我就不说太多了)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值