中EN
综合页

角色渲染

Character Rendering

角色是游戏中最受关注、技术最集中的资产。本页按"动起来 → 表面细节 → 材质着色 → 特殊材质(皮肤、毛发、布料)→ 光照与阴影 → 性能"的顺序,把 wiki 中相关概念页串成一套角色渲染方案的地图。每一层只给出要点与取舍,细节见链接页。

1. 让角色动起来

  • 蒙皮:顶点按权重受多根骨骼影响(线性混合蒙皮),非常适合 GPU;缺点是关节折叠、扭转和自相交,可用双四元数蒙皮改善。见 顶点混合与蒙皮。
  • 面部与形变:变形目标/混合形状在中性模型上叠加加权差分,常用于面部表情;无法用这些表达的过场动画可用压缩几何缓存回放。见 变形动画。
  • 蒙皮网格本身通常不变,只靠矩阵和顶点着色器驱动,所以可放进静态顶点缓冲。见 GPU 内存、缓冲压缩与多重缓冲。

2. 表面细节

切线空间法线贴图在不增加几何的情况下表现中尺度细节(皱纹、毛孔、布纹),需要每顶点切线框架;蒙皮后切线框架也要随骨骼变换。法线贴图的过滤是难点,与镜面抗锯齿相关。见 法线贴图与凹凸贴图 与 基于物理的着色(材质过滤一节)。

3. 材质着色:PBR 打底

部位着色模型关键点相关页
盔甲、金属饰品金属度参数化的微表面 BRDF菲涅耳与粗糙度;金属没有漫反射基于物理的着色
皮肤漫反射 + 次表面散射散射距离大于一个像素时 BRDF 不够,需要 SSS实时次表面散射、漫反射与次表面 BRDF
头发、皮毛发丝 BSDF(R、TT、TRT)条带几何 + alpha/顺序无关透明,体积自阴影毛发渲染
衣物布料 BRDF各向异性高光、边缘亮光、随视角变色布料着色

4. 皮肤:从便宜到昂贵

按开销递增:包裹光照 → 法线模糊 → 预积分皮肤 → 纹理空间或屏幕空间扩散 → 针对大尺度散射(如耳朵透光)的深度图技术。选哪一档取决于镜头距离与预算。见 实时次表面散射。

5. 毛发

头发用沿引导曲线挤出的四边形条带,需要处理透明排序;着色用 R、TT、TRT 分量的 BSDF,再加体积自阴影与多次散射近似;动物短毛可用壳与鳍或几何着色器挤出。见 毛发渲染,透明处理见 透明渲染与 Alpha 混合。

6. 光照与阴影

  • 环境光:预滤波高光立方体贴图(split-sum)负责高光,辐照度贴图或球谐负责漫反射。见 基于图像的光照。
  • 阴影:阴影贴图是基础,注意阴影痤疮与偏移;大场景中角色所在的近处级联获得更多纹素,见 阴影贴图 与 级联阴影贴图;PCSS 的接触硬化让脚下和衣褶处的阴影更可信,见 软阴影 PCF 与 PCSS。
  • 头发的自阴影需要专门的体积阴影近似(见毛发页);皮肤的透光可复用阴影深度图(见次表面散射页的深度图技术)。

7. 性能

  • 远处角色用 LOD 减少顶点处理和 quad 过度着色,切换时注意 popping。见 细节层次。
  • 皮肤 SSS、毛发透明与多层材质都是像素着色的大户,要在帧预算中统一考虑。见 帧时间预算与渲染性能。
flowchart LR
  A["骨骼动画 + 混合形状"] --> B["蒙皮后的顶点与切线框架"]
  B --> C["法线贴图细节"]
  C --> D{"材质分区"}
  D --> E["PBR 金属/电介质"]
  D --> F["皮肤 SSS"]
  D --> G["毛发 BSDF + 透明"]
  D --> H["布料 BRDF"]
  E --> I["IBL + 阴影贴图/CSM/PCSS"]
  F --> I
  G --> I
  H --> I

如上图,动画决定几何,材质分区决定着色模型,光照与阴影对所有分区统一处理。

  1. realtime_rendering_4ed.pdf 第 4、6、7、9、10、14 章(经由下列 wiki 页面综合)

相关页面

游戏美术顶点混合与蒙皮Vertex Blending & Skinning顶点混合(也叫线性混合蒙皮、enveloping、骨骼子空间变形)让一个顶点受多根骨骼的变换影响,按权重混合结果,使关节处的"皮肤"连续弯曲。它非常适合在 GPU 上执行;主要缺点是关节折叠、扭转和自相交,可用双四元数蒙皮等方法改善。游戏美术变形动画Morphing变形在两个模型之间插值,需要解决顶点对应和插值两个问题。顶点一一对应时可以逐顶点线性插值;更直观可控的形式是变形目标/混合形状:在中性模型上叠加加权的差分向量,常用于面部动画。过场中无法用这些方法表达的动画,可以用压缩后的几何缓存逐帧回放。图形学法线贴图与凹凸贴图Normal & Bump Mapping凹凸贴图是一类在像素着色中修改着色法线来表现中尺度细节的技术:几何法线不变,只改变光照计算使用的法线,从而在不增加几何的情况下显得更立体。最常用的形式是切线空间法线贴图,需要每顶点的切线框架;法线贴图的过滤是难点。图形学基于物理的着色Physically Based Shading基于物理的着色从光与物质交互的物理出发,用 BRDF 和反射方程计算表面沿视线方向射出的辐射亮度:镜面项来自微表面理论与菲涅耳反射,漫反射项来自局部次表面散射,布料、波动光学与分层材质再作扩展。本页是 RTR4 第 9 章的总览,并收录该章第 9.13 节的材质混合与材质过滤(镜面抗锯齿)。图形学漫反射与次表面 BRDFDiffuse & Subsurface BRDF Models漫反射项模拟不透明电介质中的局部次表面散射(金属没有)。其颜色是次表面反照率 \rho{ss};选用光滑表面还是粗糙表面模型,取决于表面不规则与次表面散射距离的相对大小,而不只是表面有多粗糙。光滑表面模型从 Lambert 出发,通过与镜面项的能量权衡改进;粗糙表面模型有 Disney 漫反射、Oren-Nayar、Gotanda、Hammon 等。本页对应 RTR4 9.9 节。图形学实时次表面散射Real-Time Subsurface Scattering蜡、皮肤、牛奶等高散射固体中,光在离入射点不远处重新射出;当偏移大于一个像素时就不能再用 BRDF 表示。实时方法从便宜的包裹光照、法线模糊、预积分皮肤,到纹理空间/屏幕空间扩散,再到针对大尺度散射的深度图技术(RTR4 14.6 节)。图形学毛发渲染Hair & Fur Rendering毛发由角质层、皮质、髓质三层构成,可看作用曲线离散化的体积。几何上用沿引导曲线挤出的四边形条带并配合 alpha/顺序无关透明;着色用 BSDF(R、TT、TRT 分量),再加体积自阴影与多次散射近似;动物短毛可用壳与鳍或几何着色器挤出(RTR4 14.7 节)。图形学布料着色Cloth Shading布料的微几何与其他材质不同:可能有高度重复的编织结构、垂直伸出表面的纤维,或两者兼有,因此常需要专门的着色模型来表现各向异性高光、粗糙散射(半透明纤维造成的边缘亮光)以及随视角的颜色变化。布料 BRDF 分为经验模型、基于微表面理论的模型和微圆柱模型三类。本页对应 RTR4 9.10 节。图形学透明渲染与 Alpha 混合Transparency & Alpha Blending本页讲最简单的"视角相关"透明:半透明物体只衰减其后方物体的颜色。z-buffer 每像素只存一个表面,所以透明物体通常要从后往前用 over 运算符混合;顺序无关透明 (OIT) 方法用多遍渲染、逐像素链表或近似公式避免排序,各有内存、性能或准确性代价。预乘 alpha 让过滤、混合和合成更正确高效。图形学基于图像的光照Image-Based Lighting用纹理数据(通常是相机拍摄的 360° HDR 全景)照明场景称为基于图像的光照。实时引擎常用预滤波的高光立方体贴图(配合 split-sum 近似)处理高光,用辐照度环境贴图或球谐系数处理漫反射。它们只依赖少量光照图元而不需要知道场景其他表面,因此仍属局部光照。图形学阴影贴图Shadow Mapping阴影贴图 (Williams, 1978) 先从光源位置渲染深度,再从相机渲染时把每个点到光源的距离与贴图中存的深度比较:更远就在阴影中。它开销可预测(生成约与图元数成线性、查询为常数时间),非常适合 GPU,是任意表面阴影最常用的算法。主要问题是分辨率、深度精度带来的混叠、阴影痤疮和漏光。图形学级联阴影贴图Cascaded Shadow Maps级联阴影贴图 (CSM) 把视锥沿视线方向切成几段,每段用一张紧贴它的阴影贴图,使近处获得更多阴影纹素。它实现简单、能覆盖巨大场景、没有严重的最坏情况,因此被大量应用。关键问题是深度如何划分、近平面放在哪里、怎样避免抖动和级联边界的质量突变,以及如何降低多张贴图的开销。图形学软阴影 PCF 与 PCSSSoft Shadows with PCF & PCSS百分比渐近过滤 (PCF) 在阴影贴图上取多个样本,分别与表面深度比较后混合结果,得到伪软阴影,但半影宽度恒定。PCSS 先搜索附近遮挡体的平均深度,再据此决定过滤宽度,从而在接触处硬、远处软(接触硬化)。图形学细节层次Level of Detail细节层次 (LOD) 在物体对图像贡献变小时改用更简单的表示。LOD 系统由三部分组成:生成(简化或手工制作多个版本)、选择(按距离、投影面积等收益函数挑选)、切换(尽量减少跳变 popping)。LOD 主要减少顶点处理,也通过减少 quad 过度着色降低像素开销;进一步还可在预算约束下全局选择 LOD,实现时间关键(恒定帧率)渲染。图形学GPU 内存、缓冲压缩与多重缓冲GPU Memory, Buffer Compression & Multiple Buffering带宽是稀缺资源。GPU 通过独立显存或统一内存架构 (UMA)、多级缓存与按瓦片存储提高局部性,并用基于瓦片表的无损压缩和快速清除减少渲染目标的带宽(注意:无损压缩只省带宽,不省内存)。颜色缓冲有高彩、真彩、深色三种模式;显示控制器以固定刷新率或 FreeSync/G-sync 自适应同步把颜色缓冲送到显示器;单/双/三缓冲在撕裂、等待与延迟之间取舍。综合帧时间预算与渲染性能Frame Budget & Rendering Performance本页把 wiki 中分散在 RTR4 第 18~23 章的性能知识串成一条线:一帧的时间预算由最慢的管线阶段决定,先用毫秒帧时间度量并定位瓶颈,再按瓶颈所在位置——CPU/驱动、几何、像素、带宽/内存——选用对应手段;最后从 GPU 硬件机制(占用率、HiZ/early-z、压缩、分块架构)理解这些手段为何有效。各结论的细节与出处见所链接的概念页。游戏美术三点布光Three-Point Lighting经典 key / fill / backlight(rim) 术语页。第 1 版独立成 Ch3;第 3 版并入 Ch5 角色章,并强调变体、反公式化,以及 bounce/spill/kick/spec 等扩展。角色动画、SSS、眼发等深度内容见 生物与角色灯光。

被这些页面引用1 篇

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原