上个月我在整理一个2D原画角色的渲染工程,目标是把这批角色从传统的卡通光照迁移到 PBR 材质化配合光追渲染。第一版出图之后效果惨不忍睹,角色像刚从流水线上拆出来的塑料手办:脸上一片油亮的高光,头发是硬邦邦的塑料条,暗部死黑,人物像从海报上抠下来贴进场景里。我最初以为是灯光没打好,后来把所有环节重做了一遍,才彻底想明白一个问题——“塑料二次元”的根源不在颜色,而在材质对光的响应方式。这篇文章就围绕 2D 角色 PBR 材质化与光追重构这条工作流,把思路、参数、操作步骤和踩过的坑完整梳理一遍。无论你是做三渲二、风格化角色还是独立游戏,只要想让角色从“廉价塑料”变成“会呼吸的画面”,这套流程都值得参考。
1. 塑料感的病根:不是颜色错了,是光响应错了
1.1 只靠漫反射贴图,材质信息是缺失的
很多二次元角色渲染会走一条捷径:模型建好、UV展开、原画颜色贴上,然后用最简单的漫反射光照模型直接出图。这套流程跑出来的画面,所有物体对光的反应完全一致,光来就亮一点,光走就暗一块。用专业的说法,它的 BRDF(双向反射分布函数)只有一个漫反射分量,而且完全忽略了表面的微结构、反射层和各向异性,材质被简化成了一张“会变色的纸”。
这里有个很容易被忽略的认知:即便你在漫反射贴图里画了非常细致的纤维纹理,它在只支持漫反射的光照模型里,最多改变某个位置的颜色深浅,却无法表达“布料在掠射角度下有一层绒毛反光”“漆皮表面斜着看有镜面反射”“皮肤在背光处微微透出一点红”。塑料手办之所以像塑料,不是涂装颜色错了,而是它的表面在任何光照条件下都没有层次变化。二次元角色要还原手绘感,恰恰需要这些层次,只不过层次需要被控制,不能像写实渲染那样放任自由。
1.2 塑料感通常暴露在四个地方
我把常见塑料感归纳成四个可观察特征,排查时非常实用:
- 高光:皮肤、头发、衣服的高光糊成一大片,看不出明确的形状和强度层级,像整层表面涂了油。
- 暗部:缺少环境光和间接光照,阴影区域直接压到纯黑,没有闭塞渐变,也没有来自周围物体的颜色反弹。
- 边缘:模型轮廓与背景之间没有菲涅尔过渡,整个角色显得“贴图感”很重,缺乏体积与纵深。
- 接触:角色脚下与地面之间没有接触阴影,像在合成软件里用魔棒抠出来硬贴上去的。
这四个特征看似独立,其实全部指向同一件事:传统的卡通渲染把材质当成了一幅位图,而 PBR 材质化要做的是把它还原成一个对光线有真实响应的对象。材质维度补全之后,“塑料二次元”自然没有生存空间。
2. 为什么 PBR 材质化能救二次元,而不是毁掉二次元
2.1 PBR 不是在追求写实,而是在让表面“可解释”
不少美术从业者一听到 PBR 就摇头,担心角色一旦套上物理材质,就会变成油腻的写实模型。这种担心我完全理解,但它混淆了“物理正确的计算”和“写实的艺术效果”这两件事。PBR 的核心是能量守恒与微表面模型,它提供的是一个更精确、更可控的光响应框架,而不是一个强制你走向写实的裁判。
用大白话说,传统渲染只给了你一个亮度旋钮,PBR 给了你一整套调音台。你可以告诉渲染器:这块皮肤粗糙度是 0.45,高光边缘柔和;头发粗糙度是 0.2,外面还罩着一层清漆,所以高光锐利且有拖尾;布料粗糙度是 0.8,几乎不反射环境光,只呈现漫反射与绒毛光泽。这些参数并没有否定二次元风格,它只是把风格从“颜色贴图”转移到了“光响应参数”。角色在不同环境下保持一致的观感,放进复杂场景里也能和周围物体自然融合,这才是二次元角色离开纯白背景后不崩的底气。
2.2 用 PBR 参数重新定义每一个部件
我在实际操作中把角色身上的材质分成五种基本类型,每种类型分配完全不同的参数组合:
| 部件 | Base Color | Roughness | Metallic | 附加参数 |
|---|---|---|---|---|
| 皮肤 | 暖调肤色,略偏饱和 | 0.40–0.50 | 0.0 | 可选 SSS,强度 0.1–0.3 |
| 头发 | 发色,暗部可加深 | 0.15–0.25 | 0.0 | Clearcoat 1.0,各向异性 0.2–0.4 |
| 布料 | 固有色,避免过亮 | 0.75–0.85 | 0.0 | Sheen 0.3–1.0 |
| 皮带/塑料件 | 较深固有色 | 0.30–0.50 | 0.0–0.1 | Clearcoat 0.3–0.6 |
| 金属饰品 | 固有色,适当提亮 | 0.20–0.35 | 1.0 | 依赖环境反射,不能孤立存在 |
Roughness 是这些参数里最重要的一环。很多人一上来先纠结 Metallic,但二次元角色的金属件通常占比很小,真正让角色从“蜡像”变成“活人”的是粗糙度和清漆层。我第一次调试时把所有材质的 Roughness 全部设成 0.3,结果角色像涂了一层凡士林。后来才明白,同一种材质在不同部位必须要有局部变化,手绘感才出得来。
3. 材质贴图链路:从原画到四套 PBR 通道的实操
3.1 Base Color:不是直接截取原画颜色就能用
很多人做 PBR 化的第一步是把原画取色直接铺到模型上。这个思路没错,但不能原封不动照搬。原画颜色是为最终画面服务的,里面已经包含了光照、冷暖对比等光影信息,直接拿来当 Base Color,会导致颜色明度不均、冷暖关系在三维空间中错位。我现在的做法是:先在 DCC 软件里用区域取色或投影映射铺一层基础色,然后逐块检查明度差异,把偏差控制在合理范围内,最后把接近纯白的区域全部压暗。PBR 材质里的 Base Color 如果超过 0.9,光照一打上去高光就会溢出,细节全糊。
更进一步的做法是,用手绘的材质 ID 图作为遮罩,在 Base Color 上叠加曲率信息去生成暗角与边缘变化。比如脸颊不要整块一个颜色,颧骨下方和眼角可以手动加深一点点冷暖变化;衣服的褶皱处用曲率加深,凸起处提亮。这个阶段多花一小时,后面调灯光时能省三个小时。
3.2 Roughness 与 Metallic 的分区绘制
Roughness 贴图的绘制是整个工作流里最费时间、也最容易被低估的环节。整体材质球给一个大值当然快,但画面会非常平。我后来采用的方案是:先按部件分配基础 Roughness,比如皮肤 0.45、头发 0.2、布料 0.8,再用一张粗糙度遮罩做局部变化。鼻尖、嘴唇比脸蛋更油一些,高光更集中;衣服领口和袖口比大身更粗糙,因为褶皱摩擦多;皮靴的鞋面粗糙度低于鞋底。这些细微差异单独拎出来没人注意,叠在一起就是“手绘感”的核心来源。
Metallic 的判断标准只有一句话:它是不是金属。二次元角色身上的金属项链、机械臂外甲、腰带扣确实要设 1,其他东西一律 0。但要注意,Metallic 为 1 的材质几乎不显示漫反射颜色,所以金属件如果直接使用原画的固有色,会显得又黑又脏。正确做法是把 Base Color 调亮 20% 到 40%,再手动加一些渐变细节,让金属表面能反射环境信息和光源形状。
3.3 法线、AO 和曲率:在“平”上重建体积
二次元角色的模型通常面数很低,体积和线条全靠贴图撑。直接使用平滑的法线贴图会丢失原画的体积感,所以我的习惯是从一个临时的雕刻高模烘焙一张法线贴图,再通过强度缩放控制效果。对二次元角色,法线强度一定要保守,一般控制在 0.4 到 0.6 之间,否则脸部会变得凹凸不平,瞬间从动漫穿越到真实人类。
AO 贴图的作用是给角落补暗,让线条“收进去”。头发内侧、下巴下方、领口缝隙这类位置,AO 做得好,角色就不会有纸片浮在画布上的感觉。曲率贴图则用来生成边缘磨损或内部高光,如果角色需要表现轻微的边缘亮边,用曲率反相加 AO,是最快的方案。
3.4 Clearcoat 与 Sheen:二次元质感的最终调味
Clearcoat,也就是清漆层,是二次元 PBR 化里最被低估的两个参数之一。它模拟的是材质表面额外覆盖一层透明漆膜,比如汽车面漆、湿发、塑料外壳、亮皮件。二次元角色的头发经常要有那种“糖果纸”一样的高光,正是 Clearcoat 1.0 配合较低 Roughness 叠加出来的效果。皮肤也可以开一点 Clearcoat 0.1 到 0.3,模拟极薄的油脂膜,但绝对不能超过,否则就是一张油脸。
另一个是 Sheen,模拟织物绒毛。布料、毛衣、呢子大衣这类材质非常需要 Sheen。它的作用是让布料在不同角度下出现淡淡的绒毛反光,让衣服不再像一张被灯光打透的塑胶布。Principled BSDF 里 Sheen 参数默认偏强,我个人建议从 0.3 开始往上调,以阴影区不出现发灰发蓝的染色为准。
4. 光追重构:让角色和环境重新“咬合”
4.1 光追补上的正是 PBR 材质缺的那部分可见性
PBR 材质解决了表面怎么反射光的问题,但光从哪里来、被什么东西遮挡、反弹多少次之后进入相机,还需要渲染器去计算。传统光栅化渲染的做法是直接给定环境贴图、几个光源和一个反射探头,结果就是暗部细节全部死掉,角色和场景之间没有联系。光追,尤其是路径追踪,在这里有不可替代的价值:它会真实计算光源到相机的完整路径,包含吸收、反射、折射和多次反弹,因此接触阴影更准确、间接光照更丰富、金属高光能映射出真实的环境形状。
有人觉得光追就是“更亮更真实”,这是误解。在二次元风格下,光追的价值是可信度。比如角色站在窗边,光追能让窗框形状清晰地映在金属饰品上,让白色衬衫把浅蓝色的反射光弹到脸颊下方。这些微妙的细节不会破坏二次元感,反而让一个卡通角色显得真实存在于环境之中,而不只是一张贴图。
4.2 布光原则:给二次元角色搭一个“光照舞台”
光追不会自动出好效果,这是无数人验证过的教训。如果场景里只有一盏默认的日光灯,材质调得再精细也白搭。我现在的布光套路是固定的:
- 主光:用一块面积比较大的面光源,放在角色前上方 45 度左右,负责明暗分布和基础漫反射。面光源面积越大,高光过渡越柔和。
- 补光:放在角色背侧偏上的位置,强度约为主光的 15% 到 25%,可以打亮暗部并给轮廓一个冷色或暖色的反光。
- 轮廓光:一组窄条面光,放在角色后方,只让边缘出现一条细亮边,角色从背景中剥离的层次全靠这条边。
- 地面与环境反射物:角色脚下要有一块足够大的地板,周围最好有墙壁、道具或幕布,给光追提供反弹路径和反射内容。
我审过很多“塑料二次元”作品,问题往往不在材质参数,而是角色被放在空无一物的场景里。没有可反射的东西,没有可反弹的物体,PBR 材质再标准也无法生效。你要在角色周围搭一个能让光线流动起来的小世界,角色才能真正“活”过来。
4.3 风格化光追的参数取向:不完全写实,但要可信
光追渲染器打开之后,参数列表非常吓人:最大反弹次数、焦散、体积散射、光阈值、采样数……但对二次元风格的 PBR 角色,我并不建议全开物理真实。焦散和体积雾这类效果对风格化来说基本没有意义,反而会拖慢渲染速度。
我的推荐初始值可以这样设置:最大反弹次数 4 到 6,其中漫反射反弹 3 到 4 次,透明与折射反弹 1 到 2 次;采样数不要一开始就拉满,256 到 512 之间配合降噪器完全够用;光阈值设置在 0.01 左右,把几乎不贡献亮度的光路切掉,能省下不少性能。如果你在实时光追环境里做,思路是一样的:优先保住接触阴影和可见反射,材质复杂度反而可以低一点。光追不是开得越猛越好,很多实时光追性能开销来自透明毛发、复杂曲面和体积光,二次元角色材质平滑简单,反而很好跑。
4.4 噪点与性能:做个能实时预览的“降噪组合拳”
降噪器是光追工作流里决定成败的一环。如果直接上 128 采样不降噪,画面会布满噪点,没法看。但如果降噪过度,头发和皮肤表面的细节会被抹成一片,产生塑料感增强版。我现在习惯用 AI 降噪方案,采样先压到 256,打开降噪器预览,重点看画面有没有结构错误,比如头发丝被抹成一块饼。如果发现抹除痕迹,就把采样提升到 384 或 512,再配合小半径的后期模糊处理。这个组合拳比无脑开 1024 采样再后期修快得多,画面也稳。
在实时光追环境里,我会用时分超采样加锐化的方式,以较低内部分辨率渲染,输出时再放大。重点是把反射和 AO 单独控制开销,不用全屏光追一锅端,这样二次元角色的光追效果也能在普通硬件上流畅预览。
5. 实操记录:一套可复现的 PBR + 光追流程
5.1 从模型到材质通道的落地步骤
下面这套流程以开源 DCC 软件配合 Cycles 渲染器为例,主要思路在其它支持 PBR 和光追的工具里同样适用。
第一步,导入模型,检查 UV 布局,把头发、皮肤、衣服、饰品这些可分离部件分配到不同材质槽。UV 不能有大面积拉伸,否则烘焙出来的 AO 和曲率贴图会失真,这一步偷懒后面全是坑。
第二步,烘焙 AO 与曲率。给模型指定临时烘焙材质,用高模或笼子辅助,导出 AO、曲率、法线贴图。这些工具贴图的作用是辅助后续手工绘制,它们的质量直接决定最终材质细节是否干净。
第三步,进入绘图软件,基于 AO 和曲率手工绘制 Base Color,同时制作 Roughness 和 Metallic 遮罩、Clearcoat 遮罩。这一步花的时间最多,但也是让角色脱离“塑料感”的关键环节。
第四步,回到 DCC 软件,在每个材质槽里建立 PBR 材质节点,连接贴图,设置初始参数。
5.2 材质节点组合与关键参数
我给出一个可直接照抄的参数清单,覆盖角色最常见的五种材质:
- 皮肤:Base Color 接贴图,Roughness 用遮罩控制,基础值 0.45,Metallic 为 0。SSS 可选开启,Subsurface Radius 控制在 0.1 左右,Subsurface Color 用淡红色,只模拟极轻微的透光。
- 头发:Base Color 接贴图,Roughness 0.2 到 0.25,Clearcoat 1.0,Clearcoat Roughness 0.3,各向异性 0.2 到 0.4。各向异性是头发高光形成“丝状拖尾”的关键。
- 布料:Base Color 接贴图,Roughness 0.8,Metallic 0,Sheen 0.5 到 1.0,Sheen Tint 可以调到 0.3 左右。
- 皮带与塑料件:Base Color 较深,Roughness 0.35,Metallic 0,Clearcoat 0.5 到 0.7。
- 金属件:Metallic 1.0,Roughness 0.2 到 0.35,Base Color 适当提亮,不能直接用原画的固有色。
刚开始调试时,不要每个材质做太多变化,先让整组角色跑通,再逐个加细节。否则脚本错乱会完全无法判断是哪一步出了问题。
5.3 渲染设置与验证方法
渲染设置方面,采样数固定 256,开启 AI 降噪,关闭焦散和体积光,最大反弹次数 4。灯光按照主光、补光、轮廓光和地面反射来架设,先用一张灰卡环境贴图确认整体的亮度分布,再上色光。
验证环节,我有一个非常土但有效的方法:在角色旁边放两个球,一个是粗糙度 0.5 的灰色球,一个是粗糙度 0.1 的黑色球。渲染一帧对比这两个球的亮度和反射形状,就能快速判断整个场景的光照是否合理。如果灰球高光太刺眼,说明主光强度过高;如果黑球没有反射出窗口形状,说明环境反射信息不足。两个球测完,角色材质的大部分问题都能定位到具体方向。
5.4 最终打磨:按“四点检查法”逐项确认
从大图开始检查全角色光影结构,然后再看局部细节:
- 皮肤高光是否只出现在颧骨、鼻尖、唇珠。如果整片脸都在反光,Roughness 太高或 Clearcoat 太强。
- 头发高光是否是条状的、受控的,而不是整颗头都亮。如果高光太离散,需要调整各向异性方向,让高光沿着发股方向拖尾。
- 衣服暗部是否还有颜色细节,而不是纯黑。这里需要检查间接光照采样和 AO 强度。
- 金属件反射里能否看到场景的轮廓形状。如果反射是一片噪点,说明环境物体离角色太远或采样不够。
这一套检查完成之后,再逐项微调灯光角度和材质参数即可。
6. 常见问题与排查,以及几个实战心得
6.1 问题速查表:从现象直接定位病因
| 问题现象 | 可能原因 | 排查优先级 |
|---|---|---|
| 皮肤发灰发粉 | Roughness 过低、SSS 颜色过紫、环境光颜色混乱 | 先检查 Roughness,再关掉 SSS 对比 |
| 高光油腻 | Clearcoat 过高、Roughness 太低、主光面积太小 | 先降 Clearcoat,再看主光 |
| 暗部死黑 | 环境光不足、AO 太深、间接光照采样过低 | 先加环境光强度,再调 AO |
| 头发像塑料条 | Roughness 过低、缺少 Clearcoat、各向异性为零 | 先把 Clearcoat 开到 1,再拉各向异性 |
| 金属件发黑 | Base Color 太暗、场景缺少可反射物体 | 提亮 Base Color,补充环境物件 |
| 降噪后细节被糊掉 | 采样过低、降噪强度过高 | 提高采样到 384 或 512,再降噪 |
| 光追渲染极慢 | 反弹次数太多、误开体积光或焦散 | 关掉无关特性,降低透明反弹次数 |
排查时一定要一次只改一个变量,记录前后差异。我试过同时改五个参数,结果画面确实变了,但完全不知道是哪个改动生效,返工成本极高。
6.2 走了弯路才认可的几个经验
第一,不要迷信物理真实。光追采样真的没必要动辄 1024,256 到 512 配合降噪器已经足够,重点是把画面中的结构和色彩关系调整正确。
第二,PBR 材质化的重心不是 Metalness,而是 Roughness 和 Clearcoat。二次元角色金属件占比很低,真正塑造质感的是表面粗糙度和清漆层。
第三,不要忽略环境。空背景加平光,PBR 做得再标准也是白搭。先给角色搭一个能让光线反弹的环境,再回来调材质参数,效率会高得多。
第四,A/B 对比时先看小图,不要沉迷局部细节。整体光感不对,局部画得再精致,最后还是会显得廉价。
6.3 这个工作流可以继续扩展的方向
这套 PBR 材质化与光追重构的思路,除了纯二次元角色,还可以延展到三渲二风格的游戏角色、动画电影的角色集,甚至风格化场景道具。后续如果想把效率再提一截,可以建立一套材质预设库,把皮肤、头发、布料、金属的节点组合和 Roughness 遮罩存成模板,新角色进来直接套用,再根据角色特点微调参数。我的个人习惯是每次项目结束,都会把表现力最好的那版材质参数保存下来,并附上一张调节前后的对比图,下次同类角色可以直接参考。这不仅省时间,也让我逐渐积累出了一套属于自己的二次元 PBR 质感规范。