“NURBS基本体”在Maya里常年被放在菜单深处,很多从多边形建模入门的同学甚至没认真点开过。说起来挺讽刺,我第一次真正“感谢”这套功能,是被一个带复杂曲面的产品外观预研项目逼出来的——用多边形方案反复修改轮廓,每改一次都要重捋拓扑,后来换成NURBS基本体起手,控制点一拖,造型调整变成了一件很直观的事。这篇笔记就把Maya创建NURBS基本体的完整操作、参数含义和常见问题一次性讲清楚,尤其适合想补上曲面建模这块短板的设计师和CG学习者。
这篇文章不会只教你怎么点几个菜单按钮。我会先花点篇幅把NURBS的工作原理讲透,因为很多人后续遇到“转了多边形就乱掉”“曲面看着不圆滑”“接缝莫名其妙”等问题,根源都在于没理解这套数学建模逻辑和普通多边形到底差在哪。搞懂底层原理之后,再回来看创建参数、属性调整和转换流程,你会发现一切都是顺理成章的事。
1. 先搞明白NURBS是什么:这套建模逻辑与多边形的本质差异
1.1 从“控制点不在曲面上”这个反直觉概念说起
NURBS的全称是Non-Uniform Rational B-Spline,中文通常翻译成非均匀有理B样条。这个名字听起来很高深,但它的核心思想和多边形建模有一个根本区别,理解了这个区别,你就能绕过后面一大半的坑。
多边形表面是由成千上万个顶点、边和面一块块拼起来的网格,每个顶点都实实在在躺在模型表面上——你把鼠标放到模型的某个角上,选中的那个顶点就是模型表面的一个“钉子”。但NURBS曲面不一样,它本质是一条条数学曲线通过算法插值生成的平滑面,曲面上的点并不是由“面上顶点”直接定义的,而是由一堆悬在曲面外面、或者说“隐在参数空间里”的控制顶点(CV)牵引出来的。
打个比方,NURBS曲面就像一块弹性很好的布料,控制点就像布料下面的支架和拉绳。拉绳并不贴在布料表面上,但你动一下拉绳,布料就会发生平滑的形变。你牵着三四个点就能控制一大片布的走势,而不是像多边形那样,改一个弧度可能要拖动几十个顶点。所以初次接触的人会觉得NURBS“不听话”、“点选不准”,因为你在视图中看到的那些可编辑点,很多并不是直接落在曲面上的。
真正落在曲面上的点叫编辑点(Edit Point),而调整造型用得更多的反而是CV。在Maya里用鼠标右键点击曲面,会出现一个标记菜单,里面有Control Vertex、Edit Point、Hull、Isoparm这些选项。Hull也很实用,它会把同一方向上的CV连成一圈辅助线,方便你快速选择整条控制环,而不是一个一个点去勾选。
1.2 为什么工业设计和影视曲面至今离不开NURBS
既然NURBS这么“绕”,为什么它还没被淘汰?答案在于曲面质量。
做汽车外形、船舶壳体、手机曲面甚至运动鞋底时,曲面不能有褶痕、不能有拓扑造成的棱线,光影反射要连续。多边形要想做到这种光顺,唯一办法就是无限细分网格,但细分到一定程度,文件量暴涨、操作卡顿,而且贴图和绑定都会遇到麻烦。
NURBS是用数学公式描述曲面的,天生就能保证曲面的连续性。两条曲线相交处用基本的连续性约束,曲面就能做到接缝处圆滑过渡,不需要额外加线、加面去“糊弄”光影。所以很多工业级三维软件里,A级曲面依然以NURBS为核心。
Maya里的NURBS建模体系是这么分工的:先有NURBS基本体和NURBS曲线,再通过旋转(Revolve)、放样(Loft)、挤出(Extrude)等命令生成曲面,最后用修剪(Trim)、倒角(Fillet)等工具精修。创建NURBS基本体是整个链路最上游的起点,相当于你先拿到一个标准的“毛坯”,再往上做文章。
1.3 NURBS基本体在Maya中的整体定位
很多学习资料一上来就教多边形建模,导致不少人对NURBS的印象停留在“远古功能”。但实际上Maya的NURBS基本体不仅有,而且设计得很完整:球体、立方体、圆柱、圆锥、平面、圆环、圆管、圆形曲线、方形曲线——日常起型几乎全覆盖。
和“自己画一条曲线再旋转成曲面”相比,直接用基本体的优势是速度快、参数可控。你不必从零开始规划曲线结构,拿来一个球体或圆柱,改几个参数就能得到一个可用曲面。缺点是基本体形态比较“标准”,如果你要做的是异形,需要后续重构曲面或者配合曲线命令二次加工。
在实际项目里,我的习惯是用NURBS基本体做“曲率参考”和“快速方案验证”。比如做一个圆润的把手,我先拉一个圆柱出来调半径,看看整体粗细对不对、弧度够不够,验证完设计方向之后,再决定是继续用NURBS细化还是转成多边形精做。这比一开始就在多边形里埋头布线高效得多。
2. 创建入口全梳理:菜单、工具架与创建前的偏好设置
2.1 标准入口和两种创建模式
Maya中创建NURBS基本体的标准入口在主菜单的Create > NURBS Primitives,点开之后能看到一长串子菜单:Sphere、Cube、Cylinder、Cone、Plane、Torus、Circle、Square,以及部分版本新增的Pipe。每个子菜单后面通常有一个小方块图标,点击这个小方块,会打开对应的选项窗口,里面可以预设一系列初始参数。
如果菜单路径不方便,也可以看Maya默认的工具架(Shelf),在“Surfaces”或“Curves”标签页里,通常会放着常用的NURBS基本体快捷按钮,一键点击就能创建,比一次次按菜单要快很多。我自己的习惯是把常用的Sphere、Cylinder、Plane按钮固定到一个自定义工具架上,做曲面比稿的时候能省下不少重复点击。
创建模式方面,新版本Maya默认开启“交互式创建”(Interactive Creation)。在这种模式下,你点击菜单里的Sphere,鼠标到视图中会变成十字光标,按下左键拖拽就能拉出一个球体,松开或回车确认即可。这种“所见即所得”的方式对新手很友好,因为你可以直观地控制生成物的大小和位置。
但如果你习惯了老版本可能更熟悉“点一下就在原点生成一个默认基本体”的方式。Maya在选项窗口的底部安排了几个关键开关:Interactive Creation、Drag To Create,以及“在原点生成”(Position At Origin)之类的选项。取消勾选Interactive Creation,再点击菜单,就会直接按当前位置生成一个采用默认设置的NURBS基本体,不用拖拽。这个细节卡住过不少从旧教程学习的人——明明点了菜单,却总感觉视图里的基本体位置不受自己控制。
2.2 精确创建:用选项窗口定义初始参数
交互式创建适合快速试形,但真到项目里,我更习惯在创建之前就把关键参数定好。方法是点击子菜单旁边的小方块打开选项窗口,这里可以预先设置基本体的锚点位置、轴向、半径、段数等。
拿球体举例,选项窗口里能看见:
- Pivot:基本体的坐标轴心位置,默认在对象中心,也可以设置到原点。
- Axis:指定球体轴向是X、Y还是Z。
- Radius:半径。
- Sweep:球体扫过的角度。保持360是完整球体,改成180就会生成一个半球面,类似切开的西瓜瓣。
- Sections:经线段数。可以理解为球体表面竖直方向上的分段数,默认通常是8,段数越多,越接近“布线”密的重球。
- Spans:纬度跨度数。对应横向纬线的段数,默认4。
- Height Ratio:高度比例,控制球体在轴向上是被压扁还是被拉长。
设置完成后点击Create,Maya就按你的数值参数生成基本体。如果创建后你觉得造型不够圆,不要急着去拖CV,先在通道盒里修改初始参数,很多时候只是Sections和Spans太低导致的显示粗糙,调高这两个值,问题就解决了。
还有一个新手不太注意的点:NURBS曲面在Maya视图中可以用数字键1、2、3切换显示精度。按1显示为低精度网格,按2显示中精度,按3显示为完全平滑的曲面预览。这个快捷键和强制在视图中显示平滑效果的功能对NURBS管用。很多时候你看起来“面数很少很粗糙”的球体,其实不是模型质量问题,只是当前显示精度调得低。按一下3,观感立刻变高级。
3. NURBS基本体逐个拆解:参数差异、默认样式与最佳使用场景
3.1 曲面类基本体:Sphere、Cylinder、Cone、Plane
NURBS Sphere是最常用的基本体,没有之一。它的默认结构类似地球经纬网:Sections对应经线,Spans对应纬线,两者相交处就是等参线网格。做球形物体、工业圆角、或者作为Revolve旋转成型的前置造型,我都习惯先起一个球体来观察曲率走势。如果你把Sweep改成180,就能得到一个精确的半圆球面,这对做“半球形屋顶”或者“剖半视图”特别好用。
NURBS Cylinder和圆锥(Cone)的参数逻辑类似,都有Radius、Height、Sections、Spans。它们的差别在于端盖处理:圆柱默认会生成顶部和底部的端盖,圆锥默认生成底部端盖,这些盖子是单独的面片,不是和侧壁一体的。因此你在旋转视图时会发现圆柱的顶盖边缘处有明显的“闭合线”或者“接缝”,这是正常的NURBS结构特征,不必担心破损。
NURBS Plane是一张平整的NURBS曲面片,参数里除了长宽之外,还可以设置U向和V向的补丁数量(Patches U/V)。Patches数量越多,平面上的等参线越密,也就意味着后续可以在平面上做更细致的局部变形。做地面、背景墙、或单纯当作“一张可以拉弧度的纸”来起型,Plane都非常合适。
这里有一个值得记住的操作经验:圆柱、圆锥在创建时可以指定轴向,创建菜单里的Axis选项就是干这个的。比如你要做一根竖直的水管,选Y轴;要做一个朝向Z方向的车灯罩轮廓,选Z轴。很多人创建完发现模型横躺了,通常不是建模出了问题,而是创建时轴向没选对,旋转一下或者重建一次就好。
3.2 环绕类与曲线类基本体:Torus、Pipe、Circle、Square、Cube
NURBS Torus就是你熟悉的甜甜圈形状,核心参数包括Sweep、Radius、Sections、Spans。Sweep控制圆环绕行的角度,改成小于360就能做出“C形剖面”的环体,非常像被切掉一段的密封圈或把手。做轮胎、手环、圆管开槽,Torus都是很好的起点。
Pipe在一些新版本里单独出现了,本质上是带壁厚的圆管。用默认Sphere和Cylinder做中空管材时,你得自己做布尔运算或者手动补内壁,而Pipe创建出来就是一个内外壁都存在的管状体,省掉了不少事。不过这个基本体在老版本中不一定有,找不到就用Cylinder加壳层或者Torus拉伸来替代。
NURBS Circle和NURBS Square需要注意,它们虽然放在“基本体”菜单里,但创建出来的是曲线,不是曲面。Circle是一条闭合的NURBS圆弧线,Sections控制它的分段数;Square则是四条首尾相连的线段,形成方形框。这两者最大的用途是作为后续Loft、Extrude、Revolve的前置轮廓曲线。所以当你明明点了“基本体”却看不到面,只有一根线的时候,先别慌,你的操作没有错,它本来就是曲线。
NURBS Cube则比较“阴间”。它看起来是一个正方体,但实际上是六张独立的NURBS平面片拼合成的,相邻面之间没有共享边也没有顶点连接。在视图里你可能会发现,移动其中一个面,相邻的面并不会跟着动,因为背地里它们本来就是六张“独立贴纸”贴成一个盒子的样子。要用它做封闭包装盒、机械外框,后续必须自己焊接缝隙或者转多边形后再处理边界。
3.3 九个基本体参数速查表
| 基本体 | 创建结果 | 核心可调参数 | 典型用途 |
|---|---|---|---|
| Sphere | 完整或部分球面 | Radius、Sweep、Sections、Spans | 圆润造型、曲率参考、半球结构 |
| Cylinder | 带端盖的圆柱面 | Radius、Height、Sections、Spans | 水管、轴体、杯身 |
| Cone | 带底盖的圆锥面 | Radius、Height、Sections、Spans | 锥形外壳、喇叭口 |
| Plane | 单张矩形曲面 | Width、Height、Patches U/V | 地面、背景板、可变形基面 |
| Torus | 环形曲面 | Radius、Sweep、Sections、Spans | 轮胎、圆环、卡扣 |
| Pipe | 带壁厚的圆管 | 半径、高度、厚度、段数 | 管道、中空管材 |
| Circle | 闭合圆弧曲线 | Radius、Sweep、Sections | 旋转/挤出轮廓 |
| Square | 四条线段围成的方框 | Width、Height | 平面填充与放样基础 |
| Cube | 六张独立平面组成的方体 | 长宽高 | 盒体造型、场景占位 |
这张表不需要背,但建议你收藏。实际工作中遇到“我要做个圆环状的东西”这种需求,直接联想到Torus和Pipe;遇到“我要在平面上拉一个波浪”,就直接上Plane调Patches。创建基本体很快,真正花时间的是想清楚用哪个体最合适。
4. 创建后的属性调整与常见“翻车”现场
4.1 通道盒与属性编辑器能改什么、不能改什么
创建完基本体之后,很多同学第一件事就是去通道盒(Channel Box)里想把Sections和Spans改了,结果翻了几页找不到。这是因为通道盒默认只显示变换属性(位移、旋转、缩放),而基本体的半径、段数等参数都存在它的输入节点里。
在通道盒顶部找到“INPUTS”栏,展开之后能看到类似makeNurbSphere1、makeNurbCylinder1这样的节点名称,点开节点,里面才是你能改的Radius、Sweep、Sections、Spans等原始创建参数。直接在这里修改,效果等同于回溯到创建那一刻重新设置参数,非常方便。比如你创建时忘了调Sweep,球体生成了个完整的,展开输入节点把Sweep改成180,球体立刻变半球,不会搞出任何额外面。
不过要注意,创建时的轴方向(Axis)和锚点(Pivot)这类“生成时定位”的属性,在输入节点里通常不能随意改动,或者改了之后建模坐标会变化,不如直接旋转整个基本体来得直观。所以我通常把“创建时长什么样”这类参数留给初始设置,把“生成后我要怎么样”这类需求交给变换属性调整。
4.2 三个高频“翻车”现象与完整排查链路
做NURBS基本体时,以下三个问题出现频率最高,我按排查思路写出来,你跟着走一遍就能定位。
第一个问题:曲面看起来不够圆滑,像是一堆小平面拼出来的。很多人第一反应是“模型面数太低”,然后疯狂加Sections和Spans。但你先别急,检查一下视图显示精度:按一下数字键3,如果曲面立刻变圆润,那只是显示精度问题,不是模型结构问题。如果按完3还是棱角分明,再去展开输入节点调高Sections和Spans,或者后续用Insert Isoparm插入更多等参线。判断逻辑很简单:先查显示,再改拓扑。
第二个问题:模型表面有一条明显的“拼接缝”或“棱线”。NURBS曲面在数学上是一张参数平面被卷到三维空间里的,所以总会存在一条参数域的边界,相当于地球上的本初子午线。球体、圆柱上常能看到一条竖直的细缝,这不是坏掉了,是NURBS拓扑的固有接缝。在视图中看着明显,渲染静帧时通常只要光照平滑就几乎看不出来。如果你要转成多边形做游戏资产或后续编辑,这条缝在转换后往往表现为一条顶点重复的边,需要用合并顶点(Merge Vertices)处理掉。
第三个问题:拖CV的时候曲面出现尖角、撕裂或奇怪的凹陷。这通常不是你手抖,而是误动了CV的权重。NURBS控制点除了位置,还自带权重属性,权重不正常时,哪怕点只移动了一点点,曲面也会被“吸引”出尖刺。排查办法:选中形状异常的CV,打开属性编辑器,把权重数值重置为1或恢复默认。转动视角同时观察曲面和CV的关系,很多时候就是某一个点的权重微调搞出了视野里的大变形。
5. 从NURBS基本体到可用模型:转多边形与拓扑整理
5.1 为什么要转多边形,以及转换工具的选择
NURBS曲面虽然数学上漂亮,但到了贴图绘制、骨骼绑定、角色动画这些后续环节,几乎都要回到多边形流程。Maya自带的转换命令在Modify > Convert > NURBS to Polygons,作用是把NURBS曲面转成可编辑的多边形网格,转换之后你可以自由地加线、挤面、做UV。
转换时最需要关注的就是细分密度。选项里通常会提供生成三角形面(Triangles)或四边形面(Quads)的偏好,以及控制U/V方向细分段数的选项。我个人的建议是不要一上来就追求超高密度,先转出一个“既能表现弧度、又不至于面数爆炸”的网格,后续根据实际需求再局部加线。因为NURBS转多边形产生的网格和人工布线网格很不一样,经常是密密麻麻的均匀等参线,看上去像渔网。这种网格做静帧渲染没问题,但做动画,比如角色嘴部开合,就会因为拓扑走向不合理而产生拉伸问题。
所以我会把转换本身分成两步:第一步,用较低密度生成基础网格;第二步,在关键转折处手动重布拓扑。转换工具负责“把曲面变成多边形”,拓扑优化负责“把多边形变成好用模型”,两步不能混为一谈。
5.2 转换后的整理三步走
拿到转换结果后,我做整理基本是固定三步:
第一步,删除历史记录。用Edit > Delete by Type > History把makeNurb相关节点清掉,避免后面每次调整原NURBS参数时,多边形也跟着莫名其妙地变化。这一步最重要,很多“为什么我改了球体参数,旁边转出来的多边形也变形了”的困惑,就是因为建模历史还在。
第二步,检查并清理重叠点和细小三角面。转换常会在接缝、极点处生成重复顶点或狭长三角面,用建模菜单里的Cleanup工具跑一遍,能把孤立的零碎面清掉。之后再检查模型边界,凡是属性不一致的接缝顶点,手动缝合一下。
第三步,按用途调节拓扑密度和流向。如果是静帧渲染,多给平滑组和细分预览一点预算就够了;如果要进入动画绑定环节,关节附近要按骨骼运动方向留出足够的环形线段。这个过程没有标准公式,靠的是“这块地方到时候会怎么变形”的判断——NURBS基本体给你的是一个干净的数学曲面,接下来怎么“翻译”成生产用网格,才是考验建模经验的地方。
如果你只是想要一个能快速看效果的低模,转换之后不做任何整理,直接当一个占位模型用,也不是不行。只是要记住,NURBS转出来的网格在等参线密集的地方容易出现“渲染灰斑”或者“光影不连续”,碰到这种情况别骂软件,去把对应区域的网格拓扑整理一下就好了。
从我个人的实际使用体验来说,NURBS基本体最大的价值不是让你丢掉多边形,而是提供了一种“用数学逻辑思考曲面”的视角。很多用多边形硬磨半天的弧度造型,回到NURBS里可能就是一个基本体加几个CV的事。我后来养成了一个习惯:凡是遇到“看起来应该是完整圆滑曲面”的造型,都会先在旁边拖一个NURBS Sphere或Cylinder当曲率标尺,随时对比当前模型的光顺程度,再决定要不要继续细化。这个小动作看起来不起眼,但真的帮我减少过很多次“月初布线、月底推倒重来”的返工。
最后再分享一个实用技巧:如果你把NURBS基本体当参考,不想它被误选误改,可以选中后按Ctrl+H隐藏,或者放进独立显示层里锁定。这样既能看到它,又不会在框选的时候把它一起拖走。等对比完曲率,再一键隐藏或删除,整个流程干净利落。Maya这套NURBS基本体操作说难不难,但把它真正嵌入到自己的建模习惯里,确实需要一点时间适应——不过一旦上手,你会回头感谢那个第一次按下数字键3的自己。