type
status
date
slug
summary
tags
category
icon
password
fullWidth
fullWidth

用虚幻引擎5为《幻塔》定制高品质动画流程风格化渲染管线

效果展示

场景渲染效果
场景渲染效果
角色渲染效果
角色渲染效果

角色渲染流程

1. 渲染流程拆解

  • 2D原画分析->风格制定与效果拆解
  • 基础二分->实现初步立体感,确定画面调性
  • 场景投影->反映角色与环境的交互
  • 多光源->展现丰富的环境光源信息
  • 高光->表现材质属性,提升画面高亮阈值
  • 全局照明->让角色融入环境
  • 边缘光->凸显立体感,增加画面层次
  • 眉眼细节->透眉和透瞳让角色表情更灵动
  • 描边->增加角色细节层次与结构性

2. Ramp二分色:基于半兰伯特的Ramp二分色系统

  • 通过修改Ramp贴图和Shadow Offset(阴影偏移参数,决定阴影面积大小)锚定整体亮暗结构
  • Ramp Curve Atlas写入后处理体积供场景镜头切换
基于半兰伯特的Ramp二分色
基于半兰伯特的Ramp二分色
兰伯特和Ramp二分色渲染效果对比
兰伯特和Ramp二分色渲染效果对比

3. 整体阴影方案

阴影类型
实现方式
暗面阴影
半兰伯特N*L(不考虑视线)区分亮暗面
细节自阴影
阴影贴图、深度偏移阴影、半程向量(考虑视线)自阴影
场景物件投影
角色对场景的投影和场景对角色的投影
  • 阴影贴图:在贴图中绘制常暗部分,如发缝、衣服褶皱
阴影贴图的应用
阴影贴图的应用
阴影贴图的应用
阴影贴图的应用
  • 深度偏移自阴影:偏移屏幕空间深度图,比较偏移后的深度和当前深度(本质上是平面处理)
  • 半程向量自阴影:用半程向量作为光照方向替代原来的平行光方向,避免在某些光照情况下阴影面积过大
💡
半程向量(h)是光线方向向量(l)和视线方向向量(v)的归一化和,即:
在 Blinn-Phong 光照模型中用于计算镜面反射的强度
半程自阴影和原生自阴影对比
半程自阴影和原生自阴影对比
根据材质和Flag对阴影进行屏蔽
根据材质和Flag对阴影进行屏蔽

4. 面部阴影方案

阴影类型
实现方式
暗面阴影
SDF贴图阴影,并屏蔽原生面部阴影
细节自阴影
头发阴影
场景物件投影
模糊化后的场景物件投影
  • SDF贴图阴影:通过比较光线方向与SDF贴图中的距离值来决定某个像素是否在阴影中
  • 头发阴影:偏移头发的遮罩,根据光照方向投射到脸部;并根据深度图屏蔽脸后头发的阴影
头发遮罩偏移得到阴影
头发遮罩偏移得到阴影
应用效果
应用效果
  • 场景物件投影:场景物件的阴影经过模糊化处理,让投射到脸部的阴影更柔和

5. 整体高光方案

  • 一套PBR和一套NPR高光,在不同情况下分别使用或混合使用
PBR高光和NPR高光
PBR高光和NPR高光
  • 头发高光方案
    • 尝试了三套高光方案
三套高光方案
三套高光方案
  • 眉眼细节
    • 透眉和透瞳,通过逐材质的叠加Pass通道,让眉眼在头发上方出现
    • 💡
      注:除了逐材质Pass叠加,还有深度偏移法;在渲染时对眉毛和眼睛的深度值进行微小偏移,使其在头发之前显示。
不同程度透眉和透瞳的效果
不同程度透眉和透瞳的效果

场景渲染流程

1. 场景效果拆分

效果
作用
基础漫反射和阴影
确定场景的色调结构基底
场景高光
场景光感提升与结构强调
环境反射
暗示环境材质表面属性
场景勾线描边
突出场景细节与结构

2. 场景高光

  • 结构高光:计算模型的曲度,生成Mask,用以提亮边缘、暗示形体
结构高光
结构高光
  • 边缘光
    • 基于Shadow Mask(屏幕空间深度图)的边缘光
    • 基于球法线的N*L遮罩,噪声图影响边缘光,增强手绘感
    • 菲涅尔边缘光提亮,增加层次感,模拟反弹GI

3. 场景描边

  • 根据深度(远近)将描边分为3级;并对中近景的描边做抗闪烁处理和风格化处理
  • 远景:屏幕空间深度描边
  • 中景:屏幕空间深度描边+Id描边
  • 近景:屏幕空间深度描边+Id描边+法线外扩描边

4. 多光源处理

  • 利用给每个光源设置Id来决定光源的表现效果
    • Id == 0:晕染灯光,纯亮度晕染而不产生阴影
    • Id == 1:二分灯光,会产生阴影
    • Id == 2:仅产生边缘光
  • 全局光照
    • 对原生lumen的全局光照进行法线抹平,减少立体感过强破坏动漫感
    • 💡
      注:法线抹平是一种用于使模型表面看起来更加平滑和自然的技术,通过计算每个顶点的相邻面的法线的平均值来平滑法线。
法线抹平
法线抹平

5. 环境反射

  • PBR会的高光反射环境信息,风格化渲染中反射会被降频,色块感强
    • PBR渲染反射表现和NPR渲染反射表现
      PBR渲染反射表现和NPR渲染反射表现
  • 添加仅基于反射的Kuwahara滤镜,对反射做色块化处理
    • Kuwahara风格化滤镜
      Kuwahara风格化滤镜

6. 额外HDR高光

  • 由于降频降低了反射的能量,添加额外HDR高光弥补损失的亮度信息,以确保材质质感正确

后处理

参考动漫中的后处理效果
参考动漫中的后处理效果
后处理关闭VS后处理开启
后处理关闭VS后处理开启

1. 后处理效果拆分

效果
作用
Diffusion柔光
提升画面的暗部亮度,提高画面质感
背景透光
氛围晕染,让角色融入环境
暗部晕染
提升暗部的通透感

2. Diffusion柔光

  • 柔光滤镜通过扩散入射光,使得图像的亮部变得模糊,让图像更柔和
    • 是否开启Diffusion柔光对比
      是否开启Diffusion柔光对比
  • 对SceneColor做模糊之后用“变亮”的方式叠加,只会提升暗部的亮度
Diffusion柔光实现方式
Diffusion柔光实现方式

3. 背景透光

  • 背景光远远超过角色本身的亮度时,使用这个效果可以营造角色被光包裹的氛围
是否开启背景透光对比
是否开启背景透光对比
  • 用角色Mask将场景中的角色剔除,再进行模糊,把模糊后的图像叠回Mask,再用柔光叠回角色
背景透光实现方式
背景透光实现方式

3. 暗部晕染

  • 让亮部的颜色过渡到暗部,解决暗部过于“沉闷”的问题
是否开启暗部晕染对比
是否开启暗部晕染对比
  • 模糊阴影遮罩,将模糊结果叠入原阴影,再混合到Scene Color中
暗部晕染实现方式
暗部晕染实现方式
 
Relate Posts
游戏AI行为决策-分层任务网络(HTN)的简单应用
Lazy loaded image
游戏AI行为决策-目标导向行为规划(GOAP)通用框架
Lazy loaded image
自制Python任务调度模块-MySchedule
Lazy loaded image
游戏算法-A*搜索算法知识梳理和通用框架
Lazy loaded image
游戏算法-Floyd搜索算法知识梳理和通用框架
Lazy loaded image
捣鼓记录:Unity内置渲染管线实现角色NPR渲染的简单实践
Lazy loaded image
UFSH摘要:虚幻引擎5 Motion Matching实践简介 by 王远明学习笔记:.NET网络通信模块与Unity网络开发
Loading...
Latest posts
工作笔记:一些乱七八糟的踩坑记录
2025-4-17
游戏算法-Floyd搜索算法知识梳理和通用框架
2025-4-2
游戏算法-A*搜索算法知识梳理和通用框架
2025-4-2
游戏AI行为决策-目标导向行为规划(GOAP)通用框架
2025-3-23
自制Python任务调度模块-MySchedule
2025-3-20
学习笔记:23种设计模式
2025-3-19