王朝百科
分享
 
 
 

NURBS

王朝百科·作者佚名  2009-10-25  
宽屏版  字体: |||超大  

nurbs

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

NURBS是一种非常优秀的建模方式,在高级三维软件当中都支持这种建模方式。NURBS能够比传统的网格建模方式更好地控制物体表面的曲线度,从而能够创建出更逼真、生动的造型。NURBS曲线和NURBS曲面在传统的制图领域是不存在的,是为使用计算机进行3D建模而专门建立的。在3D建模的内部空间用曲线和曲面来表现轮廓和外形。它们是用数学表达式构建的,NURBS数学表达式是一种复合体。在这里,只是简要地介绍一下NURBS的概念,来帮助了解怎样建立NURBS和NURBS物体为什么会有这样的表现。

1.1 NURBS的定义

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

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

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

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

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

1.2 度数和连续性

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

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

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

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

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

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

1.3 Refine(精炼)曲线和曲面

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

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

1.4 点曲线和点曲面的概念

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

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

1.5 Tolerance(容差)

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

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

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有