00-《NURBS学习》目录
目录
当你打开本专栏时,相信你已多少听闻过 NURBS 的大名。NURBS 作为一种形状表达、设计和数据交换的工业标准在 CAx 领域起着奠基作用。研发设计类工业软件的开发人员都不可避免要接触数字模型,无论你从事的是设计、仿真、制造、工艺设计、产品管理等任何一个环节。而 NURBS 为模型提供了统一的数字化表达,现已成为被广泛接受使用的标准。
学习 NURBS 理论是从业的第一步,在许多人眼里也是艰难的一步。《非均匀有理B样条》(The NURBS Book)这本书为我们提供了一个学习的有效途径。
本专栏打算以《非均匀有理B样条(第2版)》读书笔记的形式撰写。虽是笔记,但也尽量保证叙述的独立性、连贯性。以书籍为纲,力求在自己的理解之上重述NURBS理论,专栏不会全文照搬原书。笔记将辅以动图、工科学生视角下的公式推导、个人体悟。希望我的重新演绎能帮助原作者达成“NURBS(Nobody Understands Rational B-Spline)”向“EURBS(Everybody Understands Rational B-Spline)”转变的梦想。
感谢 Les Piegl 和 Wayne Tiller 两位作者!感谢中文版译者!
1. 专栏文章目录(持续更新)
2. 《非均匀有理B样条(第2版)》介绍
The NURBS Book 是一本CAD领域的大成之作,成书于1995年,由 Les Piegl 和 Wayne Tiller 合著,该书出版后一时洛阳纸贵,两年后做了小修改随即再版,此后未再更新,可见作者功力之深。该书主要讲述NURBS曲线曲面的理论,书中配套有各算法的类C语言的伪代码,实际上两位作者在写书过程中,团队开发了功能丰富的NURBS库 Nlib V1.0和V2.0。
本书于2010年经由北京航空航天大学赵罡、穆国旺、王拉柱老师翻译,以《非均匀有理B样条(第2版)》为名,被清华大学出版社作为“应用数学译丛”系列中的一本出版,可惜该书仅印制1次,印数也不多,目前各网站上原版书籍的价格已经到了四五百元以上。本系列读书笔记即以此版为主。
2.1 关于NLib
许多读者看到书中穿插有算法代码,甚至书中单开一章介绍了 NLib 库的介绍与使用,便苦苦在网上找寻 Nlib。实际上,这款投入20人年的库从一开始就选择了走商业路线。
GeomWare, Inc. 是一家专注于提供NURBS曲线曲面技术支持的公司,NLib是其拳头产品,据其官网的介绍,NLib在1999年12月就已经卖出了NLib的第100个授权。
另有几家早期的公司值得注意。IntegrityWare, Inc. 是一家3D几何建模和图形技术公司,他们提供了名为GSLib(Geometric Solver Library)、TSLib(Trimmed Surface Library)、POPLib(Polygon Optimization Library)的产品;Solid modeling library(SMB) 是一家专注于实体建模的公司,他们提供了名为SMLib(Solid Modeling Library)的产品; HarmonyWare 是一家专注为TSLib、SMLib、NLib提供向IGES格式的互转的公司。这几家公司连同 GeomWare, Inc. 在内,所做的产品各有侧重,略有重合,活跃在90年代的这几家公司如果将产品联合起来就将是一个完整内核,其大有可能与ACIS、Parasolid呈鼎足之势。实际上他们这几家也确实达成了联盟,仅从各家的产品名、所提供的产品功能层次就可以看出。
2001年,GeomWare 将 NLib 卖给了 SMB,今天我们在SMB的官网上仍然可以见到 NLib的手册, Piegl 和 Tiller在书中所言 1524 个 NLib 函数的名称也大都可以看到。
实际上,NLib也许就在诸位读者的电脑里。在我的电脑上,至少PTC、NX、SolidWorks都明显有一个名为 NLib.dll 的动态库。至于各家软件用 NLib 完成什么功能就不可知了,仅从SolidWorks的路径信息来看,NLib似乎是用于支持其CAM的功能模块。
关于NLib的数据结构、功能,作者已经讲了很多,公开资料也非常有学习的价值,值得我们深入研究。
3. NURBS相关的参考资料
另有一些书籍也值得参考,下面所列的书籍仅关注到 NURBS、CAD 两个主题,其他值得延伸的比如离散模型表达处理、图形学、数值计算、软件开发等没有涉及。
3.1 中文书籍
此处所列中文书籍不包括译作,译作在下文“外文书籍”中与原版作品同列。
书籍信息 | 封面 |
---|---|
1994 《CAD/CAM技术》 唐荣锡编著 | ![]() |
2000 《自由曲线曲面造型技术》 朱心雄等著 | ![]() |
2001 《计算机辅助几何设计与非均匀有理B样条CAGD&NURBS》 施法中编著 | ![]() ![]() |
2001 《计算机辅助几何设计》 王国瑾、汪国昭、郑建民著 | ![]() |
2003 《机械CAD技术基础(第2版)》 童秉枢、李学志、吴志军、冯娟编著 | ![]() |
2007 《计算机辅助几何设计技术及应用》 李原、张开富、余剑峰编 | ![]() |
3.2 外文书籍
书籍信息 | 封面 |
---|---|
1976 Differential Geometry of Curves and Surfaces Manfredo P. Do Carmo 有中文版 | ![]() ![]() ![]() |
1984 An Introduction to Solid Modeling Mantyla Martti | ![]() |
1989 Geometric and Solid Modeling Hoffmann C.M. | ![]() |
1997 CAD Systems Development. Tools and Methods D. Roller, P. Brunet.pdf | ![]() |
1998 The Geometry Toolbox for Graphics and Modeling Gerald Farin, Dianne Hansford | ![]() |
1999 NURBS. From Projective Geometry to Practical Use Gerald Farin | ![]() |
1999 Principles of CAD/CAM/CAE systems Kunwoo Lee 有中文版 | ![]() ![]() |
2000 An Introduction to NURBS With Historical Perspective David F. Rogers | ![]() |
2000 CAD Tools and Algorithms for Product Design P. Brunet, C. Hoffmann, D. Roller | ![]() |
2000 The Essentials of CAGD Gerald Farin, Dianne Hansford | ![]() |
2001 Curves and Surfaces for CAGD (A Practical Guide) Gerald Farin 有中文版 | ![]() ![]() |
2001 A Practical Guide to Splines Carl de Boor | ![]() |
2001 Shape Interrogation for Computer Aided Design and Manufacturing Nicholas M. Patrikalakis, Takashi Maekawa 有中文版 | ![]() ![]() |
2002 Handbook of Computer Aided Geometric Design G. Farin, J. Hoschek, M.-S. Kim | ![]() |
2002 Pyramid Algorithms: A Dynamic Programming Approach to Curves and Surfaces for Geometric Modeling Ron Goldman 有中文版 | ![]() ![]() |
2006 Boundary Representation Modelling Techniques Ian Stroud | ![]() |
2011 Solid Modelling and CAD Systems. How to Survive a CAD System Ian Stroud | ![]() |
2008 The Engineering Design Revolution CAD History Dave Weisberg 民间翻译 | / |
3.2 开源库
NURBS相关的曲线、曲面库网上有各种整理的列表
下面汇总各列表的库信息,并补充一些开源库,供读者参考。
- OCCT-Open CASCADE Technology
- NURBS-Python (geomdl)
- SISL-The SINTEF Spline Library
- MBA-Multilevel B-spline Approximation Library
- LSMG-Least Squares Approximation of Scattered Data with B-Splines
- Splipy
- openNURBS
- Nurbana 3D NURBS Modeler
- nurbs++
- tinynurbs
- einspline
- SplineLibrary
- LNLib
3.3 其他
另有一些博客、交互网站值得推荐。
-
CS3621 Introduction to Computing with Geometry Notes
密歇根理工大学冼镜光老师的《计算几何》课程讲义。冼老师更为出名的著作是《C语言名题精选百则技巧篇》。更令人惊奇的是,他也是一位摄影师,在摄影圈的一些技术博文也颇有名气。 -
图形学与混合现实研讨会 (GAMES) 在线课程 GAMES 102《几何建模与处理基础》
中国计算机学会计算机辅助设计与图形学专委会于2016年3月创办了计算机图形学和混合现实前沿研讨会(GAMES,Graphics And Mixed Environment Symposium),其围绕图形学推出的一系列高质量课程已成为图形学从业者的必选。刘利刚老师的《几何建模与处理基础》对NURBS也有涉及。 -
NURBS Demo
Jan Foretník 创作的 swf 格式的 NURBS 演示程序。 -
A Primer on Bézier Curves
Pomax 的这份在线课程为我们学习 Bézier Curves 提供了一个直观、交互的平台。 -
Exploring Bézier and Spline Curves - An interactive web app
Richard Fuhr 创作的一个交互学习 Bézier 和 Spline Curves 的网页程序。 -
NURBS calculator
Pawan Gami 创作的一个交互学习 NURBS、B-Spline、Bézier曲线的网页程序。 -
NURBS blending functions and curves Demonstration program
Sam Buss 创作的一个交互学习 NURBS 曲线的网页程序。 -
Timo Denk 创作的一系列演示插值曲线的网页程序
线性插值 Linear interpolation
二次插值 Quadratic interpolation
多项式插值 Polynomial interpolation
三次样条插值 Cubic spline interpolation -
一些 WOLFRAM Demonstrations
Yu-Sung Chang B-Spline Curve with Knots
Tammo Jan Dijkema B-Spline Basis Functions
4. 絮语
2023年10月份,我开始尝试进行本专栏的写作。此时,提起国产工业软件,大家已不再是“失去的三十年”、“卡脖子”这般叹息扼腕;在自主化共识下,利好政策越来越多,更多的人沉下心来,选择埋头苦干。
但当聚光灯照进这冷清几十年的庭院没多久,一睁眼才发现连门口都站满了人,好不热闹。和国产芯片、操作系统一样,工业软件这个领域也将会经历一个大浪淘沙的过程,这期间也会有丑闻乱象、对骂厮杀,但终归会在一番吵闹与实干后实现“自主化”这个结局。尽管当下“泥沙俱下”,但也总好过“无人问津”。
希望身处国产工业软件替代浪潮下的从业小伙伴们都可以静下心来,在各自不同的现实阻力下能考虑长远,尽量为自己辟一方净土认真耕耘,做真事、做慢事。
专栏更新速度较慢,希望我也能慢慢走下去。