
今天想聊一聊Maya里给角色模型做UV展平这件事。如果你刚做完一个角色打开UV编辑器面对一堆乱线不知所措或者好不容易展开、上贴图之后发现到处都是拉伸、接缝明显那这篇笔记应该能帮上不少忙。我在这行做了多年角色建模从手绘网游低模到次世代高模烘焙UV这一步始终是决定贴图效果上限的关键环节。贴图画得再细如果UV布局不合理、密度不统一、接缝位置没放好最后呈现出来的效果照样是打折扣的。这篇文章会把展平的底层逻辑、切割线怎么设计、Maya里的具体操作流程、以及平时最容易踩的坑都摊开讲一遍适合所有要给角色上贴图、做材质贴图准备的同学参考。1. 展平前必须先想通的底层逻辑1.1 UV坐标到底在干什么先理解UV本身。三维模型上的每个顶点除了有X、Y、Z空间坐标还有一组额外的U、V参数坐标它决定了这个顶点落在二维贴图上的哪个位置。展平做的事情就是把三维空间里的模型表面“剪开”然后摊平到一张从0到1的二维方格纸上这个方格纸就是模型的UV空间。之后不管是手绘贴图、Substance Painter直接绘制还是引擎里的纹理采样都会按照这套UV坐标把像素“贴”回模型表面。我一般跟新人打比方时说UV展平就是给模型裁衣服。模型表面就是人的身体每块UV壳就是剪出来的布片贴图就是布料上印的花纹。身体是立体而且有起伏的布不可能一整块完美贴合所有曲面必须按结构剪成几片再包上去剪在哪、怎么剪直接决定这件“衣服”穿上去是否平整服帖。UV展得好不好就看上贴图之后接缝处的花纹能不能连续、摄像头移动到某些区域时会不会有格子被拉变形。1.2 展开算法的数学本质为什么一定会拉伸不少朋友可能是把模型选中直接点一下Unfold按钮就觉得完事了。但实际上展开算法背后是有数学代价的。三维曲面要映射到二维平面只有在曲面高斯曲率处处为零的情况下才能做到完全无畸变也就是像一张纸可以卷成圆柱却没法卷成球面那样。角色模型的头部、肩膀、手指缝这些区域天然就是曲率非常大的曲面强行摊平一定会有拉伸和面积比例失衡。Maya里的Unfold3D内核本质上是在做“保角映射”的优化计算尽可能保持三角形角度不变同时兼顾面积比例最终结果是一种折衷而不是完美无缺的答案。这里可以拿世界地图做类比。地球是一个球面要画到一张平面地图上选择不同投影方式会导致不同畸变。墨卡托投影保持角度和方向但高纬度地区面积被严重放大等积投影面积比例准了但形状又扭曲了。UV展开面对的困境一模一样所以在某些区域出现拉伸不是Maya算得不好而是几何本身决定了畸变不可能被完全消除。我们能做的就是通过合理的切割线把畸变分解到各个壳上让每个局部区域的形变控制在可接受范围内。1.3 判断一张UV是否合格的硬指标我在项目里验收角色UV时不看过程只看结果核心就是三条硬指标。第一条是没有明显拉伸和形变打开棋盘格纹理模型表面每个格子在各个方向都应该是大小均匀的正方形如果出现拉长、压扁、倾斜说明该处UV拉伸较大。第二条是壳与壳之间不重叠、壳内部没有翻转和折叠否则贴图会出现互相覆盖、黑斑或者反向显示的问题。第三条是全模型纹素密度统一意思是每一块UV壳占用的UV空间比例要跟它在三维模型上对应的表面积比例大致一致这样角色身上各个部位的贴图清晰度才会一致。实际检查时我会在Maya里用三种方式配合先在UV编辑器里显示棋盘格纹理再打开UV壳的拉伸着色模式Display Color Mode Stretch最后按一下模型上的棋盘格材质在视口里旋转观察。拉伸着色模式里红色区域就是畸变严重的区域蓝色和紫色是正常范围绿色黄色中等。只要能看到红色的壳在关键位置出现大片面积那基本就是切法出了问题。2. 切割线这样设计UV质量先成一半2.1 接缝位置的三条铁律很多新手展UV展得特别碎、特别乱根本原因不是工具不熟而是切割线设计不合理。切割线放哪里直接决定了UV壳的形状和后续贴图的效果。我总结了三条铁律基本可以覆盖绝大多数角色资产。第一条接缝要放在不显眼的位置比如手臂内侧、腿内侧、腋下、后脑勺、脚底板这种日常视角看不到的地方。第二条避开头面部、手背、膝盖、肘部这些细节密集又容易被观察的区域眼睛和嘴巴周围更是要尽量避免出现接缝穿过的尴尬情况。第三条切割线尽量沿着模型的拓扑环形结构走不要斜着硬切过三角面否则接缝在贴图后会呈现锯齿状处理起来非常麻烦。为什么接缝位置如此重要因为只要UV壳与壳之间有切割就存在一条二维空间里的断线贴图纹理在断线两侧需要完全连续才算无缝。实际项目里手绘贴图很难保证笔刷在两个壳边缘做到像素级完美衔接三维软件和引擎的采样插值又会在接缝处产生色差所以接缝一定会有痕迹只是明显不明显的问题。把它藏在自然视线够不到的地方哪怕有一点点瑕疵也没人会发现这就是行业里做角色UV的基本逻辑。2.2 头部能用一个大壳解决就不切碎角色头部是 UV 最容易被新手搞砸的部位。很多新手按网上教程把脸前后左右切成好几片结果眼睛、鼻子、嘴巴被切割线切得七零八落上贴图后五官全断怎么修都别扭。我的意见是正常角色头部尽量用一个完整的壳来做只有头发、耳朵这些附属结构才考虑单独拆开。通用切法是这样的从耳朵后面跟颅骨之间的沟槽处下刀一路切到后颈下方下巴下沿到下颌角再补一段这样绝大部分面部区域就被完整保留在同一个壳里了五官不会有接缝穿过。后脑勺中线看情况决定切不切如果是长发角色无所谓反正会被头发盖住如果是光头或者短发角色一定不要把切割线放在头顶正中央要么藏在发际线边缘要么让它倚着耳朵后方的自然沟槽走。耳朵的处理看项目需求。次世代高模角色我一般建议耳朵单独切开做一个小壳因为它跟头部之间的耳后沟是非常深的凹陷硬要跟头部混在一起展开扭曲会比较严重。卡通低模可以忽略直接跟头部一起展开问题也不大。另外如果角色模型的眼睛需要单独做贴图细节可以在眼眶周围切一圈给眼睛一块独立的UV空间方便后期画瞳孔和虹膜细节。2.3 身体和四肢主接缝放在内侧不是没道理再来看躯干和四肢。躯干戏通常就两种方案。方案A是一条侧缝从腋窝沿身体侧面往下切到胯部让身体自然分成前胸和后背两个大块这在肌肉型角色、裸上身角色上很常用因为胸大肌、腹肌、背阔肌这些结构刚好能在前后两块壳里完整展开拉伸比较小。方案B是从肩顶沿手臂外侧切到手腕侧缝依然有但手臂和躯干连成一个壳适合穿铠甲或者衣服包裹比较严实的角色接缝藏在袖子与身体的交界处不会穿帮。我个人的习惯是只要不是特殊项目要求就选方案A一条侧缝加一条后颈短缝前后各一个壳简单干净后期贴图画肌肉纹理非常顺手。手臂的处理关键在于从腋窝沿手臂内侧一直切到手腕而不是在手臂前侧或者后侧乱切。这样手臂外侧面就保留为一大块完整UV上贴图后从正面看去没有断线。手肘窝如果模型有比较明显的屈折结构可以额外补一小刀但位置保持在屈肘时产生的褶皱区域不影响视觉。手部我一般把手掌单独做成一个壳五根手指每根一个壳。你要是觉得壳太多可以把中指、无名指、小指从指缝内侧连接成一个壳但展开之后的拉伸会比单根手指明显不少手绘贴图时也难以下手。切割线一定从手指并拢时的指缝内侧走千万不要从指背切否则贴图接缝会落在手背上非常难看。腿脚部位同理大腿根内侧沿着腹股沟线切到膝盖内侧再到脚踝这样大腿外侧和小腿外侧都保持完整脚底单独一个小壳沿着足弓切割脚背部分可跟小腿连也可单独但单独更自由。2.4 一左一右的对称角色只展半边就够了绝大多数人形角色都是左右对称的这种模型如果两边都手动展一遍纯属浪费时间。正确的做法是先把模型拓扑和左右位置搞成严格对称只展左半边然后将左半边的UV通过镜像工具复制到右半边。Maya里对应的是UV Toolkit里的Mirror UV功能选中右边的壳指定好镜像轴通常是U方向翻转一次就能搞定。这样操作不仅省下一半时间还能确保左右两边的纹素密度完全一致贴图不会出现半边清晰半边糊的情况。这里有个容易踩的坑镜像复制之前一定要确认模型本身左右完全对称如果拓扑对不上或者位置有偏移镜像出来的UV会歪掉。另外执行镜像后随手检查一下壳有没有翻转有时候轴方向判断错误会导致右半边的UV被左右颠倒贴图上的文字符号会变成镜像字这种错误在后期烘焙和贴图阶段很难发现等绑定好了才发现就晚了。检查方法很简单随便找一块带数字或字母的贴图赋上去看看方向正不正常即可。3. Maya展平实操从Cut到Layout的完整流程3.1 展平前的模型检查清单进UV之前模型本身必须先收拾干净否则后续每一步都可能被历史记录和脏几何拖后腿。我列一个自己的检查清单照着走一遍基本不会出大问题。第一拓扑尽量四边形化避免出现大量三角面和N边形Unfold算法在非四边形网格上展开结果往往非常不可控。第二执行Mesh Cleanup把非流形边、零面积面、层叠面清理掉尤其要检查是不是存在一条边被三个以上面共用的情况这种几何会让Unfold直接失败。第三在建模完成后对模型执行Modify Freeze Transformations然后Delete by Type History把变换冻结、历史清掉不然Maya在后端不断重算历史节点UV操作会卡顿甚至出现类似“切不断、展不开”的诡异问题。第四确认模型单位、缩放比例正常因为后续计算texel density时需要对应真实尺寸。第五角色如果是对称的就把左右对齐到世界坐标轴上方便做镜像UV。这套检查流程听起来琐碎但能避免掉大量返工。我见过太多同行拿着一个带着古老历史节点的模型直接开始分UV一边切一边崩溃最后才发现是历史记录的问题。3.2 切割、缝合、展开的基本操作打开Maya的UV编辑器Windows Modeling Editors UV Editor左侧就是UV Toolkit里面所有工具基本都在这里集中了。展平一个部件时我的顺序是先在视口里选中需要切割的边然后右键菜单里选Cut UV Edges把所有预设的切割线一次切完再切到UV编辑器里框选该壳按快捷键CtrlU执行Unfold。需要注意的是切割线要一次性切完整如果一个闭合环上只切了一半那Unfold的时候壳还是被“扯住”的展开出来自然就是一团皱。遇到这种疑似没切干净的情况我会用UV Toolkit里的Show/Hide工具把UV壳边框显示出来检查一下哪些边还被连在一起。Sew UV Edges的作用是把两个壳缝合成一个或者把切开的边重新缝合。实际项目里经常会遇到某个壳展开后拉伸分布不均想给它补一刀但补完之后可能又想恢复局部连接这时候就用到Sew。Unfold操作本身也有一些可调参数最常见的是Stretch权重滑块往一个方向调会偏向保持角度往另一个方向调会更注重保持面积比例。我第一次接触的时候也搞不清这个滑块到底在干嘛后来我总结出一个笨办法先默认值展开看拉伸情况如果局部红色区域集中在某个细微结构附近先别急着调滑块优先检查切割线是否合理如果整体壳形别扭才去调Stretch权重。对于个别特别顽固的区域我还会用Relax工具做局部松弛。选中需要松弛的UV壳点RelaxMaya会在保持边界位置不变的情况下尽量把内部网格均匀舒展。这个操作特别适合手指、耳朵这类小结构展开后棋盘格看起来稍微有点紧用Relax松两下就舒服了。Relax用几次就好每次迭代次数别过大否则会把壳的外轮廓给松变形。3.3 拉伸和密度检查展完一组壳之后马上做两件事打开棋盘格打开拉伸着色。棋盘格做法很简单新建一个Lambert材质在颜色通道连接一个2D Textures Checker纹理赋给模型然后在视口里切换到材质显示模式旋转模型观察格子。正常区域格子是完美的正方形被拉伸的地方格子会变成矩形、菱形甚至不规则四边形。此时就可以切回UV编辑器框选异常区域补切一刀再局部Unfold直到格子大致均匀。纹素密度texel density也是要重点看的。我用2048分辨率的贴图做角色时一般会维持在10到30像素每厘米这个区间具体看项目平台和单位距离下的画面占比。Maya的UV Toolkit里有Texel Density工具可以直接Get当前壳的密度值再Set统一到目标值把所有壳拉平对齐。这个步骤相当实用没有它的话光靠肉眼在Layout里手动缩放密度很难保证统一最后贴图常常出现脸部清晰、衣服糊成一片的尴尬情况。3.4 最终Layout把壳排进0到1的贴图空间展平工作做完后所有UV壳最终都要被放进0到1的贴图坐标空间超出这个范围的纹理会被采样穿越或者重复。选择模型的所有壳在UV Toolkit里点击Layout它会自动把壳排列到0-1范围内并按照设定的间隔Padding留出缝隙。这里padding的数值请务必根据贴图分辨率来2048分辨率下我一般留0.002到0.004的间隔512这种小贴图反而要留更大否则Mipmap生成后相邻壳体之间会出现明显的贴图颜色渗漏。如果模型有大量互相独立的壳体Layout的旋转和合并选项也可以打开自动摆出让空间利用率更高的排列方式。排布结束后不要急着关掉UV编辑器用Export UV Wireframe或者老版本里的UV Snapshot导出一张UV线框参考图后面手绘贴图时要铺在PS里当底图。这一步很多人会漏等画到一半才想起来没有UV布局参考只能重新截图对位特别麻烦。4. 展平常见问题排查与避坑实录4.1 Unfold后还是扭曲先别怪Maya展开之后依然有大片扭曲和拉伸原因基本集中在三点切割线没切干净、模型几何有非流形边、面数太低导致展开算法判据不足。排查时先看UV编辑器里的壳如果某个壳内部有很多尖锐褶皱和自交多半是三维模型上某个闭环只切了一半等于是把一块布中间钉了钉子再强行摊平自然扭曲。找到对应边界补切一刀再展开通常立刻缓解。非流形几何则是Unfold算法的天敌这种网格一般肉眼很难发现建议直接用Mesh Cleanup扫描一遍把非流形边清掉再重新展开。面数太低的问题常见于手指和耳廓这种细小结构被几十个多边形approximation展开后角度畸变奇大无比这种情况下可以临时用平滑网格或者增加细分再展展完后再恢复到低模面数UV会继承下来。4.2 重叠和翻转在编辑器里怎么查壳重叠和翻转是UV导出贴图后最容易引发诡异Bug的问题。壳重叠了贴图就会被两个壳同时采样呈现出一块区域映射两张纹理的混乱状态渲染时会出现闪烁和错误颜色。翻转则导致贴图呈镜像显示做文字或者不对称图案时尤其明显。Maya的UV Editor菜单里有一系列选择工具比如Select Overlapping Shells和Select Overlapping UVs可以高亮显示重叠的部分。没有这个菜单的旧版本也可以手动打开Shell模式通过壳的颜色分布快速判断有没有两片壳叠在同一区域。翻转问题一般靠肉眼目测每个壳的UV三角形法线方向虽然麻烦但壳数量不多时比依赖工具更快。4.3 常见错误速查表现象可能原因解决办法Unfold后红色拉伸面积巨大切割线不足关键结构未切断检查闭合环在结构沟壑处补刀再展开棋盘格大小不一致各壳纹素密度不统一用Texel Density工具统一所有壳的密度接缝处贴图颜色渗开Padding太小导致Mipmap串色根据贴图分辨率调大UV壳间隔推荐0.002以上接缝明显或锯齿感切割线斜穿过三角面尽量沿拓扑环线切割边界必要时重新选边切割镜像后UV重叠或反字镜像轴选错或对称模型左与右不严格重新指定U/V向翻转先把模型左右位置对齐展开时Maya卡死或永远算不完面数过高或历史节点复杂冻结历史、清理非四边面必要时分部件单独展开导出贴图后壳体边缘出现白边贴图稀释不够或padding过小导出时做边缘羽化扩张或者UV间隔再留大一些4.4 操作中踩过的几个坑有一段时间我特别迷信自动UVPremiere模型一出就直接用Automatic Mapping一键展结果烘焙AO的时候各种壳穿插、ID贴图错乱最后花了一整天才返工回来。自动UV适合机械零件、硬表面这类弧面少、结构清楚的对象角色这种曲面复杂、曲率变化大的模型老老实实手动切割反而最快最可控。还有一次给一个角色的手部展UV为了图省事把切割线放在手指背面结果上贴图纹理后指甲区域接缝刺眼重新切指缝内侧再展开才算解决。从那以后我给自己立了一个规矩凡是展开后看不到的接缝尽量给内侧凡是能被正常视角看到的区域不惜多切几刀也要保证连续。另外还有一个细节UV Editor里做缩放操作时一不小心就会在缩放的同时改变纹理密度很多人没注意到。调整个别壳的大小时我一般会在属性面板里输入具体数值而不是鼠标拖拽避免手滑造成密度飘移。如果需要让某一块贴图区域更清晰可以刻意把它放大但前提是你知道自己在做什么并且全角色上下要保持密度的整体协调。5. 关于展UV的一些个人补充展UV这件事本质上就是个熟练活没有太多玄学。切得越多、排得越多就越能预判Maya里Unfold的结果。我现在拿到一个角色模型基本扫一眼拓扑就能定下切割方案知道哪里要切、哪里可以省、哪里后续会有拉伸风险。但回到第一次做角色UV的时候我也为了一颗头的壳反复展开十几次最后才慢慢摸到门道。有一个小技巧我到现在还在用每次在给一个壳Unfold之前先在UV编辑器里把它缩放到一个相对适中的区域不要贴着0-1边界也不要缩得只有米粒大小再执行Unfold。虽然Maya在计算时对绝对大小不敏感但这样做能让之后的局部微调、Relax和密度统一更直观不会把壳形状和空间位置搅在一起。另外在展一个大型角色时我习惯分部件处理头部、躯干、四肢、附件各放一个图层展一个锁一个避免误操作。到项目收尾阶段再统一Layout和密度这样即使某一步改动了模型拓扑也不会影响其他部分的UV工作。角色UV展平在整个三维生产环节里不起眼却非常影响最终贴图质量。希望这篇笔记能帮你少走一些弯路把时间留到更有价值的贴图绘制和模型打磨上去。