1. 次世代PBR建模到底在做什么
第一次接触“次世代”这个词,很多人会以为只是模型面数更高、贴图更精细。实际上,次世代PBR流程真正改变的,是模型精度与材质表现力的分工方式。过去做一把枪、一个箱子,所有细节都得实打实地刻在模型上,面数一高,引擎就吃不消。现在我们把细节交给高模,把运行负担交给低模,再用烘焙把高模的细节“印”到低模上,最后通过PBR材质系统还原真实的光影反应。
这套流程的核心工具就是3ds Max、Maya、ZBrush三件套。3ds Max和Maya负责中低模搭建、拓扑和UV拆分,ZBrush负责高模雕刻。三者配合,才能完成从白模到最终引擎资产的完整链路。我见过不少新手一上来就扎进ZBrush猛雕,结果拓扑一塌糊涂,UV拆得乱七八糟,烘焙出来的法线全是接缝和黑边,最后返工的时间比重新做还长。
这篇文章适合谁看?如果你是刚入行的3D美术、想转次世代的传统建模师,或者单纯想搞清楚“低模搭建、高模布线、拓扑低模、UV拆分、法线烘焙、材质贴图”这六个环节到底怎么串起来,那接下来的内容应该能帮你少走至少半年的弯路。我会把每个环节的操作逻辑、参数选择、常见坑点都拆开讲,尽量让你看完就能上手。
2. 低模搭建:别急着雕,先把骨架搭稳
2.1 低模搭建的核心逻辑
低模搭建是整个次世代流程的地基。很多人觉得低模随便拉个形状就行,反正后面有高模顶着。这个想法很危险。低模的布线直接决定了后续拓扑的难易程度、UV展开的效率,以及烘焙时法线能不能正确投射。低模阶段没做好,后面每一步都在还债。
低模搭建的目标不是“像”,而是“准”。准在比例、准在结构转折、准在关键轮廓。比如做一把手枪,握把的弧度、套筒的厚度、扳机护圈的开口位置,这些在低模阶段就要定死。至于表面的螺丝、防滑纹、磨损痕迹,那是高模和贴图的事。
在3ds Max里,我习惯用Box Modeling的方式起型。从一个立方体开始,通过挤出、倒角、焊接顶点逐步逼近目标形态。Maya的话,多边形建模工具集更顺手一些,尤其是多切割和桥接命令,处理硬表面转折很高效。两个软件没有绝对优劣,看个人习惯和项目管线要求。
2.2 布线密度与结构预留
低模的面数控制有个经验值:硬表面道具通常在3000到8000三角面之间,角色类根据复杂程度在8000到20000三角面浮动。这不是死标准,但可以作为参考基准。面数太低,轮廓会显得很“方”;面数太高,后续拓扑和UV都会变麻烦。
布线的关键在于跟着结构走。什么意思?如果模型上有一条明显的转折线,比如机甲手臂的装甲边缘,那这条线附近必须有一圈循环边来支撑。否则平滑之后边缘会塌陷,看起来像被磨圆了。我通常会在转折处加双线,一条定形状,一条控平滑,两条线之间的距离根据转折的锐利程度调整,越锐利距离越近。
还有一个容易被忽略的点:为后续拓扑预留结构。低模阶段就要想好哪些地方需要开孔、哪些地方需要分离部件。比如做一个人物头部,眼睛、嘴巴、耳朵这些区域在低模时就要有足够的顶点密度,否则拓扑时想加线都加不进去。
注意:低模阶段不要急着合并所有部件。保持部件分离,后续拓扑和UV会灵活很多。等所有流程走完,再根据引擎需求决定是否合并。
2.3 对称与修改器的使用
做对称模型时,Symmetry修改器是标配。只做一半,另一半自动镜像。但要注意,对称修改器是在修改器堆栈里生效的,如果你在对称轴附近手动移动了顶点,可能会导致镜像出错。我的习惯是:先用对称做整体,等拓扑阶段再塌陷成可编辑多边形,手动处理接缝处的顶点焊接。
3ds Max里的Turbo Smooth和Maya里的Smooth Preview可以用来预览平滑后的效果,但不要过早使用。低模阶段看的是结构,不是平滑度。过早平滑会让你误以为模型已经到位,实际上布线问题被平滑掩盖了。
3. 高模布线:ZBrush雕刻与布线逻辑
3.1 高模到底在雕什么
高模的任务只有一个:把低模无法表现的细节全部做出来。这些细节包括表面纹理、磨损、凹陷、凸起、接缝、螺丝孔、布料褶皱、皮肤毛孔等等。高模的面数可以到几百万甚至上千万,因为它不需要进引擎,只在烘焙时用一次。
ZBrush是高模雕刻的主力工具。它的DynaMesh功能可以快速重构网格,让你在雕刻过程中不用担心布线问题。但DynaMesh也不是万能的,它生成的网格密度均匀,对于需要精细控制的区域,还是得用SubTool分层管理。
我通常会把高模拆成多个SubTool:主体、细节件、磨损层、接缝层。每个SubTool单独雕刻,最后合并。这样做的好处是,如果某个细节雕坏了,可以单独删掉重做,不用整个模型推倒重来。
3.2 高模布线的常见误区
很多人以为高模不需要布线,反正面数高,随便雕。这个想法只对了一半。高模确实不需要像低模那样严格布线,但结构转折处的布线密度仍然会影响雕刻效果。比如雕一个硬表面装甲,如果转折处的网格太稀疏,雕刻笔刷会拉出奇怪的拉伸,边缘会变得模糊。
ZBrush里的Smooth笔刷可以缓解这个问题,但治标不治本。更好的做法是在进入ZBrush之前,在3ds Max或Maya里把低模的转折处布线做密一些,再导入ZBrush细分。这样雕刻时笔刷的受力更均匀,边缘更锐利。
另一个误区是过度雕刻。高模的细节要服务于最终贴图,不是越多越好。如果某个细节在最终贴图上只有几个像素大小,那在高模上雕再细也没意义,反而增加烘焙时间。我一般会根据最终贴图的分辨率来反推高模细节的精度。比如贴图是2048乘2048,那高模上小于2毫米的细节基本可以忽略。
3.3 硬表面与有机体的雕刻差异
硬表面和有机体的高模雕刻思路完全不同。硬表面讲究边缘锐利、转折清晰,我通常会用ClipCurve和TrimDynamic笔刷来切出硬边,再用hPolish笔刷打磨表面。有机体讲究过渡柔和、肌肉走向自然,用ClayBuildup和DamStandard笔刷配合,先堆大形,再压结构线。
ZBrush的LazyMouse功能在雕有机体时特别好用,它能让笔触更平滑,适合处理长线条的肌肉走向。但雕硬表面时我一般会关掉LazyMouse,因为硬表面需要更直接的控制。
实操心得:高模雕刻时,经常按Shift加F打开网格线显示,可以清楚看到当前网格的密度和走向。如果发现某个区域网格拉伸严重,及时用DynaMesh重构,不要硬雕。
4. 拓扑低模:把高模的细节“翻译”成低模
4.1 拓扑的本质是什么
拓扑低模是整个流程里最考验耐心的环节。它的本质是用最少的面数,最大程度地还原高模的轮廓和结构。注意,是轮廓和结构,不是细节。细节由法线贴图负责,拓扑只负责形状。
拓扑的成果直接决定了UV展开的难易、烘焙的质量、以及最终模型在引擎里的表现。拓扑做得好,UV拆得顺,烘焙一次过;拓扑做得差,UV全是拉伸,烘焙全是接缝,改都没法改。
我习惯在3ds Max里用Freeform建模配合Snap到高模表面来做拓扑。Maya的话,Quad Draw工具是拓扑利器,直接在模型表面画四边形,效率很高。ZBrush的ZRemesher可以自动拓扑,但自动结果通常需要大量手动调整,适合作为起点,不适合直接交付。
4.2 拓扑布线的黄金法则
拓扑布线有几条铁律,违反了任何一条都会在后续环节出问题。
第一条:尽量用四边形。四边形在细分和平滑时表现最稳定,三角形和N边形在转折处容易产生奇怪的阴影。如果实在避不开三角形,把它藏在不容易看到的区域,比如模型内部或背面。
第二条:循环边要跟着结构走。比如做一个人物手臂,循环边应该沿着手臂的圆柱方向环绕,而不是横七竖八地乱走。这样UV展开时可以直接沿循环边切开,展平后几乎没有拉伸。
第三条:关节处预留足够的环线。如果模型需要做动画,关节弯曲的地方至少要有三圈环线来支撑形变。少了会穿模,多了会浪费面数。
第四条:密度均匀但不死板。平坦区域可以稀疏一些,转折和细节区域要密一些。但密度变化要平滑过渡,不能突然从很疏跳到很密,否则平滑后会出现明显的凹凸。
4.3 拓扑实操中的取舍
拓扑最痛苦的地方在于取舍。高模上雕了一百个细节,低模只能保留最重要的二十个。哪些留,哪些舍?我的判断标准是:影响轮廓的留,影响光影的留,纯纹理的舍。
比如一个机械零件的倒角,如果倒角在轮廓上很明显,那低模必须做出这个倒角,至少用一圈线来表现。如果倒角只是表面的一点点磨损,那低模可以不做,交给法线贴图。再比如布料上的褶皱,大的起伏要拓扑出来,小的纹理交给贴图。
还有一个技巧:用高模的Decimation Master减面后作为拓扑参考。ZBrush的Decimation Master可以把高模减到几万面,保留大部分轮廓。把这个减面后的模型导入3ds Max或Maya,作为拓扑时的参考底模,比直接对着几百万面的高模拓扑要流畅得多。
注意:拓扑完成后,一定要检查法线方向。所有面的法线必须朝外,否则烘焙时会出各种奇怪的问题。3ds Max里用Normal修改器统一法线,Maya里用Conform命令。
5. UV拆分:让贴图不拉伸不接缝
5.1 UV拆分的核心目标
UV拆分的唯一目标是:让贴图在模型表面尽可能均匀地分布,同时接缝尽可能隐蔽。听起来简单,做起来全是细节。
UV拉伸是新手最常遇到的问题。拉伸的本质是UV空间里的面积和模型表面的面积比例不一致。比如一个圆柱体,如果UV直接展平成一个矩形,圆柱的侧面在UV里会被拉长,贴图贴上去就是拉伸的。正确的做法是沿圆柱的一条边切开,展平后调整比例,让UV的宽高比和圆柱的周长高度比一致。
接缝的位置也很讲究。接缝应该藏在不容易被看到的地方,比如模型的背面、底面、或者结构转折的凹陷处。人物角色的接缝通常藏在头发下面、衣服边缘、或者手臂内侧。硬表面的接缝可以藏在倒角或分件处。
5.2 3ds Max与Maya的UV工具对比
3ds Max的Unwrap UVW修改器功能很全,尤其是Peel和Quick Peel命令,可以快速把选中的面展平。Relax工具可以缓解拉伸,但用多了会让UV变形,要适度。
Maya的UV Editor更直观一些,Unfold和Layout命令配合使用,效率很高。Maya的UV Toolkit里有个Texel Density工具,可以统一所有UV块的像素密度,这个功能在3ds Max里需要手动计算。
我个人的习惯是:硬表面在3ds Max里拆,有机体在Maya里拆。硬表面的UV块比较规整,3ds Max的Flatten Mapping和Pack UVs很好用。有机体的UV需要更多手动调整,Maya的UV Editor操作更顺手。
5.3 UV拆分的实操步骤
以一个人物头部为例,我的UV拆分流程是这样的:
- 标记接缝。在头部模型上选择接缝线,通常沿发际线、耳后、下巴底部走。接缝要尽量短,但也要保证展平后不拉伸。
- 切开接缝。用Cut命令沿标记的线切开,把头部展开成几个UV块。
- 展平UV块。用Unfold或Relax把每个UV块展平,观察棋盘格贴图,确保没有明显拉伸。
- 排列UV块。把所有UV块放进0到1的UV空间里,尽量填满,但块与块之间要留出2到4个像素的间距,防止烘焙时接缝处出现溢出。
- 统一像素密度。用Texel Density工具把所有UV块的像素密度统一到同一个值,比如每厘米10.24像素。这样贴图在不同部件上的清晰度一致。
实操心得:UV拆分完成后,贴一张棋盘格贴图在模型上,旋转视角检查。如果棋盘格在某个区域明显被拉长或压扁,说明那个区域的UV有拉伸,需要回去调整。这个检查步骤花不了几分钟,但能省下大量返工时间。
6. 法线烘焙:把高模细节印到低模上
6.1 烘焙的基本原理
法线烘焙的本质是把高模表面的法线方向信息,通过射线投射的方式,记录到低模的UV贴图上。最终生成的法线贴图是一张RGB图像,每个像素的RGB值对应一个法线方向。引擎渲染时,用这张贴图去扰动低模表面的法线,让低模看起来有高模的细节。
烘焙的质量取决于三个因素:高低模的匹配度、UV的合理性、烘焙参数的设置。高低模匹配度不够,射线投射不到高模表面,烘焙出来就是黑的或者有空洞。UV不合理,接缝处会出现明显的硬边。参数设置不对,要么细节丢失,要么出现噪点。
6.2 烘焙工具的选择
常用的烘焙工具有3ds Max的Render To Texture、Maya的Transfer Maps、Substance Painter的烘焙功能、以及xNormal。每个工具各有优劣。
3ds Max的Render To Texture集成度高,不用导出模型,直接在软件里完成。但参数比较多,新手容易设错。Maya的Transfer Maps操作简单,但烘焙速度偏慢。Substance Painter的烘焙功能是近几年最常用的,速度快,参数直观,而且烘焙完可以直接进入贴图绘制环节。xNormal是独立软件,烘焙质量很高,但需要导出高低模,流程稍微麻烦一点。
我现在的习惯是:在Substance Painter里烘焙。因为后续贴图也在SP里做,烘焙完直接就能用,不用来回导。如果项目要求高,会用xNormal烘一遍作为对比,取质量更好的那版。
6.3 烘焙参数详解
以Substance Painter的烘焙为例,几个关键参数需要特别注意:
- Output Size:输出贴图的分辨率。通常用2048乘2048,角色类可以用4096乘4096。分辨率越高,细节越清晰,但文件也越大。
- Anti-aliasing:抗锯齿。建议开4x或8x,可以减少边缘的噪点。
- Ray Distance:射线距离。这个参数决定了射线从低模表面向外投射多远去碰高模。设小了,高模细节碰不到;设大了,会碰到不该碰的地方。通常设为高低模之间最大距离的1.5倍。
- Match:匹配方式。有By Mesh Name和Always两种。By Mesh Name要求高低模的命名一致,适合分件烘焙。Always则忽略命名,全部一起烘。
- Skew:矫正。如果高低模的形状差异较大,可以开启Skew来矫正射线方向,减少烘焙错误。
注意:烘焙前一定要检查高低模的坐标是否对齐。如果高低模的位置有偏移,射线投射会完全错位,烘焙出来全是乱的。3ds Max里用Align工具对齐,Maya里用Snap Together。
6.4 烘焙常见问题与解决
烘焙翻车是家常便饭,我整理了几个最常见的问题和解决方法:
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 法线贴图全黑 | 高低模位置不对齐 | 检查坐标,重新对齐 |
| 接缝处有硬边 | UV接缝处射线投射失败 | 调整Ray Distance,或手动在接缝处加线 |
| 表面有噪点 | 抗锯齿不够或高模面数过高 | 提高Anti-aliasing,或对高模减面 |
| 细节模糊 | 输出分辨率太低 | 提高Output Size到4096 |
| 出现空洞 | 低模有反面或法线方向错误 | 检查低模法线,统一朝外 |
| 烘焙时间过长 | 高模面数过高或射线距离过大 | 用Decimation Master减面,缩小Ray Distance |
7. 材质贴图:PBR的最终呈现
7.1 PBR材质的基本构成
PBR是Physically Based Rendering的缩写,中文叫基于物理的渲染。它的核心思想是:用物理参数来描述材质,而不是用经验参数。传统的材质系统里,你调一个高光强度,调一个漫反射颜色,全靠感觉。PBR里,你调的是金属度、粗糙度、基础色,这些参数有明确的物理意义。
一套完整的PBR贴图通常包含以下几张:
- Base Color:基础色,也就是材质的固有色。注意,这里不应该包含光影信息,光影由引擎实时计算。
- Metallic:金属度。非金属是0,纯金属是1。大多数材质在0和1之间,比如生锈的铁。
- Roughness:粗糙度。0表示镜面反射,1表示完全漫反射。这个参数决定了材质表面的光泽感。
- Normal:法线贴图,前面烘焙好的。
- Height:高度图,可选。用于视差贴图或置换,增加表面的立体感。
- Ambient Occlusion:环境光遮蔽,可选。用于增强凹陷处的阴影,让模型更有体积感。
7.2 Substance Painter的贴图绘制流程
Substance Painter是目前最主流的PBR贴图绘制工具。它的工作流程是基于图层的,和Photoshop很像,但每个图层可以包含材质、遮罩、滤镜等元素。
我的贴图绘制流程通常是这样的:
- 导入烘焙好的贴图。把法线、AO、曲率等贴图导入SP,作为后续绘制的基底。
- 铺基础材质。用Fill Layer给模型铺一个基础材质,比如金属、塑料、皮革。调整Metallic和Roughness参数。
- 添加细节层。用Paint Layer在基础材质上绘制磨损、污渍、划痕。SP的Smart Material和Smart Mask可以快速生成这些细节,但要注意调整参数,避免千篇一律。
- 调整粗糙度变化。粗糙度的变化是PBR材质真实感的关键。同一个材质,不同区域的粗糙度应该有差异。比如金属边缘磨损后粗糙度会变高,凹陷处积灰后粗糙度也会变高。
- 导出贴图。SP支持导出各种引擎的预设格式,比如Unity、Unreal、Arnold。选择对应的预设,一键导出。
7.3 材质细节的实操技巧
PBR材质最怕的就是太干净。真实的物体表面永远有磨损、污渍、灰尘、指纹。这些细节不需要多,但必须有,否则模型看起来像塑料玩具。
我常用的几个技巧:
- 边缘磨损:用Curvature贴图作为遮罩,在模型的凸起边缘叠加一层金属色或浅色,模拟磨损露出的底层材质。
- 凹陷积灰:用AO贴图作为遮罩,在凹陷处叠加一层深色,模拟灰尘和污垢的堆积。
- 粗糙度变化:用Noise贴图扰动粗糙度,让表面光泽有细微的不均匀。
- 指纹和油渍:用SP自带的Alpha笔刷,在经常被触摸的区域轻轻刷一层高粗糙度的油渍。
实操心得:贴图绘制时,经常按Ctrl加Shift加C切换通道显示,单独查看Base Color、Metallic、Roughness等通道。这样可以确保每个通道的信息都合理,不会出现某个通道全白或全黑的情况。
8. 全流程串联与常见问题排查
8.1 从零到一的完整流程回顾
把整个流程串起来,大概是这样的:
- 低模搭建:在3ds Max或Maya里用Box Modeling起型,控制面数,预留结构。
- 高模雕刻:导入ZBrush,用DynaMesh和SubTool分层雕刻细节。
- 拓扑低模:用Quad Draw或Freeform建模,在高模表面拓扑出低模,遵循四边形和循环边法则。
- UV拆分:标记接缝,切开,展平,排列,统一像素密度。
- 法线烘焙:在Substance Painter或xNormal里烘焙法线、AO、曲率等贴图。
- 材质贴图:在Substance Painter里绘制PBR材质,调整金属度、粗糙度、基础色。
- 导出与引擎导入:导出FBX和贴图,导入Unity或Unreal,设置材质球,检查最终效果。
每个环节都有其独立的操作逻辑,但环节之间的衔接同样重要。低模的布线影响拓扑,拓扑的质量影响UV,UV的合理性影响烘焙,烘焙的结果影响贴图。任何一个环节出问题,都会在后续环节放大。
8.2 常见问题速查表
| 环节 | 常见问题 | 排查思路 | 解决方法 |
|---|---|---|---|
| 低模 | 平滑后轮廓塌陷 | 检查转折处是否有双线支撑 | 在转折处加循环边 |
| 高模 | 雕刻笔刷拉伸严重 | 检查网格密度是否均匀 | 用DynaMesh重构或提前细分 |
| 拓扑 | 平滑后出现奇怪阴影 | 检查是否有三角形或N边形 | 改为四边形,或把三角形藏到背面 |
| UV | 贴图拉伸明显 | 检查棋盘格贴图 | 调整UV比例,用Relax缓解 |
| 烘焙 | 法线贴图有接缝 | 检查UV接缝处射线投射 | 调整Ray Distance,或手动加线 |
| 烘焙 | 细节模糊 | 检查输出分辨率 | 提高到4096 |
| 贴图 | 材质看起来像塑料 | 检查粗糙度和金属度 | 增加粗糙度变化,添加磨损细节 |
| 引擎 | 模型发黑 | 检查法线方向 | 统一法线朝外 |
8.3 我踩过的几个大坑
第一个坑:低模阶段没控制面数。刚开始做次世代的时候,觉得面数越多越精细,结果低模做到两万面,拓扑的时候发现根本没法拓扑,因为低模本身已经比高模还复杂了。后来才明白,低模的面数要控制在合理范围内,给拓扑留出空间。
第二个坑:UV接缝藏在正面。有一次做一个人物脸部,UV接缝不小心留在了脸颊上,烘焙出来一条明显的硬边,怎么调都调不掉。最后只能重新拆UV,把接缝移到发际线和下巴底部。这个教训让我养成了拆UV前先规划接缝位置的习惯。
第三个坑:烘焙时Ray Distance设得太大。射线投射距离设得太大,结果低模的射线碰到了旁边部件的高模,烘焙出来的法线贴图全是乱七八糟的细节。后来学会了根据高低模的实际距离来设置Ray Distance,一般不超过高低模最大距离的1.5倍。
第四个坑:贴图太干净。早期做的模型,贴图干干净净,没有任何磨损和污渍,渲染出来像刚出厂的塑料玩具。后来看了很多参考图,发现真实的物体表面永远有使用痕迹,才开始在贴图里加磨损、积灰、指纹这些细节。
8.4 给新手的几个建议
如果你刚开始学次世代PBR流程,我的建议是:不要跳步。低模、高模、拓扑、UV、烘焙、贴图,每一步都踏踏实实做完,再做下一步。跳步的结果就是后面疯狂返工。
另外,多找参考。做模型之前,先找大量的参考图,了解真实物体的结构、材质、磨损规律。PBR的核心是物理真实,你对真实世界观察得越细,做出来的模型就越有说服力。
最后,不要怕返工。次世代流程本身就是一个迭代的过程,第一遍做不好很正常。我做了这么多年,依然经常在拓扑和UV阶段返工。返工不可怕,可怕的是明知有问题还将就着往下做,最后在引擎里看到效果才后悔。
这个流程后续还可以这样扩展:学习Substance Designer做程序化材质,学习Marvelous Designer做布料模拟,学习Unreal Engine的材质节点系统。每一步深入下去都有很多内容可以挖,但前提是先把基础流程走通。