很多搞三维的同行,尤其新手阶段,可能都有过类似经历:打开Maya第一件事就是摸多边形,立方体、球体一顿拉,然后陷入细节拓扑的汪洋大海。直到某天遇到一个“必须绝对圆滑”的轮廓,或者被工业设计、车身造型那种镜面质感的产品模型逼到墙角,才猛然发现角落里那个一直没被正眼瞧过的NURBS。这篇咸鱼Maya笔记,就想把创建NURBS基本体这件事聊透,除了“怎么点出来”,更重要的是搞清楚“为什么这么用”“参数到底在控制什么”,以及实际建模时怎么取舍。
这个主题适合刚接触Maya不久、想补全建模体系认知的新手,也适合一直用多边形、想换个思路或应付特定项目需求的建模朋友。我们会从NURBS的原理讲起,把球体、圆柱、圆环、圆盘这些基本体挨个讲明白,再手把手走一遍完整创建流程,最后把那些防不胜防的小坑都过一遍。放心,不堆砌菜单命令,只说干活的思路和实测下来的经验。
1. 为什么Maya里要专门留一套NURBS基本体
1.1 从“数学定义曲线”说起
NURBS全称是Non-Uniform Rational B-Spline,翻译过来就是非均匀有理B样条。听着玄乎,但拆开就很好懂。它的核心逻辑不是像多边形那样用一堆平面小三角去拼表面,而是用数学曲线去严格定义曲面。就好比画圆,多边形是用很多条短直线段围出一个近似圆,段数越多越像,但永远有棱;NURBS则直接用圆的方程把真正的圆画出来,无论你放大多少倍,它就是几何意义上的圆,没有任何折痕。
这意味着三件事。第一,表面极度光滑,非常适合需要高光反射出漂亮长条纹路的产品渲染;第二,参数化记忆,整个曲面背后有一套统一的数学参数,改一个控制点,相邻区域会平滑过渡,不会像多边形那样动一下就扯出棱角;第三,拓扑极简,一个简单的NURBS曲面片就能代表大片平滑造型,数据量往往比高精度多边形小得多。
也因为这样,Maya从诞生初就一直保留NURBS基本体这个建模入口,它跟多边形、细分曲面并称Maya三大建模体系。虽然现在游戏、影视资产绝大多数走多边形流程,但工业设计、逆向工程、生物有机形态探索等场景下,NURBS依然是碾压级的存在。
1.2 NURBS基本体是什么概念
NURBS基本体就是Maya预先设置好的一批参数化曲面形状,包括球体、立方体、圆柱体、圆锥体、平面、圆环、圆盘、圆形、方形。你创建它们的时候,本质上不是生成了“死”模型,而是生成了一段带着构建历史的程序化描述。
这跟多边形的“拉出来一坨点线面”有本质区别。你在Maya里创建了一个NURBS球体,通道盒里会出现半径、起始扫描、结束扫描、度数、段数这些可调参数。随便改一个数字,球体就重新计算一次。这种“参数还能回头改”的灵活性,是做造型迭代时的救命稻草——哪怕已经画了一堆曲线在上面操作,只要底层基本体参数还没烘焙,你依然有机会调整。
不过在实操里,NURBS基本体通常不是拿来直接“当成品”的,更多是作为造型起点或者辅助参考:把圆环拿来转成曲线做管道路径、用球体找视觉比例、拿平面当背景参考板、用圆盘做瓶身旋转体的截面雏形。理解这一点,你就不会纠结“基本体太简单了根本没法用”,而是会琢磨怎么把基本体作为精加工的底座。
2. NURBS基本体全盘点:每个形状的脾气都不一样
2.1 球体、立方体、圆柱体、圆锥体——基础四件套
Maya里NURBS基本体的创建入口在主菜单创建 > NURBS基本体下,工具架上也有一排带曲线边缘缩略图的快捷按钮。点开之后,每个基本体都有自己的参数窗口,默认状态下直接鼠标拉拽就能生成。
球体是最常用也最容易产生误解的一个。它的参数里有半径、起始扫描、结束扫描、度数、分段数。起始扫描和结束扫描控制球体从哪个经度开始、到哪个经度结束,调整这个就能直接得到“四分之三球”“半球”,不需要创建完再手动切。轴参数控制球体开口朝哪个方向。很多人被NURBS球体的经纬线结构困扰,其实没有投影贴图需求的话,经纬线结构反而方便后续做局部环形编辑。
立方体在NURBS里不是一个整块,而是由六张独立NURBS平面拼接而成的。它跟多边形立方体最大的不同在于棱边——NURBS天生是光滑的,所以你在默认参数下看到一个棱角分明的方块,背后其实是有6个“带圆角倾向”的曲面搭出来的“假直角”。真要拿它做硬边箱体,需要把边缘附近的CV点收紧,或者干脆用多边形。但它作为“六个可分离平面”的特性很有价值,比如要做一套简易纸盒结构,直接把六个面拆出来当独立片用。
圆柱体默认由三部分构成:侧面、上盖圆盘、下盖圆盘。侧面展开本质是一张矩形平面绕轴卷曲而成的,上下盖则是独立NURBS圆盘。高度、半径、覆盖、段数这些参数让圆柱体非常适合做基础瓶罐。要注意的是,圆柱的上下盖边缘跟侧壁之间不是无缝贴合,渲染抗锯齿时偶尔会出现细缝,处理办法后面在问题章节细说。
圆锥体跟圆柱体类似,侧面是一个从底面收拢到一个端点的锥形面,底部自带一个圆盘盖。圆锥在基础造型中出现频率不如圆柱,但在做车灯反射碗、喇叭口、漏斗这类零件时特别顺手。它的尖端是收敛点,高光处会有星芒状高光,渲染时候自己掂量能不能接受。
2.2 平面、圆环、圆盘、圆形、方形——被低估的辅助主力
平面就是一张平铺的NURBS面片,参数上有宽度、长度、U向段数、V向段数。它太朴素了,以至于很多人创建完就忘在场景里。但做项目时,平面的用途非常广:背景参考图载体、NURBS曲面剪切的基础、布料仿真或流体容器的入口、地面阴影承接面。而且平面可以随时调段数,不用重建,这在搭建场景雏形时比拼命拼多边形要快。
圆环很多人第一时间想到“甜甜圈”,确实外观一样,但NURBS圆环的底层结构可没那么简单。它由截面圆环绕主圆扫掠构成,参数里有半径、截面半径、起始扫描、结束扫描、截面扫描、度数、分段数。圆环最常用的是生成“管状路径”——把圆环当作中心线,配合挤出命令做管道;或者作为轮胎边缘、环形把手的基础。千万别小看“起始扫描”和“结束扫描”,做个开口圆环就是在参数里直接加减这些数值,比创建完再去切面干净利落得多。
圆盘从字面上看是平的盘子,对应圆柱盖子的结构,是一个带中心孔或者不带孔的实心圆面。圆盘有一个重要参数比例,修改它可以让圆盘变成椭圆盘。这个形状在做旋转体截面、车轮轮廓、基础盖子时十分方便。因为NURBS圆盘本质是一张由圆环和径向线组成的曲面,初始就有中心点,后续把它转成多边形、继续挤中心点,能做出很多汽车轮毂那种放射状结构。
圆形和方形严格来说不是实体表面,而是曲线。圆形是一条闭合的NURBS圆环曲线,方形则是四段直线相接的闭合曲线。它们的用途通常不是直接渲染,而是作为放样、挤出、旋转、修剪的骨架线。如果你想画一条平滑的圆环曲线来做瓶口轮廓,直接创建圆形后改个半径,比自己拿EP曲线慢慢描要准确得多。
2.3 创建基本体时那些躲不开的参数面板
每个NURBS基本体创建前,点开右侧的参数设置,都能看到一套几乎固定的字段,我挑最常搞混的说:
度数:这是NURBS特有概念,分为线性(1次)和三次(3次)。线性表示曲面上每个跨度之间的过渡是直来直去,会产生硬折角;三次则允许曲线弯曲,是默认选项,几乎任何圆润造型都用它。如果把三次改成线性,球体立刻变成一个棱形多面体,但它的控制结构还在,再改回来又能恢复圆滑。这个参数建议保持默认。
段数(跨度):可以理解为控制曲线平滑程度的“分段精度”,段数越多,曲面可供塑形的控制点就越多,越容易表达复杂形态;但段数太高也会让文件变得臃肿、选中CV点操作时变得繁杂。新手常犯的错误是一开始就把球体段数拉到几百,结果后续改型时点选密密麻麻的控制点,直接崩溃。基础建模期保持默认值即可,不够用再加。
U向和V向:NURBS曲面的两个参数方向,可以理解成织布时的经线和纬线。你在调参数的时候会看到“U向段数”“V向段数”,这两个值共同编制了一个网状的曲面。日常操作中你可能不太感知到U/V,但一旦你需要沿着某个方向加控制点或者裁切曲面,搞清楚U/V方向就至关重要了。
3. 实操过程:从创建第一个NURBS球体到完整参数控制
3.1 第一步:设定工具栏与构建历史
启动Maya后,不用急着建模。先确认界面左侧工具架顶部是否切到了“曲面”标签页,这一栏放着创建基本体、旋转、放样、平面等NURBS专用工具的快捷按钮。如果你的工具架不小心被隐藏了,可以到窗口 > 设置/首选项 > 首选项 > UI元素里,把“工具架”勾选回来。
接着检查创建 > NURBS基本体 > 球体 > 框选方形小图标打开选项窗口,确认底部的“构建历史”处于勾选状态。构建历史非常关键,它保证了我们创建出来的球体不是“死物”,而是保留参数、可以随时回到通道盒调整的活体。如果关掉了这个选项,创建出来的球体就只剩层面结构,后续想改半径、改段数就只能依赖CV编辑,那就多少有点可惜了。
实操小经验:大部分时候直接在工具架上点一下“球体”按钮,然后在任意视图拖拽就能生成。默认创建的球体半径是1,如果想统一尺寸,直接在通道盒里输入数值更精确。做视觉比例、测试光照的时候,我不会去手动拖拽,而是敲数值,因为拖拽确定的大小很难跟同事的模型对上号。
3.2 第二步:拖拽创建与精确数值创建混合使用
在Maya的NURBS基本体创建上,实际上有两种节奏:
一是交互式拖拽。按住“球体”工具架按钮不放,在视图里拉出大小、松手完成。这种方式适合快速草稿、搭场景看比例。但要注意,交互式创建时,你拖拽的方向和远近会影响球体的朝向和尺寸,在透视视图里更随意,在正交视图里则相对可控。
二是选项窗口精确创建。在“创建 > NURBS基本体 > 球体”右侧点击小方块,打开选项窗口,输入精确参数点“创建”。这种方式适合有明确标定需求的场景,比如“半径12cm的半球,开口朝X轴正向”。先设定参数再创建,模型直接落到场景中心,省得后面手动挪。
我自己实际干活时喜欢两者结合:先用交互式拖一个大概,再在通道盒里把精确数值输入进去。这样既保留了构建历史的灵活性,又不需要反复开关选项窗口。这里有个额外技巧:在拖拽过程中,你按着Shift键可以拉出正圆或等比尺寸,这点在平面、圆柱等基本体上尤其明显。
3.3 第三步:通道盒里二次调整核心参数
创建完成后,在右侧通道盒里能看到列表,每一栏对应一个可编辑参数。多数情况下,我们在这里输入的数值会实时反馈到视口,这就是NURBS基本体最直观的“参数化”体验。
我拿一个实际场景举例:要为某相机模型做一个镜头前组的筒身,我创建了一个NURBS圆柱体。默认半径是1,但我要半径5、高度20、侧面段数16、上下盖都要封闭。直接在通道盒里改数字后,模型整体更新,但高度方向的尺度可能需要配合旋转或平移。
再比如做车灯反射碗,我会创建球体后把“结束扫描”改成270,然后把剩余部分按需求切割;配合“度数”保持三次,“分段数”适当加到24以上,才能有足够控制点拉出复杂的曲面特征。这里要提醒一下:通道盒里对段数的修改是“重新参数化”的过程,段的增减会影响后续CV点选择方式,所以增加段数前先想清楚后面要做什么造型,避免改来改去把构建历史搞乱。
还有一点:通道盒里的参数虽然灵活,但不是所有参数都适合后期模改。比如球体“半径”改成极大值后,如果你已经做了一堆基于旧半径的曲线修剪,那么改动半径可能导致那些修剪失效。这种情况下,不要把底层的“半径”当常规编辑手段,而是尽早把基本体转成可编辑曲面(编辑NURBS > 重建、或直接转成多边形后编辑)。
3.4 第四步:结合移动旋转缩放做基础摆位
创建基本体只是第一步,绝大多数情况下,基本体创建出来之后,你还要做移动、旋转、缩放。此处有个NURBS与多边形的不同细节:缩放NURBS对象时,如果缩放不均匀,会影响表面的参数密度。
举个例子,场景里建了一个NURBS球体,我直接把它拉成椭球形。从视觉上看着没问题,但如果之后我想在球面上画曲线进行裁剪,就会发现曲线的控制结构跟原来的球面参数已经“错位”了。原因是NURBS曲面的参数区间不会因为缩放而变化,但控制点位置变了,原有曲率分布被扭曲。因此,遇到这种“要拉成长椭球”的需求,我通常会选择用旋转体工具去旋转一条椭圆轮廓曲线,而不是拿球体硬缩放。
当然如果你只是快速摆个形,无所谓。渲染级精度要求下,再考虑这个区别。一般而言,尽量在基础参数层面定义形状,减少后期非均匀缩放的依赖,这个经验算是NURBS建模里比较重要的原则之一。
3.5 实操现场:30秒搭一个简易瓶身雏形
把前面内容落到一个极简实例上。我打算搭一个洗护瓶的基础轮廓,用的是圆柱体加圆锥体的组合:
- 工具架点圆柱体,在透视视图拉出一个默认圆柱。
- 通道盒里设半径3、高度10、覆盖360、分段数24。
- 工具架点圆锥体,设半径3、高度4、分段数24。
- 把圆锥体移动到圆柱顶部,Y方向偏移10个单位,对齐中心轴。
- 选中圆柱和圆锥,主菜单网格 > 布尔或者后续用“编辑NURBS > 圆角”处理衔接,这一步先不细讲。
整个操作耗时很短,但你能看到场景里已经有一个明确的“瓶身+瓶肩”结构,后续只要在这一组合上继续做曲线、挤压、加点,就能演化成完整产品造型。这套流程比从多边形拉一个瓶子再不断加线减线来得干净——当然,不同建模思路各有优劣,这里只是展示NURBS基本体做“起点桩”的价值。
4. 踩过的坑和排查心得:NURBS基本体最容易出问题的几个地方
4.1 参数修改后曲面方向反了,或者部分表面消失
新手在通道盒里调整“起始扫描/结束扫描”的时候,经常遇到一个诡异现象:球体看着好像缺了一整块,找遍菜单都不知道怎么恢复。实际上这多半是扫描角度设置交叉了。比如“结束扫描”设成了180,“起始扫描”却还是0,这正常得到一个半球;但要是你把“起始扫描”改为300、结束扫描保持60,那剩下的曲面就是一个“经度缺口球”。
对策很简单:在通道盒里保证“起始扫描”数值小于“结束扫描”,差值就是要保留的角度。Maya允许负值反转方向,但新手阶段不建议乱填,容易把自己绕晕。真绕晕了,最省心的方式就是删掉重建,反正是参数化基本体,重建成本几乎为零。
4.2 NURBS曲面的法线方向到底朝哪边
NURBS表面不像多边形那样可以油碟式一键翻转法线,它的法线由曲面参数方向决定。刚学NURBS的伙伴常会遇到“渲染出来一面黑一面白”“贴图贴反了”的窘境。
排查思路:进入显示 > 多边形 > 面法线其实对NURBS用处有限;更可靠的是选中曲面,在属性编辑器里找到“法线”选项,或者执行编辑NURBS > 反转曲面方向。操作之后曲面U/V方向会调转,法线也随之反转,从而解决渲染黑面。有一个经验法则:一般情况下,法线方向跟曲面U向的“卷曲方向”相关,创建基本体时如果你从背面视角拖拽创建,方向就可能在背面。
4.3 圆柱、圆环接缝处的高光撕裂或渲染黑缝
NURBS曲面的接缝(Seam)是多边形建模时完全不会遇到的概念。圆柱体的接缝可能落在侧面某条经线上,圆环也有一个对缝位置。渲染时如果发现平滑的高光在某个位置突然断裂,八成就是把光照贴图或高光反射跟接缝撞上了。
处理方式:一是旋转基本体的轴参数或使用“旋转(旋转分量参数)”调整接缝角度,让接缝转到不显眼的位置;二是把在渲染中隐藏接缝相关的细分选项调高,或者对曲面做一次“重建曲面”,让接缝处的CV点排布更均匀。实际做产品渲染时,我习惯在最初创建阶段就直接指定“轴”,让接缝落在背对相机的一侧,省去后期修补。
4.4 段数太少导致曲面控制点“卡卡”的
如果把一个NURBS球体的分段数降到很低(比如4),然后拖拽CV点,你会明显感觉曲面像撕裂一样不自然。因为NURBS的样条特性要求每个跨度之间有足够的几何支撑,段数太少,控制点一动,曲率变化就会非常生硬。
不要为了省数据量把段数压到极限。典型经验是:球体半径1到10之间,分段数12到24是比较实用的区间;平面这类结构性曲面,根据用途调到8到16就够。段数值增加不要太猛,改型之后再重建一次曲面,把多余的段数清掉,保证文件轻巧。
4.5 构建历史丢失,基本体变成“裸曲面”
打开旧文件,发现自己创建的NURBS球体通道盒里没有半径、段数参数了——这种情况一般是你在中间某一步执行了删除构建历史或者冻结变换,参数信息被抹掉了。遇到这种情况不用慌,曲面本体还是完整的,只是失去了参数调节入口。
从此以后,继续编辑就靠直接操纵CV点、控制点,或者利用“重建曲面”功能重新参数化。这个教训也很好用:如果你打算长期保留一个NURBS基本体做参数调优,就别手贱删构建历史;如果你确定造型已经定型,再删历史也不迟。
4.6 常见问题速查表
| 症状 | 原因 | 处理方法 |
|---|---|---|
| 球体缺了一大块,找不到补全入口 | 起始扫描/结束扫描值交叉 | 检查起始扫描小于结束扫描 |
| 渲染表面一面黑一面白 | 曲面法线方向反了 | 执行“反转曲面方向”或调整UV方向 |
| 高光在某个位置撕裂 | 曲面接缝朝向太显眼 | 旋转接缝到背侧,或重建曲面 |
| 拖CV点曲面像要碎裂 | 段数太少,控制点跨度过大 | 提高分段数后再编辑曲面 |
| 通道盒里没有参数可调 | 构建历史被删除 | 直接CV编辑,或用重建曲面重新参数化 |
| 圆柱盖子和侧壁有缝隙 | NURBS分片曲面间贴合不严 | 把相邻表面合并(如果可行),或渲染时用细分提高表面逼近精度 |
| 把球体缩放后曲线裁剪错位 | 非均匀缩放影响参数密度分布 | 用旋转体工具生成目标形状,避免依赖非均匀缩放 |
4.7 对NURBS基本体的一点点掏心窝看法
最后说点实用心得。NURBS基本体在Maya里的地位,有点像工具箱里的那套精密卡尺——不是每个项目都需要,但需要的项目常常离不开。如果你只是想做游戏资产跑跑引擎,那么多边形依然是主力,NURBS基本体更多是辅助参考;但如果你做产品设计、硬表面渲染、车模模型,或者需要跟CAD软件交换数据,那NURBS基本体这套逻辑你得尽早熟悉。
我个人摸索下来的体会是:不用把NURBS神化,也用不着把它边缘化。最快的上手方式,就是每天拿几分钟把每种基本体建一遍,把通道盒里的参数挨个拖一遍,看它在视口里到底动了什么。这种看起来很“咸鱼”的玩法,其实比背菜单命令高效得多——因为你记的不是选项名,而是“哪个旋钮控制什么形状变化”。等你想做个瓶子的时候,脑子里自然就会冒出“圆柱+圆环做瓶口”“球体改扫描做瓶底”这种搭配方案,而不是翻半天菜单找命令。
NURBS基本体这东西,入门门槛并不高,难的是培养“曲面思维”。多边形建模习惯用点和线堆细节,NURBS则更强调用最少的参数控制最大范围的平滑形态。每次调整参数时,多盯着视口里的曲面变化,慢慢你就对“数学驱动的曲面”有了手感。希望这篇笔记能帮你在NURBS的入口处少走几步弯路,剩下的,就靠你亲手把那些球体圆柱拉出自己想要的形状了。