ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

UE与Blender皮肤渲染实战:从材质节点到光照的完整工作流

UE与Blender皮肤渲染实战:从材质节点到光照的完整工作流 皮肤渲染这件事在CG圈里一直是个看起来简单、做起来要命的活儿。你随便打开一个作品展示页那些通透、带血色、有次表面散射质感的角色皮肤背后往往是几十次材质迭代和渲染测试。最近看到一位日本创作者的CG角色作品第一反应不是好看而是这套皮肤材质到底怎么搭出来的。结合UE和Blender这两套工具的特性我把自己在角色皮肤渲染上踩过的坑、试过的参数、以及一些反直觉的结论整理出来给正在做角色或者准备挑战皮肤质感的同行一个参考。这篇文章适合已经能独立完成角色建模和基础材质、但皮肤总是塑料感或者蜡像感的从业者也适合想搞清楚UE和Blender在皮肤渲染上各自边界的人。我不会只给一堆参数让你抄而是把每个选择背后的逻辑讲清楚这样你换一个角色、换一套灯光也能自己调。1. 皮肤渲染为什么是角色CG的分水岭1.1 皮肤不是一种材质是三层结构的叠加很多人做皮肤失败根本原因是从一开始就把皮肤当成一个材质来处理。真实的皮肤至少包含三层结构最外层的角质层、中间的表皮层、底部的真皮层再加上皮下脂肪和血管。光线打上去之后一部分在表面反射镜面高光一部分穿透进去被散射次表面散射还有一部分被血红蛋白和黑色素吸收。这就解释了为什么单纯调高粗糙度或者加个SSS贴图皮肤还是假。因为真实皮肤的散射是有深度和颜色衰减的红光散射距离远蓝光散射距离近所以皮肤边缘和薄的地方比如耳朵、鼻翼会透出偏红的暖色。这个现象在Blender里靠Principled BSDF的Subsurface参数能模拟一部分在UE里则要靠Subsurface Profile配合专门的散射颜色。我自己的经验是先把皮肤的光学分层想清楚再去选工具和节点比一上来就堆节点有效得多。下面这张表是我总结的皮肤各层在渲染中对应的视觉特征调材质的时候可以对照着看。皮肤层次视觉特征主要影响参数角质层表面油光、细微纹理粗糙度、法线、高光表皮层整体肤色、明暗过渡基础色、SSS颜色真皮层血色、透光感散射半径、散射颜色皮下组织边缘暖色、薄处透红散射深度、次表面权重1.2 UE和Blender在皮肤渲染上的分工逻辑UE和Blender不是二选一的关系而是各自有擅长的环节。Blender的优势在于建模、UV、贴图绘制和材质节点的灵活调试你可以快速迭代出满意的皮肤质感UE的优势在于实时渲染、光照环境和最终成片的氛围控制尤其是Lumen和路径追踪打开之后皮肤在动态光照下的表现更接近影视级。我通常的工作流是在Blender里完成角色建模、UV展开、皮肤贴图基础色、粗糙度、法线、SSS权重的制作和初步材质验证然后导出到UE里做最终的光照和渲染。这个流程的关键在于贴图的通道规划和材质参数的对应关系如果前期没规划好导到UE里会发现SSS完全不对味。提示Blender导出到UE时皮肤贴图的色彩空间一定要确认清楚。基础色用sRGB粗糙度和SSS权重用Non-Color否则颜色会偏。1.3 为什么日本美女大神这类作品值得拆解这类作品之所以值得研究不是因为好看而是因为它们在皮肤质感上通常做到了几个难点一是面部微血管的红晕过渡自然二是耳朵和鼻翼的透光感真实三是高光分布符合真实皮肤的油水平衡。这些细节不是靠一个SSS材质就能搞定的而是贴图、材质、灯光三者配合的结果。我在拆解类似作品时习惯先看它的高光形状再看边缘透光最后看整体色调。高光形状能告诉你粗糙度贴图怎么画的边缘透光能反推散射半径整体色调则能看出基础色和SSS颜色的配比。这套拆解方法比单纯看着像要靠谱得多。2. Blender里的皮肤材质节点到底怎么搭2.1 Principled BSDF的Subsurface参数不是调大就好Blender的Principled BSDF从3.0版本之后Subsurface的算法改成了Random Walk这个改动对皮肤渲染影响很大。旧版的Christensen-Burley算法在薄物体上容易出现漏光和过度散射而Random Walk更接近真实的光线随机行走散射深度和颜色衰减更自然。但很多人调Subsurface的时候习惯把Subsurface Weight直接拉到1结果皮肤变得像果冻。正确的做法是Subsurface Weight控制在0.2到0.4之间Subsurface Radius根据角色比例来定。比如一个身高1.7米的角色散射半径通常在(1.0, 0.35, 0.2)毫米这个量级但Blender的单位是米所以实际填的时候要换算成0.001、0.00035、0.0002这个级别。这里有个容易忽略的点Subsurface Radius的三个通道分别对应红、绿、蓝的散射距离。红光散射最远所以红色通道数值最大。如果你把三个通道填成一样的值皮肤就会失去血色变成灰白色。2.2 用Layer Weight和ColorRamp做边缘透光真实皮肤的透光感在边缘最明显尤其是耳朵、鼻翼、手指这些薄的地方。在Blender里模拟这个效果我常用的做法是用Layer Weight节点配合ColorRamp把Fresnel效果转换成散射权重的遮罩。具体节点连接是Layer Weight的Facing输出接到ColorRampColorRamp的黑色端对应正面散射弱白色端对应边缘散射强然后把ColorRamp的输出乘以一个系数接到Subsurface Weight或者直接混入SSS颜色。这样边缘的散射会更强透光感就出来了。这个技巧的关键在于ColorRamp的插值位置。如果黑色端太靠左边缘透光会太强像塑料如果太靠右又几乎没有效果。我一般把黑色端放在0.3到0.4之间白色端放在0.7到0.8之间具体根据角色脸型微调。2.3 皮肤贴图的通道规划与绘制顺序贴图是皮肤渲染的地基通道规划不好后面材质调死也救不回来。我习惯把皮肤贴图分成这几张基础色Base Color、粗糙度Roughness、法线Normal、SSS权重Subsurface Weight、以及一张细节法线Micro Normal。绘制顺序上我建议先铺大色块再画血色过渡最后加细节纹理。大色块决定整体肤色血色过渡决定面颊、鼻头、眼周的红晕细节纹理决定皮肤的毛孔和细纹。很多人反过来先抠细节结果整体色调不对细节再精细也白搭。注意SSS权重贴图不要画得太碎大面积的均匀过渡比局部细节更重要。因为SSS本身是低频效果高频细节反而会破坏散射的自然感。2.4 实测中容易翻车的三个参数组合第一个翻车点是Subsurface Weight和Roughness同时调高。粗糙度高的时候表面反射变弱SSS效果会被压下去皮肤看起来又干又假。正确的做法是粗糙度控制在0.3到0.5之间SSS权重不要超过0.4。第二个翻车点是法线贴图强度过大。皮肤的法线应该是细腻的、低频的如果法线强度拉到1以上毛孔会变成坑洞高光也会碎掉。我一般把法线强度控制在0.3到0.6之间配合一张高频的细节法线做叠加。第三个翻车点是基础色饱和度太高。真实皮肤的基础色其实是偏灰的血色是靠SSS和贴图叠加出来的。如果基础色本身就红得发紫加上SSS之后会变成关公脸。基础色的饱和度我一般控制在30%到50%之间。3. 把Blender的皮肤资产搬到UE里要注意什么3.1 材质节点的对应关系不是一一映射Blender的Principled BSDF和UE的材质节点不是一一对应的尤其是SSS部分。Blender的Subsurface Radius在UE里对应的是Subsurface Profile里的Scatter Radius但UE的Subsurface Profile是一个预设资产需要你先创建一个然后调整里面的散射颜色和半径。具体操作是在UE里右键创建Subsurface Profile然后设置Scatter Radius和Scatter Color。Scatter Radius的单位是厘米所以Blender里的毫米数值要乘以0.1。比如Blender里红色通道是1毫米UE里就填0.1厘米。另外UE的Subsurface Profile还分Burley和Random Walk两种模式皮肤建议用Random Walk和Blender的新版算法更接近。3.2 贴图导出的格式与色彩空间陷阱从Blender导出贴图到UE最容易出问题的是色彩空间。基础色贴图要导出为sRGB粗糙度和SSS权重导出为Non-Color。如果导出的时候搞反了UE里读到的颜色会偏暗或者偏亮。我习惯在Blender里就把贴图的色彩空间设置好导出的时候用OpenEXR格式保留更多信息然后在UE里导入时确认色彩空间设置。如果用的是PNG记得在UE的贴图编辑器里手动把sRGB勾选或取消。还有一个坑是法线贴图的绿通道方向。Blender和UE的法线贴图绿通道方向是相反的Blender是OpenGL格式绿通道向上UE是DirectX格式绿通道向下。导出的时候要在Blender的法线烘焙设置里勾选DirectX或者导出后在UE里勾选Flip Green Channel。3.3 UE里Subsurface Profile的创建与调参在UE里创建Subsurface Profile之后需要调整几个关键参数Scatter Radius、Scatter Color、Extinction Scale、Normal Scale。Scatter Radius控制散射距离Scatter Color控制散射颜色Extinction Scale控制散射的衰减速度Normal Scale控制法线对散射的影响。我的经验值是Scatter Radius填(0.1, 0.035, 0.02)厘米Scatter Color填偏红的暖色Extinction Scale控制在1.0左右Normal Scale控制在0.5到1.0之间。这些值不是固定的要根据角色的比例和光照环境微调。提示UE的Subsurface Profile是项目级别的资产多个角色可以共用但如果角色比例差异大比如一个写实角色和一个卡通角色建议分别创建。3.4 从Blender到UE的材质验证流程导出之后不要直接渲染先做一个材质验证。我通常会在UE里搭一个中性光照环境比如一个HDRI加一个方向光然后从正面、侧面、背面三个角度检查皮肤的散射效果。正面看整体色调侧面看边缘透光背面看散射是否穿透。如果发现散射太强或者太弱先检查Subsurface Profile的Scatter Radius再检查贴图的SSS权重通道。如果发现颜色不对先检查基础色的色彩空间再检查Scatter Color的设置。这个验证流程看起来麻烦但能省下大量后期返工的时间。我见过太多人直接渲染结果发现皮肤像塑料回头查半天才发现是色彩空间搞反了。4. 光照才是皮肤质感的最后一道关4.1 三点光照在皮肤渲染里的特殊处理标准的三点光照主光、补光、轮廓光在皮肤渲染里需要调整。主光决定皮肤的主要质感和高光形状补光决定暗部的血色过渡轮廓光决定边缘透光。这三者的比例和色温对皮肤质感影响极大。我的习惯是主光用偏暖的色温5000K到5500K补光用偏冷的色温6500K到7000K轮廓光用更暖的色温4000K到4500K。这样皮肤在亮部有暖色暗部有冷色边缘有暖色透光层次就出来了。主光的强度不要太高否则高光会过曝皮肤的细节会被吃掉。我一般把主光强度控制在能看清皮肤纹理但不刺眼的程度补光强度是主光的1/3到1/2轮廓光强度是主光的1/2到2/3。4.2 HDRI环境光对皮肤散射的影响HDRI环境光对皮肤散射的影响比想象中大。因为SSS是全局效果环境光的颜色和强度会直接影响散射的颜色和范围。如果HDRI偏蓝皮肤的暗部会偏冷血色会被压下去如果HDRI偏黄皮肤会整体偏暖但容易显得脏。我通常会在HDRI之外加一个方向光作为主光HDRI只作为环境补光。HDRI的强度控制在0.3到0.5之间方向光的强度根据场景调整。这样既能保留环境光的自然感又能控制主光的方向和强度。4.3 用Lumen做实时皮肤渲染的取舍UE的Lumen对皮肤渲染是双刃剑。好处是实时全局光照让皮肤的散射更自然尤其是暗部的血色过渡坏处是Lumen的噪点和性能开销尤其是在高精度皮肤材质下。我的做法是如果做静帧渲染直接开路径追踪效果最好如果做实时预览或者动画用Lumen但把SSS的质量调低配合降噪。Lumen的SSS质量在项目设置里可以调我一般用Medium或者HighLow的话散射会明显断层。还有一个取舍是反射。皮肤的镜面反射不需要太高精度Lumen的反射质量可以调低把性能留给SSS。这个取舍在实时渲染里很关键因为SSS的计算量比反射大得多。4.4 渲染端口与输出设置的实际经验UE渲染输出的时候有几个设置容易被忽略。一是输出格式建议用EXR或者PNG 16位保留更多色彩信息二是色彩空间输出的时候确认是Linear还是sRGB和后期软件匹配三是抗锯齿皮肤的SSS边缘容易有噪点建议开TAA或者DLSS。如果是用Movie Render Queue输出记得把SSS的质量调到最高并且关闭动态模糊除非需要。Movie Render Queue的SSS采样和实时预览不一样输出前最好先渲一帧看看效果。注意UE的渲染端口设置里如果用了多GPU或者分布式渲染SSS的计算可能会有差异建议在单机上验证效果后再批量输出。5. 那些让皮肤活过来的细节处理5.1 毛孔和细纹的方向性处理皮肤的毛孔不是随机分布的而是有方向性的。额头和鼻子的毛孔偏纵向面颊的毛孔偏斜向下巴的毛孔偏横向。如果毛孔贴图是随机噪点皮肤会显得砂纸感。我的做法是在Blender里用纹理坐标配合映射节点把毛孔贴图的方向和面部肌肉走向对齐。具体是用UV坐标的旋转和缩放让毛孔贴图在不同区域有不同的方向。这个操作在Blender里用Mapping节点就能做不需要额外的插件。细纹的处理类似但细纹更多是低频的可以用一张低分辨率的法线贴图叠加。细纹的强度不要太高否则会显得老态。5.2 嘴唇和眼球的材质差异嘴唇和眼球的材质和皮肤差别很大不能共用一套参数。嘴唇的SSS更强散射半径更大而且有垂直的唇纹眼球的角膜是透明的需要单独的折射材质虹膜则需要高精度的贴图。嘴唇的SSS权重我一般调到0.5到0.6散射半径比皮肤大20%到30%。眼球的角膜用透明材质加折射折射率1.376左右虹膜用基础色加法线做细节。提示眼球的高光位置要和主光方向一致否则会显得无神。我通常会在眼球材质里加一个手动控制的高光点配合主光方向调整。5.3 汗水和油光的层次感真实皮肤不是全干的也不是全油的而是有层次的。额头、鼻头、下巴的油光更强面颊的油光较弱眼周和嘴角则偏干。这个层次感靠粗糙度贴图来控制。我的粗糙度贴图是这样画的T区额头、鼻子、下巴粗糙度低0.2到0.3面颊粗糙度中等0.4到0.5眼周和嘴角粗糙度高0.6到0.7。这样高光在T区集中面颊柔和眼周和嘴角几乎无高光层次就出来了。汗水的话我一般用一层薄薄的高光贴图叠加位置在额头和鼻尖强度不要太高否则会像涂了油。5.4 面部微血管的红晕过渡面部微血管的红晕是皮肤活的关键。这个红晕不是均匀的而是集中在颧骨、鼻翼、眼周和耳垂。我通常会在基础色贴图里画一层低饱和度的红色然后用SSS权重贴图控制散射强度让红晕在散射中透出来。具体操作是在Blender里用一张红色的贴图乘以一个遮罩遮罩的白色区域对应颧骨、鼻翼、眼周和耳垂然后把这个结果混入基础色和SSS颜色。这样红晕既有颜色又有散射比单纯画红色要自然得多。这个技巧的关键是遮罩的过渡要柔和不能有明显的边界。我一般用高斯模糊把遮罩的边缘模糊掉模糊半径根据贴图分辨率来定4K贴图用20到30像素。6. 从作品反推工作流的拆解方法6.1 看高光形状反推粗糙度贴图拿到一张皮肤渲染作品先看高光形状。高光如果是锐利的点状说明粗糙度低如果是柔和的片状说明粗糙度高如果高光在T区集中、面颊散开说明粗糙度贴图是分区画的。这个方法能快速判断作者的粗糙度贴图策略。如果高光形状和面部结构不匹配比如鼻头高光散开、面颊高光集中说明粗糙度贴图可能画反了或者没分区。6.2 看边缘透光反推散射半径边缘透光是判断SSS参数的直接依据。如果耳朵和鼻翼的透光偏红且范围大说明散射半径大如果透光偏暗且范围小说明散射半径小。如果透光颜色偏蓝或者偏绿说明散射颜色设置有问题。我一般会对比作品和真实照片的边缘透光如果作品的透光比真实照片强说明SSS权重偏高如果弱说明SSS权重偏低。这个对比不需要精确肉眼判断就够了。6.3 看整体色调反推基础色和SSS配比整体色调能反映基础色和SSS颜色的配比。如果整体偏红说明SSS颜色偏红或者基础色饱和度高如果整体偏灰说明SSS权重低或者基础色饱和度低如果整体偏黄说明基础色偏黄或者光照色温偏暖。这个反推方法需要一定的经验积累但拆解多了之后基本能一眼看出问题所在。我建议多拆解一些高质量作品对比自己的参数慢慢就有感觉了。6.4 把拆解结果转化成自己的参数库拆解的目的是建立自己的参数库。我习惯把每次拆解的结果记录下来包括粗糙度范围、SSS权重、散射半径、光照色温等然后分类整理。下次做新角色的时候先从参数库里找最接近的预设再微调。这个参数库不需要很复杂一个表格就够了。关键是持续积累每次做完一个角色就更新一次。时间长了你会发现皮肤渲染不再是玄学而是有章可循的工程问题。拆解维度观察点反推参数调整方向高光形状锐利/柔和/分区粗糙度贴图分区绘制边缘透光颜色/范围散射半径红通道最大整体色调偏红/偏灰/偏黄基础色SSS配比饱和度控制暗部血色冷暖/强度补光色温冷色补光皮肤渲染这件事说到底是对真实光学现象的理解加上对工具的熟练运用。UE和Blender只是工具真正决定质感的是你对皮肤结构的理解和对光照的敏感度。我自己的体会是每次做完一个角色回头再看之前的作品总能发现新的问题这个过程本身就是进步。参数可以抄但感觉抄不来多练、多拆、多对比皮肤自然就活了。
返回列表