×

关注微信公众号

免备案网站空间虚拟主机双线空间域名查询PS数码后期
photoshop互助课堂数百G视频教程下载英语培训机构初中英语如何学随时随地聆听大师开讲/课堂
酷素材!视频教程打包下手绘教程抠图教程路径专辑photoshop cs3视频教程
查看: 8364|回复: 14

关于Nurbs,犀牛官方资料

[复制链接]
发表于 2007-5-22 22:41:45 | 显示全部楼层 |阅读模式
下面的内容摘自《NURBS曲面造型巨匠 Rhino 3D完全手册》中青出版社出的很老的书,也是我的第一本Rhino参考书。在论坛上得到很多热心的斑竹,及朋友的帮助,无以为报,只能尽自己所能,为大家作点很小的小事吧。
希望大家将自己的理解贴出来,互相讨论,共同提高。

NURBS是Non-Uniform Rational B-Splines(非均匀有理B样条)的缩写。NURBS可以表现出3-D的几何物体。
NURBS之所以能够成为主要的电脑制作模形方法,有五个重要原因:
1. 有许多大型的知名企业,都使用NURBS作为主要的几何模型交换方式。这代表了它们的客户,都可以使用这种方式来转换他们的几何模型,于各种不同的建构模型软件,算图软件,动画软件和工程分析软件之间。它们可以使用这样的方式存储几何模型资料,而且从现在起至少二十年内都可用。
2. NURBS拥有精确性和众所周知的定义。在各个大专院校里,无论在数学,电脑科学领域里,NURBS几何学都是必修的学问,是很重要的数学学科。这代表了大部分的电脑软件业者,工程小组,工业设计公司和动画公司;在需要撰写自行研法的软件是,都可以找到适当的程序设计师,来撰写使用以NURBS为主要几何架构的软件。
3. NURBS可以很精确的描绘出大部分的几何模型,如:线段,圆,椭圆,球体,环形和像车体和人体的复杂自由曲面模形。
4. 在描绘几何模型时,以NURBS方式所描绘出的几何信息比其它的描绘方式,文件要小许多。
5. 关于NURBS曲线的细节,以及为何是电脑绘图工具中最有效和准确性最高的原因,如下所列:
何谓NURBS几何学
这个问题有很多种回答的方式。如果你对于阅读数学方程式不感吃力的话,那你在RHINO的网站中相关连接可得到更多详细资料。

About NURBS -技术文件
http://cs.wpi.edu/~matt/courses/cs563/talks/ NURBS.html)

NURBS curves -初学者使用指南
(http://dvworld.apple.com/techsup ... ue25/schneider.html)
RHINO使用NURBS来呈现曲线和曲面。NURBS曲线和曲面的行为模式是很相近的,而且有很多共同的专有名称。曲线是较容易描述,理解的,我们将会详细说明。RHINO的曲面工具很类似我们接下来所提及的曲线工具:

一条NURBS曲线中有四个重要的定义项目:degree值,Control points控制点,knots节点和evaluation rule评定的规则。

degree 值

degree的值是一个正整数。
这个值通常为1,2,3或5。RHINO的线段和复合线段的degree的值为1。圆degree的值为2,而大部分RHINO的自由曲线的degree的值为3或5。RHINO所使用的NURBS曲线的degree的值可以设置从1到32。而通常我们把这些degree的值,称之为Linear,Quadratic, Cubic, Quintic。 Linear代表着degree的值为1,Quadratic代表着degree的值为2, Cubic代表着degree的值为3 ,Quintic代表着degree的值为5。

你可以参阅参考文献里关于NURBS曲线的order部分。NURBS曲线的order是个正整数,且等于degree+1。所以degree的值等于order –1。
在改变NURBS曲线的degree的值的过程中,你有可能只增加degree的值而不影响到NURBS曲线的形状。但是,你无法在减小degree的值的过程中不影响到NURBS曲线的形状。RHINO所提供的工具能让你自由地设定NURBS曲线的degree的值,从1到32。

Control points 控制点

Control points最少是degree+1个点。
移动控制点,是改变NURBS曲线最简单的方法。RHINO提供了很多方法来移动控制点。如果需要有较大弹性的自由曲面,你可以只使用鼠标来快速的移动和改变控制点,以绘制你的模型。而相对于准确性要求较高的曲线,RHINO则提供了其它精确性高的工具,以供使用。

Control points有一个相关的值---Weight。除了少数例子外,weight的值通常是正数。Control points是一串至少是degree+1个点,此曲线状况称之为non-rational;而如果weight的值并不完全相同时,此曲线状况称之为rational。NURBS曲线中的R为rational的缩写。但这只是代表这条曲线有可能是rational。在范例里,有大部分的NURBS曲线都是non-rational。只有一些NURBS曲线是rational,如:圆,椭圆等明显的案例。RHINO提供一些工具来检测和更改Control points的weight值。

knots节点

knots节点是一串degree+N-1的数字,其中N为Control points的数字编号。有时我称这串数字为knot vector。在这里的vector并不是指3-D向量或方向性。
这串节点数字必须符合一些技术上的条件。这里列出了几项符合knot技术上所需要的条件值。基本的条件为:这连串的数字必须相同,或顺序越后的数字越大,而且如果数字重复了,重复的次数不可以超过degree的值。例如一degree的值为3的NURBS曲线,其Control points的数量为11,而这串数字为0,0,0,1,2,2,2,3,7,7,9,9,9,符合knot数字串的要求。但假如knot数字值为0,0,0,1,2,2,2,2,7,7,9,9,9,这就不符合技术上所需要的条件值了。因为有4 个2,已超出了degree的值3的数量。
  相同的knot数字值的数量,我们称之为multiplicity.在上一个范例中,符合了knot技术上所需要的条件值,其knot值为0的有multiplicity 3,其knot值为1的有multiplicity 1,其knot值为2的有multiplicity 3,其knot值为7的有multiplicity 2,其knot值为9的有multiplicity 3。当knot的multiplicity值与其degree的值一样时,我们将之称为Full – multiplicity。在上一个范例中,knot的值为0,2,9,都是Full – multiplicity。当knot的multiplicity值为1时,我们将之称为Simple – multiplicity。在上一个范例中,knot的值为1,3,都是Simple – multiplicity。
  假如一曲线其knot的值开始于Full – multiplicity,然后接着Simple – multiplicity,结尾又是Full – multiplicity,而且其值之间的间隔相同,那这个knot称之为uniform。例如一NURBS曲线,其degree的值为3,Control points的数量为7,knot的值为0,0,0,1,2,3,4,4,4,那此曲线就可称之为uniform曲线。而假如knot的值为0,0,0,1,2,5,6,6,6,那此曲线就不是uniform曲线,我们称之为non-uniform。NURBS里的NU字母就是non-uniform的缩写。表示knots节点在NURBS曲线中是允许non-uniform的情形。
  相同的knot数字值的数量,如果集中在值的中央部位,那这一NURBS曲线是较不圆滑的。例如有一曲线其knot值的中央有一Full – multiplicity,那就是表示此NURBS曲线会被弯成一锐角。因此,有些人会想要以增加或减少knots的数量,然后调整Control points使得曲线变得更加平顺或更锐利。RHINO提供了工具让你自由的增加或减少knots的数量。之前有提到过knots的值为degree+N-1,其N为Control points的值。所以当你增加knots的数量,同时也增加了Control points的数量;减少knots的数量,同时也减少了Control points的数量。knots的数量可以被增加,而不会影响到NURBS曲线的外形。而在一般情况下,减少数量会影响到NURBS曲线的外形。RHINO提供了一个减少knots的进阶工具,当你删除Control points时,它会自动调整knots的位置到最适当的位置。

Knots和control points

  一般人常会误解,在NURBS曲线里的一个Control points会对应一个knot。而这种情况通常只会发生在degree的值为1的NURBS曲线上(通常是polylines)。在degree的值较高的NURBS曲线上,是由degree+1个Control points群组对应2倍degree值的knots群组。例如:假设我们有一个degree值为3的NURBS曲线,其Control points为7和knots为0,0,0,1,2,5,8,8,8。这时,前四个Control points和前六个knots为一组。而第二到第五个Control points和knots 0,0,1,2,5,8,为一组。而第三到第六个Control points和knots 0,1,2,5,8,8为一组。最后四个Control points和最后六个knots为一组。
  现在还有些软件使用旧版本的NURBS转换法。旧版本的NURBS转换法在计算knots值时,须在总额为degree+N+1 knots再额外多加两个knots值。当RHINO在输入或输出NURBS几何资料到这些软件时,会自动地增加或减少两个多余的knots值以符合其正确性。

评定的规则
Evaluation rule评定的规则,是使用一个数学公式,得到一个数值用来定义到一点上。
这是一个包含degree, Control points,knots和B-spline函数的数学方程式。NURBS曲线中的BS就是指B-spline。评定的规则从一个称之为parameter的数字开始。你可以将评定的规则想象成一个神奇的箱子,而这个箱子每吃掉一个parameter值,就会运算出一个点的资料。而degree, Control points,和knots则决定了这个箱子如何运做的方法。

NURBS的评定工具

RHINO 提供评定工具,你可以选取一条NURBS曲线,键入parameter的值,从而产生其相对应点。
观念上,knots的值决定了B-spline的基本函数。而B-spline的函数在parameter中决定了如何平均Control points和weights来产生点。关于Evaluation rule(评定的规则)和B-spline函数更详细的讨论和说明,你可以在许多的文献和其它的网页中找到。

我实践总结的结果:(有不对的地方请高手指教)

1:在Rhino中,默认直接创建的原始曲线(3阶及更高阶)的属性为:
CV点:无理(non-rational); knots: 统一(uniform)。

2:一旦改变了CV点的权重,CV点便会由无理(non-rational)变为有理( rational) 。

3:一旦通过insert或是remove knot来改变knot的数量,则knots便会由统一(uniform)变为不统一(non-uniform)。

4:任何曲线一旦用rebuit命令重建,其CV点和knots的属性便会改为:无理(non-rational); 和 统一(uniform)。

5:一旦曲线是的CV点比阶数多一(n,n+1),其knots的属性必为统一(uniform)。
本帖的地址:http://bbs.jcwcn.com/forum.php?mod=viewthread&tid=87871
跟着教程做一遍,做完的图要到这里评论交作业,教程有看不懂的地方,可以在贴子下面评论
发表于 2007-5-24 12:11:54 | 显示全部楼层
酷素材
支持,犀牛的作用是愈来愈大了
回复 支持 反对

使用道具 举报

发表于 2007-7-26 10:52:34 | 显示全部楼层
强烈支持.
回复 支持 反对

使用道具 举报

发表于 2007-8-24 09:44:21 | 显示全部楼层
很基础很原理的东西,相当不错!
谢谢楼主分享!
回复 支持 反对

使用道具 举报

发表于 2008-1-7 13:53:32 | 显示全部楼层
酷素材
理论性很强!
回复 支持 反对

使用道具 举报

发表于 2008-1-8 17:25:09 | 显示全部楼层
酷素材
好好看一下
回复 支持 反对

使用道具 举报

发表于 2008-3-30 11:08:52 | 显示全部楼层
#@#$*
回复 支持 反对

使用道具 举报

发表于 2008-7-10 12:04:54 | 显示全部楼层
很棒喔!!很有创意啊
回复 支持 反对

使用道具 举报

发表于 2008-7-21 21:39:50 | 显示全部楼层

谢谢分享

谢谢分享
回复 支持 反对

使用道具 举报

发表于 2012-3-15 09:56:59 | 显示全部楼层
非常感谢楼主指教,对我挺有启示的
回复 支持 反对

使用道具 举报

发表于 2018-1-8 11:31:07 | 显示全部楼层
顶顶多好
回复 支持 反对

使用道具 举报

发表于 2018-1-8 11:20:13 | 显示全部楼层
很好哦。。。
回复 支持 反对

使用道具 举报

发表于 2018-1-8 11:11:22 | 显示全部楼层
不错不错
回复 支持 反对

使用道具 举报

发表于 2018-1-8 11:33:19 | 显示全部楼层
好帖子要收藏
回复 支持 反对

使用道具 举报

发表于 2018-1-8 11:19:39 | 显示全部楼层
果断收藏了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | [立即注册]

本版积分规则

2345