
先说一个我经常拿来安利朋友的例子你玩《罪恶装备奋战》Guilty Gear Strive的时候角色放大招、镜头快速旋转、头发被气流吹散所有动作明明都发生在三维空间里可只要随手截一张图发给不玩游戏的人对方的第一个反应永远是“这又是哪部新番动画”。这种用3D模型和引擎渲染却做出浓烈2D手绘动漫感的技术路线圈内称为“三渲二”而Arc System Works这几代《罪恶装备》基本把三渲二做到了行业天花板。这篇拆解不打算只停在“用了日式卡通着色器”这种结论层面而是想认真聊聊为什么很多游戏做卡通渲染角色看起来还是像会动的塑料手办《罪恶装备》里的角色却一眼就能被大脑判定为“2D动画角色”。我会从光影、线条、动作、表情一路拆到可以落地的执行顺序适合想做动漫风格3D项目的技术美术、游戏开发者和纯粹好奇的玩家。哪怕你完全不碰引擎看完应该也能搞明白“三渲二骗过眼睛”的底层逻辑。1. 为什么一眼就觉得它是2D动画3D感到底来自哪里1.1 物理正确的光照反而是3D感的元凶普通3D游戏追求的是“物理正确”光照在皮肤上连续渐变高光跟着视角移动颧骨和鼻翼的阴影会因头部转动而细腻变化。这些特性放在写实游戏里是优点但放进动漫风格里就会立刻出卖你。因为手绘动画里压根不存在这种“连续物理渐变”——动画角色的亮部和暗部是被画师精心切成的一块一块色块中间没有过渡甚至阴影边缘是一条干脆的斜线。我见过很多项目做三渲二第一反应是把漫反射换成Toon Ramp色阶渐变曲线然后觉得“差不多了”。结果渲染出来一看角色额头上的高光还是PBR那套反射计算下巴边缘还残留着次表面散射那种柔柔的透光感人物站在场景里就像一尊上了色的雕塑。问题不在于材质球而在于整个光照框架仍然是3D写实那套逻辑光源方向真实、轮廓透视真实、阴影计算真实。可“二次元”的核心恰恰是反物理的。所以判断一个三渲二作品是否成功别看它用了多少非真实渲染技巧先看它敢不敢牺牲物理性。ArcSys最狠的地方就在这里他们几乎重构了光照背后的几何依据而不是简单改改着色公式。1.2 二维观感的四根支柱线条、阴影、形变、节奏如果把“2D动漫感”拆到底我会把它分成四根支柱缺一根都会露馅。第一根是线条。手绘动画里的轮廓线、结构线、褶皱线都是“画上去的”有的地方粗有的地方断有的地方干脆消失。3D模型不会天然自带这种选择性线条必须专门做一套线条生成方案。第二根是阴影。动画的阴影不是“光源照射的结果”而是画师基于审美摆上去的色块。比如少女角色脸颊上的红晕阴影不是靠计算得来的就是画师觉得这个位置应该有一块颜色。第三根是形变。手绘动画里角色快跑时躯干会被拉长挥拳时手臂会整个变形伸直几何上完全不真实但动态冲击力极强。第四根是节奏。手绘动画的帧率通常不是均匀的一拍二每秒12帧、一拍三每秒8帧带来的顿挫感是动画灵魂的一部分。新手做三渲二常常忽略这一层结果画面每一帧都清晰丝滑反而没有了“动画味”。为了让你更直观地理解这四根支柱我做个简单对比维度写实PBR角色普通卡通渲染ArcSys式三渲二高光连续移动的物理反射部分压平但仍有3D残留手工设计高光区域或干脆用颜色块阴影过渡连续渐变用Ramp量化成几档每档阴影的边缘、位置都由人工控制轮廓线无统一背面放大描边视角相关、粗细抖动、按材质区分形变严格骨骼蒙皮偶有挤压拉伸大量非等比缩放、拉伸帧、顶点修正动作节奏平滑插值平滑插值故意保留手绘顿挫与关键帧抽动我自己的观察是差的渲染都在逐项缩小差距好的渲染却是在四根支柱上同时做“协作欺骗”。ArcSys真正领先的是他们把这几套机制整合成了同一个美术目标。2. 法线重构ArcSys三渲二最核心的光影命门2.1 法线是什么为什么普通法线会立刻“出卖”3D模型法线这个东西你可以把它理解成模型表面每个点“脸”朝向的方向。光照计算时会拿法线和光源方向点乘得出这个点该多亮。高模角色表面法线变化极其丰富鼻翼两侧法线转得很快脸颊颧骨处法线有一个明显的折角于是光打上去就会形成细腻的阴影过渡。问题恰恰出在这里。手绘动画的画面里角色的鼻翼阴影不是一条平滑渐变带而是一小段明确的暗色块脸颊的暗部更是“一套固定形状”不会因为镜头转了5度就变成另一副样子。普通3D模型由于法线来自真实几何结构无论你怎么挂Ramp曲线把灰度量化阴影分界线出现的位置都遵循物理几何逻辑这与画师凭审美摆出来的阴影色块完全对不上。这就是“普通卡通渲染像手办”的关键原因。不是着色器不够动漫而是法线数据本身还是3D几何那套逻辑。模型表面上每个点都知道自己长在立体结构上随便怎么掩盖都会通过光影方向泄露出来。2.2 椭球法线重构把角色当作一个被重新包起来的光影体块ArcSys在《罪恶装备 Xrd》时期的技术分享里最让我印象深刻的思路就是“法线重构”。他们发现直接使用高模法线做卡通渲染会得到过于立体的光影于是选择不信任原始法线而是用一个人工构造的体块去重新定义整个角色的明暗走势。具体做法大致是这样的先用一个包裹住角色的大椭球体或者其他理想化几何体把这个椭球体表面的法线重新投影回角色模型的每一个表面点上生成一张“修正法线贴图”。这样一来角色身上所有明暗过渡都变成了从一个非常圆润、理想的弧面上产生的暗部区域完整、连续、干净并且有明确的区域边界。为什么用椭球而不是标准的球体因为人体不是球体。头、胸腔、四肢的长宽比例差异很大一个单纯球体提供的法线方向过于对称会导致角色身上各个部位的明暗节奏完全一样失去手绘动画里常见的“头亮、身体暗”这种设计感。椭球可以在不同轴向上控制曲率让光照走势更符合人物轮廓。当然法线重构会带来一个明显副作用角色模型上的细节全被抹平了。鼻子、嘴唇、肌肉起伏这些高模特征一旦套用椭球法线光影上全都看不出来。因此后续必须追加一张“细节法线贴图”专门负责材质纹理层面的信息比如布料编织、皮革褶皱、金属划痕。这张细节法线的强度要克制频率也要控制不能让它重新把3D结构的立体感拉回来。2.3 分工处理头发、脸颊、褶皱不能共用一套法线和材质如果全身上下都套同一套椭球法线画面会显得太“圆”、太塑料。ArcSys的做法是分材质处理。头发是最典型的例子。椭球法线会把头发压成一大坨平滑的体积下面藏着的一缕缕发束全看不出来了。所以头发部分通常会用“片状法线”每一缕发束的内外两侧分别给一个固定法线方向光照上去时每缕头发都会清晰形成一条独立的亮片和暗片模拟出画师分组画头发时的笔触。脸颊、腮红这类由审美决定的位置就更不能依赖实时光照了。手绘动漫角色脸颊的阴影线和红晕位置基本是固定的镜头再怎么转画师也不会让腮红跑到鼻尖上去。因此这类区域是美工直接在漫反射贴图里画好固定色块再让实时色阶阴影和它叠加。这样角色转头时红晕还是在“应该的地方”只是被动态光源轻微改变明度。衣物的褶皱则需要靠材质ID区分。有的褶皱在动画里应该是柔影边缘模糊有的是硬影一条线切开。给不同ID分配不同Ramp参数后美工就能像画师选笔刷一样为每种褶皱选择合适的光影硬度。这一整套分工下来角色身上每一块区域的光影都不是“算出来”的而是“设计出来”的。这也是三渲二和普通卡通渲染最本质的差异。3. 轮廓线不是描边线条粗细、断笔与材质分工3.1 三种轮廓线方案对比为什么简单描边救不了二次元很多初学者一想到2D感第一反应就是描边。但描边和描边差别很大常见实现有三种效果天差地别。第一种是模型外扩法Inverted Hull。做法是把模型复制一份法线翻转再沿着法线方向向外膨胀一圈渲染成纯色作为轮廓。优点是便宜、实现简单、消耗低很多小团队项目都在用。缺点是线条粗细无法精确控制角色快速运动时容易“破皮”对于披风、头发这类大曲面容易产生波浪状的不稳定边缘而且在近大远小的镜头下线条宽度不自然。做完之后你会得到一个“处处等宽黑色边缘”的描边和手绘线条完全两回事。第二种是屏幕空间后处理边缘检测。通过深度和法线差异找轮廓线条可以保持屏幕宽度恒定。但问题是它会把所有结构边缘都检测出来——衣料上的褶皱、头发上的分束、腰带的凸起全都会变成线。如果每根褶皱都要出线画面会脏成一团。这就需要额外维护一个ID Buffer按材质ID决定哪些部位参与检测美术工作量很大。第三种是ArcSys这类项目走的方向以屏幕空间线条为主体同时叠加模型曲率、视角方向、材质ID的选择性控制。线条的粗细不是固定的而是跟观察角度、轮廓处的曲率、距离挂钩。靠近下巴和颧骨的强调线会加粗受光面的轮廓线会变淡甚至转成暖色调某些内脸部位直接禁线。三种方案对比如下方案优点缺点适用场景模型外扩性能极好接入简单线条死板、破皮、难以控制低要求卡通渲染后处理边缘检测屏幕宽度恒定、线条灵活噪声多需要维护ID buffer风格化渲染中阶方案视角相关轮廓接近手绘线条语气可差异化控制需要多层数据配合成本最高高规格三渲二项目3.2 让线条有“笔触感”抖动、断线与受光变色就算实现了视角相关轮廓一次性画出来的线条仍然太“机械”。手绘线条本身是不完美的它会有轻微粗细抖动会在某些转角处断开会在快速扫过时留下一截残线。这些“错误”恰恰是手绘生命感的一部分。想模拟这种感觉工程上并不神秘。可以给线条宽度乘上一张手绘噪点贴图让宽窄产生类似笔压的变化也可以在屏幕空间对线条的UV做微小扰动制造“手抖”还可以通过材质ID给特定部位施加断线遮罩让该断的地方留下空隙。线条颜色也不能永远是死黑。在受光侧和亮背景前手绘线条常常会变浅或者带上环境色。可以通过取样背景亮度或者在光照计算里把轮廓线颜色向漫反射色靠拢来实现这种随光影变色的效果。一个很实用的经验是三渲二项目里大多数时候先调线条节奏的控制比先调阴影更有效果。阴影做得再精细如果轮廓线是一条光滑的等宽黑边画面依然会立刻滑向“3D建模展示”那一边。3.3 色阶化阴影固定阴影与实时阴影的分工线条之外阴影色阶是画面能否“立住”的关键。常见的卡通渲染是拿漫反射结果经过一张Ramp曲线量化成两到三档亮、暗、中间色。但要做出ArcSys那种手绘质感阴影不是简单分档就够还要解决“哪些阴影是实时的哪些阴影必须是画死的”。实时色阶阴影负责的是角色大形体的明暗关系比如人物站在强光下半边身体进入暗部头部在肩部投下影子。这些东西需要跟随光源和动作变化。固定阴影负责的是审美层面的细节像是脸颊阴影、刘海在额头的投影、眼部下方淡淡的青影、下颌在颈部的投影。这些阴影的形状和位置美工会在贴图里直接画好。它们是“绑定在角色表皮上的图案”不随光源旋转而移动。这样做最大的好处是角色形象稳定。如果脸颊阴影完全依赖实时计算转个头阴影形状就变了画师精心设计的美感也毁了。固定阴影加实时阴影的分工相当于把“画师的摆布”和“3D世界的真实感”做了分区互不干扰。4. 动作的二次元化帧率顿挫、形变拉伸与表情组件4.1 60帧渲染与12帧表演游戏动画如何模拟手绘节奏聊完画面本身的质感得进入一个经常被忽略的领域动作设计。很多三渲二画面单帧截图很美动起来却仍然“3D感”十足。问题通常出在节奏上。引擎里角色是以每秒60帧甚至更高帧率平滑渲染的但手绘动画的原始素材往往是每秒12帧或8帧中间靠动画师一张张补出动作。这种低帧率造成了一个特殊效果快速运动时角色的位置其实是一段一段跳着前进的而不是连续滑移。观众不会觉得卡反而会觉得“有力度”。ArcSys在动作处理上的思路是引擎保持流畅但关键帧设计刻意保留手绘动画的顿挫感。最典型的是打斗动作中“蓄力停帧”出拳之前先静止一拍让玩家看清预备姿势然后下一帧直接爆发出拳收招时又拖慢半拍让整个动作看起来像动画演出里“停一下再爆发”的节奏。对于技术美术来说这意味着动画曲线不能全都用线性或平滑插值处理。该用Step插值的地方要果断台阶式跳变发力瞬间的曲线要故意做得不圆滑甚至可以通过曲线编辑器手动制造“位置跳变”。4.2 允许模型“说谎”拉伸帧、非等比缩放与蒙皮策略如果严格按骨骼旋转去驱动蒙皮角色动画很快就会显示出3D味因为手绘动画里的肢体运动并不严格遵循关节铰链结构。挥拳时手臂可以整体拉长奔跑时躯干可以违反比例地延展这些夸张效果靠的是动画师的“形变撒谎”。ArcSys在动作管线中大量使用非等比缩放骨骼。拳打出去的瞬间手臂骨骼在运动方向上Scale到110%甚至更多模型跟着拉伸视觉上产生类似手绘残影的冲击感。更进一步的还有“Smear Frame”拉伸模糊帧动作速度超过某个阈值时直接把整个模型沿运动方向拉扯有时配合模型透明度或残留影像模拟手绘动画里那种连笔带过的中间帧。蒙皮方面也有讲究。常规蒙皮算法在手肘弯曲时会自然产生挤压隆起这在写实角色里是优点在动漫风格里会破坏干净轮廓。想让肘部像动画里那样“直直折叠”通常需要手工修正顶点权重甚至在弯曲部位插入形状键来解决。这里分享一个经验动画的三渲二改造应该和画面渲染同步调整而不是等动画全部K完再去套渲染。动画师要先确认角色可以接受非等比缩放才会在动作里大胆使用拉伸如果美术不允许任何形变就等于砍掉了三渲二动作表现最重要的一只手。4.3 脸是一个独立的二次元组件系统脸部是整身角色里最敏感的区域因为观众对脸部细节的注意力远高于身体。ArcSys对脸部几乎采取了一种“把2D贴在3D脸壳上”的组合策略。眼睛是最典型的例子。瞳孔、高光、睫毛都不是靠几何结构渲染出来的而是由专门的2D贴图组件叠在眼球表面类似一个一直朝向镜头的组件。瞳孔高光的位置、大小、颜色都是动画师逐帧或者通过参数控制的以保证角色无论从哪个角度观看眼睛都保持着动漫角色那种“镜头感”。嘴型和表情则依赖大量形状键。3D脸部模型会预先雕刻好一排口型比如“啊”“衣”“呜”“哎”以及眉毛、眼睛、嘴角的极端变形形状。动画系统里并非简单地对形状键做线性融合而是需要按手绘嘴型的审美规则做权重调整。比如表现吼叫时嘴部轮廓会被特殊放大外轮廓线也要同步加粗这些都需要美术通过材质ID单独处理。脸部的轮廓线处理也值得单独学习。动漫角色的下巴、颧骨线都有明确的“强调线”侧脸转动过程中脸的侧面轮廓需要始终保持一条优美的弧线不能忽然像3D模型一样鼓成一团。这通常需要在建模阶段就给脸部预留好中间形状再配合轮廓线系统单独控制脸部线条的粗细和颜色。我经常跟朋友说把《罪恶装备》的脸部剪下来放到动画作品里你根本分不清哪个是3D渲染的角色。因为他们的脸本质上就是由一个个2D动漫组件组合起来的而不是一个纯粹的3D实体。5. 从Xrd到Strive的启示把这套管线落到自己项目的顺序5.1 Xrd是证明题Strive才是完全体《罪恶装备 Xrd》在2014年刚公开时整个行业都震惊了3D建模的角色质感怎么会跟手绘动画这么接近那个阶段ArcSys的核心任务是“证明可行”所以他们做了大量关于法线重构、色阶阴影、轮廓线的激进实验画面已经有很强的动画感但放到今天看部分镜头下角色的材质还是略显厚重运动表现也没有完全脱离3D步态。到了《罪恶装备奋战》整个画面明显更“洗练”了阴影更干净轮廓线更有弹性动作节奏的顿挫感更接近高水准动画角色在复杂镜头里也保持了稳定的二维观感。它的进步并非靠某一个革命性技术而是把前代积累的渲染思路和动画经验全部吃透再在大量细节上打磨。这里有个重要的认知ArcSys的底层渲染技术并非一天练成他们把三渲二沉淀成了自己的核心资产。引擎可以从这个换到那个但法线重构、材质分工、轮廓线系统、动画节奏控制这一整套美术流程是跨引擎的。对打算入行的团队来说与其羡慕他们用了什么引擎不如学习这套“美术先确立规则技术去实现规则”的顺序。5.2 落地清单五步把三渲二管线搬进自己项目如果你想在自己项目里复刻这套思路不需要一上来就搭一个庞大管线。我建议按下面五步顺序推进每步都能看到明显的画面变化。第一步做风格参考提取。找一部风格接近的2D动画抽十几张静止帧把每张帧的明暗分布、阴影形状、线条粗细、高光位置都标出来做成项目的“对照色卡”。这一步不能省因为后续所有调参都是在向这些色卡靠拢。第二步做法线重构。在DCC软件里创建一个包裹角色的椭球体把椭球表面的法线投影回角色表面生成修正法线贴图。模型先统一吃这张法线把原本的高模结构光影压平。第三步做分级Ramp材质。给材质系统加入多档阴影曲线通过Material ID区分不同部位的阴影硬度。同时把脸颊阴影、刘海投影这类固定阴影画进漫反射贴图。第四步搭视角相关轮廓线。先做完后处理边缘检测再加ID Buffer过滤最后给线条宽度接上手绘噪点控制。这个阶段重点不是做香而是确保“可调”方便后续根据每个角色单独调风格。第五步动画面貌调整。把拉伸缩放权限交给动画师给关键动作补Smear Frame并专门花时间打磨脸部表情组件和口型形状键。5.3 会踩的坑分辨率、AO、阴影方向与量产节奏代码和引擎层面的坑我就不罗列了说几个必须提前知道的经验。第一个是烘焙AO会毁掉干净阴影。法线重构之后如果还按常规方式把AO阴影烘焙进贴图角色身上会出现很多细碎的暗角和动画感的“干净色块”冲突。建议把AO强度压到非常低或者直接取消改用固定阴影贴图来维持体积感。第二个是轮廓线宽度在不同分辨率下会翻车。一个4K显示器和一个手机屏幕上同样的线条宽度观感完全不同。实现时必须让线条宽度按屏幕高度做缩放补偿否则同一个角色在不同设备上的“2D感”会差出一大截。第三个是阴影方向不要完全跟着实时主光源走。三渲二的角色阴影如果完全实时人物转身时脸上的阴影分界线会像灯光扫描一样扫过这在2D动画里几乎不会出现。最好还是用“固定主光方向局部实时修正”的方式让角色在任何镜头里都保持稳定的体积感。第四个是量产节奏。千万别一开始就让全队投入做十几个角色先选一个角色完整跑通以上五步确认观感对上了风格参考再开始批量生产。我见过太多项目死在一上来就调一大堆Shader参数结果一个角色都没做完风格越来越飘。最后再聊一点个人体会。我做三渲二项目时最受用的一句话是别一开始就沉迷色阶曲线和轮廓算法。ArcSys强不只是技术优势更在于他们先把2D手绘的审美规则拆得足够细然后反过来约束3D渲染。你先让团队理解“动画感到底由哪些元素构成”再拿出那张远景色卡去要求每一步产出比堆再多工具和代码都管用。这个顺序如果反了参数调得再高画面大概率还是差口气。