原文链接:NURBS and CAD: 30 Years Together
原作时间:2011 年 12 月 30 日,距今已近14年
原作者:Dmitry Ushakov 博士
目录
在即将过去的这一年里(2010年),工程领域迎来了一个意义非凡的周年纪念日 —— 非均匀有理 B 样条(NURBS)在工业 3D 曲线和曲面建模中的应用已满 30 年(距2025年已44年)。1981 年 8 月,美国飞机制造公司波音提议将 NURBS 纳入 IGES 工业标准。尽管该决定几年后才正式获批,但 CAD 行业立刻对这一提议做出了反应:同年,工程软件的两大领先供应商 SDRC 和 Computervision 宣布支持 NURBS。如今,30 年过去了,几乎找不到不支持 NURBS 的 CAD 软件。这种现象的原因是什么?为何 NURBS 的发明会给该行业带来革命性的变化?接下来,我将试着回答这些问题,并缅怀所有为 NURBS 的发展和确立做出贡献的研究人员。
雕塑曲面
众所周知,3D 几何建模的研究最初是作为计算机辅助制造(CAM)的一部分展开的,而非计算机辅助设计(CAD)。20 世纪 50 年代初,美国麻省理工学院(MIT)发明了数控机床,而开发机床控制程序需要用到这些零件的模型,进而产生了对零部件数字模型的需求。多个研究小组对 3D 对象的建模原理进行了研究,他们的主要客户是航空航天和汽车制造行业的大型企业。
看看雪铁龙 DS(1955 - 1975 年生产)的图片,它堪称汽车界的经典之作。要精确制造如此复杂的雕塑曲面,先进的数学工具必不可少。法国数学家保罗・德・卡斯特里奥(Paul de Casteljau)为雪铁龙开展了该领域的早期研究之一。他提出了一种利用一组控制点(原文描述为参考点,一般称为控制点)构建平滑曲线的方法,这些控制点决定了曲线的几何属性。他的研究成果直到 1974 年才发表,但研究早在 1959 年就已完成,因此有理由认为保罗・德・卡斯特里奥是如今以另一位法国人皮埃尔・贝塞尔(Pierre Bézier)命名的曲线和曲面的创造者。但在进一步介绍贝塞尔之前,先让我回顾一下与 “雕塑” 工程曲面相关的内容。如何通过几何构造(而非抽象的代数方程)来定义具有所需美学形状的平滑曲面呢?最简单的方法是在 3D 空间中指定四个点,这四个点构成一个所谓的双线性面片,如下图所示:
双线性面片是直纹面的一种特例。直纹面则是完全由连接一对(两条)曲线的对应点的线段组成,如下图所示:
针对两队(四条)曲线构成的曲面片,麻省理工学院教授史蒂文・孔斯(Steven Coons)对这种表示方法做了进一步总结。后来该曲面也以他的名字命名(孔斯面片),如下图所示:
1967 年,他发表了一篇论文《Surfaces for Computer-aided Design of Space Forms》[Coons,1967],这篇长达112页的论文后来被广泛称为 “小红书”。他提出的边界曲线和混合函数技术为该领域的进一步研究奠定了基础。孔斯也是首位提议使用有理多项式对圆锥曲线进行建模的人。孔斯对 CAD 发展的杰出贡献还体现在,他是著名绘图软件 Sketchpad 创造者伊万・萨瑟兰(Ivan Sutherland)的学术导师,而 Sketchpad 正是现代 CAD 系统的雏形。
贝塞尔曲线
孔斯面片能够控制曲面边界的形状,但无法控制边界之间的形状。20 世纪 60 年代初,皮埃尔・贝塞尔(Pierre Bézier)在为雷诺汽车设计曲面的 UNISURF 系统时,深刻认识到控制曲面内部形状的重要性。
皮埃尔・贝塞尔是法国数学传统的杰出代表,他对查尔斯・埃尔米特(Charles Hermite,19 世纪法国数学家)的著作了如指掌,尤其是以埃尔米特命名的三次曲线。埃尔米特曲线是一种利用端点和切线向量对三次曲线进行几何表示的方法。通过改变向量的方向和大小,可以控制埃尔米特曲线的形状:
贝塞尔并不满足于定义埃尔米特曲线只能指定端点处的特性,却无法直接影响端点之间曲线形状的现状(例如,曲线可能会随意偏离连接其端点的线段)。因此,他设计了一种构造性定义(constructively defined curve)的曲线,即后来以他的名字命名的曲线——Bezier曲线,其形状可以通过中间的控制点进行控制。Bezier 曲线始终从第一个控制点出发、在最后一个控制点结束,并与控制多边形的第一段和最后一段相切。曲线上的任意一点始终位于控制多边形的凸包之内,如下图所示:
贝塞尔在 1962 年发表了关于曲线的研究成果,但 12 年后,当雪铁龙公布其研究成果时,人们发现保罗・德・卡斯特里奥至少比贝塞尔早三年就知晓了这类曲线。德・卡斯特里奥以构造性的方式描述了这些曲线,相关算法也以他的名字命名,即德・卡斯特里奥算法。
后来,福里斯特(Forrest)揭示了Bezier 曲线与伯恩斯坦多项式(早在 20 世纪初数学家们就已熟知)之间的联系。他证明了定义 Bezier 曲线的函数可以表示为基本伯恩斯坦多项式的线性组合 [Forrest,1972]。这使得人们能够借助这些多项式的性质来研究 Bezier 曲线的特性。
从曲线过渡到 Bezier 曲面有两种方法。第一种方法是引入所谓的生成 Bezier 曲线,这些曲线具有相同的参数化。对于每个参数值,利用这些曲线上的点构建一条 Bezier 曲线。沿着生成曲线移动,即可构建出一个称为矩形 Bezier 曲面的曲面,定义该曲面的参数域为矩形。第二种方法是在双变量情况下对伯恩斯坦多项式进行自然推广,由这种多项式定义的曲面称为三角 Bezier 曲面。
样条曲线
尽管 Bezier 曲线和曲面是完美的几何构造,但它们的一些特性在很大程度上限制了其应用。例如, Bezier 曲线无法精确表示圆锥曲线(例如圆弧);又如,其次数会随着控制点数量的增加而升高,这大大增加了数值计算的复杂性。
长期以来,数学家们都知道应对复杂曲线次数问题的方法 —— 只需用平滑连接的线段构建曲线,并且限制每条曲线段的次数,这样的曲线被称为样条曲线。首位提及样条曲线的是罗马尼亚裔美国数学家艾萨克・舍恩伯格(Isaac Schoenberg)[Schoenberg,1946]。另一位德裔美国数学家卡尔・德布尔(Carl de Boor)从实际应用(在 CAD 环境下)的角度研究了舍恩伯格的理论著作。德布尔的论文《On calculating with B-Splines》[De Boor,1972]以及同年发表的考克斯(Cox)的论文《The numerical evaluation of B-Splines》[考克斯,1972],建立了复合曲线的几何形状与其代数定义方法之间的联系。
B 样条是 Bezier 曲线和曲面的推广:它们能够以类似的方式利用控制点定义曲线形状,但 B 样条的次数与控制点的数量无关。
B 样条的方程与 Bezier 曲线相似,但混合函数并非伯恩斯坦多项式,而是根据参数递归定义的。B 样条根据指定次数由分段参数区间上的多项式定义,分段参数区间的端点称为节点。
NURBS 的发明
首篇提及 NURBS 的文献是纽约雪城大学研究生肯・弗斯普里尔(Ken Versprille)的博士论文 [弗斯普里尔,1975]。
弗斯普里尔拥有新罕布什尔大学的数学理学学士学位,随后在雪城大学攻读硕士和博士学位,他的导师正是史蒂文・库恩斯。受库恩斯思想的启发,弗斯普里尔在其博士论文中首次描述了 NURBS。毕业后不久,他被 Computervision 公司聘为高级程序员,负责开发 CADDS 3 中的 3D 建模功能。尽管他的工作任务(样条曲线的实现)与他的研究兴趣相符,但他的上司更关注项目的截止日期,坚持让他放弃 NURBS转而使用数学上更为简单的 Bezier 曲线。
几年后,弗斯普里尔在 Computervision 公司晋升到高层职位,公司最终决定支持 NURBS。负责该项目的程序员向肯寻求建议,肯很快回复道:“只需将特定文件中的某个标志从 0 改为 1,然后重新编译代码即可!” 显然,弗斯普里尔从一开始就在研究 NURBS,只是在发布版本中未包含相关代码。修正了一些错误后,代码成功运行![亚雷斯,2008]。
2005 年,肯尼斯・弗斯普里尔因其对 NURBS 的发明 —— 这一对 CAD 发展的极具价值的贡献,而获得了非商业性 CAD 协会 “CAD 学会” 颁发的终身成就奖。弗斯普里尔博士在同年于亚利桑那州举行的工程软件未来大会(COFES)上领取了该奖项。
波音公司的贡献
1979 年,美国航空航天企业波音公司开始开发自己的 CAD/CAM 系统 ——TIGER [Solid Modeling Solution,2011] [Early Investigation, Formulation and Use of NURBS at Boeing]。其开发人员面临的任务之一是选择合适的方式来表示 11 种曲线,涵盖从圆锥曲线到 Bezier 曲线和 B 样条曲线的所有类型。在项目推进过程中,研究人员尤金・李(Eugene Lee)发现,主要任务(确定两条任意曲线的交点)可以简化为求解 Bezier 曲线的交点问题,因为在一定邻域内,任何平滑曲线都可以用 Bezier 曲线近似。这促使研究人员寻找一种用单一形状表示所有曲线的方法。(当时他们似乎还不知道弗斯普里尔的博士论文。)
利用有理 Bezier 曲线表示曲线和其他圆锥曲线的可能性成为了一项重要的局部发现 [李,1981]。另一项重要进展是将科学文献中已有的非均匀 B 样条曲线引入工业实践。最终,研究人员将这两个概念整合为一个公式 ——NURBS。此后,为了说服 TIGER 的其他开发人员采用这种统一的方式来表示所有类型的曲线,他们付出了诸多努力。
不久后,波音公司提议将 NURBS 纳入 IGES 格式,并编写了一份技术文档,详尽地描述了这种新型通用几何数据类型。得益于 SDRC 公司的支持,这一提议受到了热烈欢迎。
SDRC 公司的贡献
1967 年,美国辛辛那提大学机械制造系的前教授们创立了 SDRC(结构动力学研究公司)。最初,该公司旨在为机械制造领域提供咨询服务,但随着时间的推移,SDRC 逐渐发展成为全球领先的 CAD 开发商之一。该公司从计算机辅助工程(CAE)起步,随后涉足 CAD(设计)领域,并开发了 I-DEAS 软件。I-DEAS 能够处理从概念设计、线框建模、实体建模到绘图、有限元分析和数控编程等一系列广泛的任务。I-DEAS 是一款基于 GEOMOD的原创的实体建模软件。
起初,GEOMOD 将实体表示为逼近其边界的多边形网格。在认识到波音公司将 NURBS 标准化提议的重要性后,SDRC 的开发人员积极地将 NURBS 应用于 GEOMOD 中。该算法主要由韦恩・蒂勒(Wayne Tiller)开发,他后来与 Les Piegl 合著了著名的专著《The NURBS Book》[Les Piegl,1997]。
2001 年,EDS 公司收购了 SDRC,I-DEAS 软件随之停止开发,而韦恩・蒂勒凭借其经验开发了 NLib 库(详见下文,在专著《The NURBS Book》[Les Piegl,1997]中也有描述)。
GeomWare、IntegrityWare 和 Solid Modeling Solutions 公司的贡献
美国公司 IntegrityWare 自 1996 年起就致力于开发几何计算库。1998 年,它与 Solid Modeling Solutions(SMS) 公司达成协议,共同开发 SMLib—— 一款实体建模内核,同年发布了首个版本。
SMLib 就像一个 “俄罗斯套娃”,每一层都是一个独立的函数库或类库。最核心的是 NLib—— 由合作公司 GeomWare 开发的 NURBS 函数库。NLib 包含了用于设计和处理 NURBS 曲线和曲面的完整函数集。NLib 的算法基于经典专著《The NURBS Book》[皮格尔,1997],其作者之一韦恩・蒂勒是 GeomWare 的创始人兼总裁。NLib 被 85 多家从事工程软件开发的公司所采用。
基于 NLib 开发的面向对象库 GSNlib(通用曲面 NURBS 库),包含了用于创建、编辑、获取信息以及NURBS 曲线曲面求交的一系列方法。IntegrityWare 以 GSLib 的名称发布该库,并授权给诸如 Robert McNeel & Associates(用于开发 Rhino 3D 软件)和福特汽车公司等企业使用。SMS 于 2022 年被英伟达收购。
细分曲面
细分曲面可以看作是从基础网格迭代构建而成的多边形模型,每次迭代都会使模型更接近目标曲面的形状。细分曲面由基础网格和平滑算法两个部分组成。从历史上看,细分曲面理论起源于美国设计师柴金(Chaikin)的工作,他开发了一种根据控制点迭代构建曲线的方法 [柴金,1974]。与 Bezier 曲线的构建方式类似,柴金也是首先从由一组控制点定义的特征多边形开始构建曲线,然后,根据特定规则基于第一组控制点生成新的控制点序列。从几何角度看,这就像是对初始曲线进行切角操作 —— 每条线段按 1:2:1 的比例进行分割,在缩短的旧线段之间插入新线段的同时,切除两段之间的夹角。这个过程持续进行,直到曲线达到足够的平滑度。如下图所示:
很快,人们证明了柴金算法生成的曲线实际上就是二次均匀 B 样条曲线。
柴金的方法为其追随者开发的一系列算法奠定了基础。其中一种算法是由杜(Doo)和萨宾(Sabin)提出的,用于利用基础四边形网格(这种网格中的每个面都是凸四边形)构建二次均匀 B 样条曲面 [杜,1978]。不久后,研究人员将该方法推广到任意基础网格,使得网格中的每个面可以有任意数量的顶点(3 个、4 个、5 个……)。除了有限个点之外,所得曲面在局部上是二次均匀 B 样条曲面。杜 - 萨宾方法的操作是在每一步中,将每个面替换为具有相同顶点数的较小面。较小面的每个顶点是原始顶点、相邻两条边的中点以及面中心点三者的算术平均值。结果会得到一个非连接的网格,然后将每个新顶点与从同一个旧顶点得到的所有其他顶点连接起来,形成新的面。最终得到的连接多面体将作为下一次算法迭代的基础。不难发现,这种方法和柴金方法一样都涉及切角操作:
犹他大学的研究生卡特穆尔(Catmull)和克拉克(Clark)将切角方法进行扩展,用于构建均匀三次 B 样条曲线 [卡特穆尔,1978]。他们的方法和杜 - 萨宾方法一样,可以在任意拓扑结构的基础网格上运行(所得曲面在局部上类似于三次 B 样条曲面)。其平滑算法基于在稍有不同的规则下迭代构建新网格。下图展示了该方法的工作原理:
细分曲面为以紧凑方式表示平滑曲面提供了一种便捷途径。这一特性被广泛应用于表示各种有机物体,因此也非常适合在曲面建模系统中描述复杂曲面。(通过使用特殊属性来处理非平滑连接 —— 尖锐边缘,这在一定程度上限制了细分算法的应用范围。)
目前,基于细分曲面的几何数据交换的多个工业标准正在开发中。
NURBS 的优势
为何 NURBS 曲线和曲面在 CAD 发展中发挥了如此重要的作用呢?首先,它们为解析几何对象以及自由形式的曲线和曲面提供了通用的数学表示方式。通过调整 NURBS 的控制点和权重,可以灵活地设计出各种各样的几何形状。NURBS 的计算速度较快,且数值稳定性高。NURBS 曲线和曲面具有清晰的几何解释,这对于熟悉几何知识的设计师来说尤为有用和重要。NURBS 拥有丰富的工具(如节点插入 / 删除 / 更改、升阶、分割等),可用于创建和分析相关对象。NURBS 在缩放、旋转、平移、切割、构建平行投影和等距投影等操作下具有不变性《On NURBS: A Survey》[Les Piegl,1991]。
与此同时,用 NURBS 表示曲线和曲面也存在一些缺点。首先,它需要更多的内存:例如,用 NURBS 曲线表示一个圆需要定义 7 个控制点和 10 个节点,这意味着要存储 38 个浮点数(每个控制点包括xyzw四个数值),而不是用圆心、法向和半径表示时所需的 7 个浮点数;不正确的权重函数可能会导致极差的参数化,使得后续基于 NURBS 的构建无法进行;某些算法(例如计算两个曲面的交线)在传统表示方式下的运行效果更好;最后,一些基本算法(如逆映射)在 NURBS 中数值不稳定。
尽管存在这些缺点,NURBS 在 CAD 中仍然被广泛应用,因为目前还没有更好的替代方案。然而……
T 样条曲线
T 样条曲线是一种与 NURBS 类似的自由形式曲面。T 样条曲线与 NURBS 的关键区别在于,NURBS 曲面的控制点必须形成矩形框架的拓扑相似结构,而 T 样条可以有所谓的内部 T 点(即有三个相邻点而非四个相邻点的控制点)。T 样条曲线是连接 NURBS 和细分曲面的桥梁技术。
在满足相同的 G2 曲面平滑度要求的情况下,使用 T 样条曲线对不规则曲面(organic surfaces)进行建模所需的控制点数量比 NURBS 减少一半。
T 样条曲线由托马斯・塞德伯格(Thomas Sederberg)发明 [塞德伯格,2003]。2004 年,美国成立了 T-Splines, Inc. 公司,以推动 T 样条曲线的商业应用;该公司利用 T 样条曲线技术开发面向终端用户的软件产品。
这种受专利保护的技术是否会取代 NURBS,还有待时间检验。最近,欧特克(Autodesk)公司收购了 T-Splines, Inc. 公司的技术资产 [欧特克,2011],这表明该技术得到了 CAD 行业的认可。
原作参考文献
- Autodesk, Inc., 2011, Autodesk Acquires T-Splines Modeling Technology Assets,
http://news.autodesk.com/news/autodesk/20111222005259/en/Autodesk-Acquires-T-Splines-Modeling-Technology-Assets- Catmull, E., and Clark, J., 1978, Recursively generated B-spline surfaces on arbitrary topological meshes, Computer-Aided Design 10(6):350-355.
- Chaikin, G., 1974, An algorithm for high speed curve generation, Computer Graphics and Image Processing, 3(4):346–349.
- Coons S. А., 1967, Surfaces for Computer Aided Design of Space Form, MIT Project MAC, AUC-TR-41. http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-041.pdf
- Cox, M. G., 1972, The Numerical Evaluation of B-Splines, J. Inst. Mathematics and Applications, Vol. 10, pp. 134-149.
- De Boor, C., 1972, On Calculation with B-Splines, J. Approximation Theory, Vol. 6, No. 1, pp. 50-62.
- Doo, D., 1978, A subdivision algorithm for smoothing down irregularly shaped polyhedrons, Proceedings on Interactive Techniques in Computer Aided Design, pp. 157-165.
- Forrest, A. R., 1972, Interactive Interpolation and Approximation by Bezier Polynomials, Comp J., Vol 15, pp 71-79.
- Lee, E. T. Y., 1981, A Treatment of Conics in Parametric Rational Bezier Form, Boeing document, Boeing, Seattle, Wash.
- Piegl, L., 1991, On NURBS: A Survey, IEEE CG&A, Vol. 11, No. 1, pp. 55-71. http://www.ece.uvic.ca/~bctill/papers/mocap/Piegl_1991.pdf
- Piegl, L. A., and Tiller, W., 1997, The NURBS Book, Springer.
- Schoenberg, I.J., 1946, Contributions to the problem of approximation of equidistant data by analytic functions, Part A: On the problem of smoothing or graduation, a first class of analytic approximation formulas, Quart. Appl. Math. 4, 45–99.
- Sederberg, T.-W., Zheng, J., Bakenov, A., and Nasri, A., 2003, T-Splines and T-NURCCs, ACM Transactions on. Graphics, 22(3), 477-484, http://cagd.cs.byu.edu/~tspline/innovation/papers/tspline.pdf
- Solid Modeling Solutions, 2011, NURBS at Boeing. http://www.smlib.com/white%20papers/nurbsatboeing.htm
- Versprille, K. J., 1975, Computer-Aided Design Applications of the Rational B-Splines Approxamation Form, doctoral dissertation, Syracuse Univ., Syracuse, N.Y.
- Yares, E., 2008, A story about NURBS and bugs from Ken Versprille, http://www.evanyares.com/a-story-about-nurbs-and-bugs-from-ken-versprille/
本文地址:https://blog.csdn.net/Mechanicoder/article/details/145538971