NURBS曲面建模基础
直到最近,和许多其他人一样,我认为自己在多边形方面做得很好,但从未熟练地使用 NURBS 建模。但当我需要建模高质量的反射模型(A 级表面,例如具有精确反射的车身)时,我意识到没有办法逃避花时间学习它,后来我觉得它可以成为一种非常有用的知识,可以加快我的建模过程,虽然在编写本教程时,我不能说我提供的信息是基于长期经验的,但我希望分享我的新理解将有助于以不同的角度阐明这个主题。
1、什么是 NURBS
NURBS 是一种使用曲线创建可修剪和对齐的矩形面片的方法。
等等!就是这样?我一直以为 NURBS(非均匀有理基样条)比上面的线复杂得多!其实不是。这当然是一个实用的定义,有许多工具或工具组合可以以不同的形式完成同一件事,这可能需要一段时间才能习惯,但原理相当简单。
我们将在下面演示所有 NURBS 工具如何归入以下类别之一:
- 曲线创建/修改。
- 矩形表面创建/修改。
- 布尔/相交/投影操作。
- 对齐工具。对齐可以使 2 个面片或曲线看起来无缝地融合在一起。
- 测量和评估工具。
2、NURBS vs. 多边形
多边形使用点(称为顶点)来定义 3D 空间中的位置。这些点通过直线(称为边)连接,形成面(三角形)。
为了避免这些直线或有角度的网格结构看起来参差不齐,人们发明了 Gouraud 着色技巧。只改变面的外观,而不改变几何形状。你可以使用细分算法(如 Catmull-Clark)更改几何形状来平滑网格。
虽然这些方法在许多领域都很有效,特别是如果你只需要渲染或查看模型的图像。但如果你想要高精度地将物体机器构建到公差*为 0.01 毫米,就会发现它用处不大;要在多边形中实现这一点,你需要多次细分网格以获得足以适应该精度水平的顶点定义。
从上图可以看出,多边形细分对图像来说很有用,但如果你想制造一个半径为 3 米的圆柱体,你将需要更多的细分,真的很多。想象一下,用手指沿着一个大圆柱体的侧面摩擦,考虑一下你需要多少个顶点才能让感觉光滑而没有凹凸。
如果你还有任何疑问,请不要忘记 Gouraud 着色是使表面看起来可接受的原因,删除它,你就会看到面,意识到你需要多少细分才能制作出光滑的表面。下图演示了 Gouraud 着色效果。
当然,有多种方法来处理细分,或将网格转换为 NURBS 曲面以便能够顺利构建它(检查 nPower Software SUBD-NURBS)。有时你甚至不需要它达到高精度,例如 3D 打印你创建的雕塑的情况。
然而,目前,创建和制造高质量产品的标准流程需要使用 NURBS 曲面/实体**。公差非常小的紧密配合部件需要高精度。此外,你在高级 NURBS 和 A 级曲面软件中拥有的工具是多边形建模软件所无法比拟的;允许在多边形中无法轻松实现的修剪、投影、对齐和测量,但也许以后我们可以看到一种更高级的精确产品建模形式,其中融合了细分方法。
Blender Artists 上的这个主题“nurbs 和细分,历史”非常有趣,涵盖了前面的主题。
如果你熟悉科学术语(例如(精度/误差幅度),就可以轻松地知道公差指的是什么。例如,1 毫米的公差意味着误差幅度或不准确性不超过 1 毫米。
为了避免混淆,简单地说,实体只是任何没有孔的表面/面片的组合,或者你可以将其视为内部有实质内容而不仅仅是外壳的东西。术语“防水”有时用于描述实体。
3、了解 NURBS 曲线
它非常平滑、精确,你可以精确地在曲线上的任意位置点一个点,只要你愿意,就可以获得 0.0001 毫米的精度!
但是如何实现呢?与多边形细分不同,多边形细分依赖于不断增加的迭代次数来获得更高级别的精度。NURBS 曲线使用简单的数学方程来定义曲线,现在只需知道只需放置几个点,就可以获得非常精确的平滑曲线,而无需进行大量计算。与网格文件相比,NURBS 曲面的文件大小非常小,网格文件的大小很大,这是由每个顶点位置的结构表及其连接方式决定的。
NURBS 曲线由称为控制顶点(control vertices)的点控制,曲线本身上的相应点称为编辑点(edit points)。这些控制顶点拉动曲线,其行为就像磁铁一样,每个控制顶点都会将曲线拉向自己一点。曲线由点组成,这些点的位置由相邻控制顶点的总和决定。
要了解有关 NURBS 背后的数学知识,你可以查看以下链接:
清晰基础知识 | B 样条线旧讲座 | 计算机图形学原理和实践免费章节
一般来说,你也可以查看 J.Schneider 在 MacTech 页面中列出的一些资源;如果你想了解软件执行的任何操作背后的基本数学知识或如何对其进行编码,从任何图形参考书(渲染引擎或 3D 游戏编码器研究)开始都是一个不错的开始。
4、曲线 + 挤压 = 表面
如果我们采用精确的曲线,并沿轴或另一条曲线挤压它,我们将得到同样精确的表面。
我们刚刚创建的曲面是大部分 NURB 曲面创建的基础;轨道、放样、蒙皮、方形和旋转,都可以看作是沿着曲线挤压的一种或另一种形式,并在生成曲线和/或轨道之间进行一些插值或平均。它们都产生了你可以描述为具有 2 个轴坐标 (UV) 的弯曲矩形曲面。一个坐标轴 (U) 取自一条曲线或一组曲线,而 (V) 轴的坐标取自另一条曲线或一组曲线。
现在,让我们来看看你在任何 NURBS 建模软件中都会遇到的一些工具,它们通常属于以下类别之一:
5、曲线创建/修改
有一件事可能会让多边形建模者远离 NURBS 建模技术,那就是工具集,它似乎与他们习惯的工具集有很大不同,当他们尝试测试某些工具时;什么都没有发生,或者弹出一条指示失败的语句。
虽然似乎有很多用于曲线创建和操作的工具,但目前我们只对创建曲线感兴趣。
值得注意的是,许多这些工具只是同一种工具,只是操作方式不同或包含多个过程,例如;圆角是一种修剪曲线的方法,在切割区域创建新曲线并将其与边缘对齐。所有这些工具都是创建由 CV 组成的传统 NURBS 曲线的一种方式。
这些工具集通常包含:
- 基本曲线创建工具(使用控制点、编辑点或手柄创建曲线都是同一种工具,只是创建方式不同)。
- 原始曲线(圆弧、圆、正方形等)。
- 切割/修剪/延伸曲线的方法。
- 复制/重复曲线(从修剪的边缘和表面复制)。
- 曲线属性修改/拟合/简化/平面化。
- 对齐/投影/相交。
- 圆角/倒角/偏移。
6、矩形表面创建/修改
曲线准备好后,即可创建表面。以下是创建表面的一些典型工具示例,以及如何使用不同的工具创建类似的表面:
挤压/轨道/双轨道/扫掠
根据你使用的软件,此工具可以称为沿曲线挤压、扫掠、轨道或双轨道。
挤压路径就是你所说的轨道,如果有 2 条轨道,那么将使用双轨道,挤压的形状或曲线称为生成曲线。使用多条曲线来定义挤压形状可以沿轨道改变形状。
SKIN/LOFT
Skin 或 loft 可能是最简单的算法之一,你可以创建 2 条或更多条曲线,并在其间混合一个曲面。
PATCH/SQUARE/CAP HOLES/NETWORK SURFACE
我在这里将完全不相关的工具集中在一起,这只是为了最小化空间和简化。
这些工具以某种方式插入边界并创建曲面。所有 NURBS 曲面工具的基本原理都相似,以 2 个工具为例,采用方形工具和双轨算法;双轨混合生成曲线并扫过轨道,而方形混合 U 方向的 2 条曲线和 V 方向的 2 条曲线。
旋转
我假设你熟悉旋转工具。有趣的是,它只是沿路径或单轨工具挤压的特殊情况;路径当然是圆形或圆形的一部分。
温馨提醒,所有 NURBS 曲面实际上都是面片,你可以看看当你在 Alias Automotive 中错过 NURBS 球体图元的极点控制顶点时会发生什么。请注意,只需将顶点移离交汇点/极点即可在顶部形成洞,一般来说,最好避免任何挤入一端形成三角形的面片,而是创建一个矩形面片并修剪它。
7、布尔操作
但是,等等,很多使用 NURBS 创建的 3D 模型看起来并不像方形面片!
快速而准确地相交和减去对象、投影和修剪曲线的能力是 NURBS 建模软件所独有的,并且非常强大,尤其是与圆角和倒角工具一起使用时。
多边形建模工具已经改进了布尔工具,ZBrush 具有非常方便的 dynamesh 布尔功能,我们在多边形建模工具中拥有类似于 NURBS 的修剪功能可能只是时间问题。但到目前为止,它们还没有达到 NURBS 布尔的精确度水平,并且圆角和混合的控制也不够简单。
3D 建模操作几乎总是更简单程序的组合,就布尔而言,程序可以如下进行:相交、基于相交的分割,然后删除任何不需要的部分并将它们重新连接在一起。 (我从 Robert McNeel Wiki 中得到了这个简化)
在学习过程的开始阶段,弄清楚创建简单表面所需的所有布尔运算可能是一个障碍,但一旦你弄清楚了一些,这个过程就会变得更快。
8、打败那些多边形!
只需几个步骤,我们就能创建一个在典型的多边形建模方法中需要很长时间才能创建的形式。尽管前面有标题,但我在这里并不是在抨击多边形。你仍然可以在多边形中创建复杂的形式……
9、连续性
在谈论对齐之前,最好先解释一下术语连续性。由于 NURBS 会用修剪和相交的面片创建一个大的表面/实体,因此总是会担心它们是否连接或之间是否有任何间隙。
另一个问题不仅是间隙,还有面片如何相互融合,以及反射条纹的外观和过渡,这让我们进入下面解释的连续性术语和定义。所有这些连续性级别都测量到你设置的指定公差级别;例如距离为 0.01 毫米或角度为 0.1 度。
- 位置连续性 (G0):表面对齐,中间没有间隙(即接触)。
一个表面的边缘控制顶点被移动并对齐到另一个表面。
- 切向连续性 (G1):测量表面之间的角度并确保其不超过设定值。
如果你有两个表面接触/相交,并且想要创建 G1 混合表面,则会在它们之间创建一个具有指定角度/半径的圆形表面,这样当一个表面过渡到另一个表面时,角度不会超过设定的最大值。
额外的一行控制顶点与另一个表面对齐。(角度)
- 曲率连续性 (G2):混合在一起,在其上移动的高光看起来就像在一个表面上一样,再次多了一排控制顶点。(半径)
- 曲率变化率 (G3):它甚至更加混合,但差异非常小,几乎不可察觉。 (加速度/曲率变化率)
- G4-G5-ad infinitum:未使用,但从理论上讲,你可以添加任意数量。对于数学倾向者,请考虑微分和积分以及变化率(速度),或变化率的速率(加速度),或变化率的速率(加速加速度)。
据我所知,曲线或曲面使用的连续性术语没有区别,对齐工具的基本原理非常相似。
Autodesk 在 Alias 工作台上有一篇关于连续性的很好的小文章。
能够以如此精确的方式混合曲面并控制角度,可以产生平滑的反射,正如我在另一个教程中演示的那样,多边形建模工具很难与之匹敌。
10、对齐工具
如前面的连续性部分所述,要实现 G0 连续性,你需要让曲线或曲面在每个点处无缝连接,但 G1、G2 等又如何呢?
对齐和曲面混合的过程在原则上非常简单:
我们所说的切线表示曲线或曲面在任何点的变化方式或斜率。
当你将曲线/曲面与具有 G1 连续性的另一个曲线/曲面对齐时,对齐工具将尝试移动曲线的控制顶点,以便其切线在端点处与原始切线匹配。两者看起来就像无缝混合一样
要实现 G2、G3 等连续性级别... 仅使切线匹配是不够的,还需要使切线平滑倾斜,这会导致将一些控制顶点移离曲线/曲面的交汇点。
11、两种或多种工具的组合
我想指出,圆角、倒角、混合和自由形状混合等工具或任何似乎可以轻松完成很多工作的工具通常只是一些基本工具的组合。了解这一点确实有助于揭开围绕该过程的一些神秘面纱。
幸运的是,我可以节省打字的精力,并链接两个简短的视频,这些视频展示了 Alias Automotive 中的自由形状混合工具如何只是修剪、蒙皮和对齐的组合,以及混合曲线的类似组合:
Alias 混合曲线 - 自由形状混合。如果你刚刚开始使用 NURBS,现在查看这些视频可能为时过早,但稍后你可以观看它以了解混合曲线如何只是更简单工具的组合。
12、测量和评估工具
我在这里演示了 Alias Automotive 中的一些测量和评估工具:
测量:距离、半径和角度都可以准确测量。
如果你想了解有关 Alias Automotive 中圆的更多信息,请查看这篇文章,或观看此视频以了解情况。
曲线曲率:也称为梳状图,它显示曲线的弯曲方式,计算曲线段的圆半径。了解曲线的平滑程度以及曲率中断的位置很有用。更多信息请点击此处。
横截面和颜色中的表面曲率:类似于仅应用于表面的曲线曲率。使用颜色可以方便地查看表面在不同方向上的流动情况。更多信息请点击此处。
反射图/线和 Iso 角:这可能是快速判断表面质量的最直观方法,如果有任何明显的断裂或扭曲,你也可以在任何建模软件中使用反射图。更多信息请点击此处。
13、结束语
到目前为止,一切都是理论性的,当然,最好的学习方法是开始直接在任何 NURBS 建模软件中创建表单。这只是对那些还没有将 NURBS 建模纳入其工作流程的建模者的简要介绍,并对整个过程给出一个总体概念。
我在进行研究和示例时使用了 Alias automobile 和 Rhinoceros。请随意自行探索任何软件。Fusion 360 相当不错,如果你对更简单的软件感兴趣,也可以考虑 MOI 3D。
关于线框和拓扑的最后一点说明。如果你正在创建用于实时使用或动画变形的模型,则不能使用 NURBS,但如果你可以处理高多边形数量,则可能不必担心 NURBS 生成的混乱线框。
BimAnt翻译整理,转载请标明出处