概念页
变形动画
Morphing
变形在两个模型之间插值,需要解决顶点对应和插值两个问题。顶点一一对应时可以逐顶点线性插值;更直观可控的形式是变形目标/混合形状:在中性模型上叠加加权的差分向量,常用于面部动画。过场中无法用这些方法表达的动画,可以用压缩后的几何缓存逐帧回放。
基本变形
- 任意两个模型的拓扑、顶点数、连接关系可能不同,建立顶点对应关系是困难的研究问题。
- 已有一一对应时,对 先求 ,再 。书中示例在顶点着色器中每帧插值位置和法线。
变形目标 / 混合形状
- 中性模型 , 个姿态 ,预处理得到差分 。
- 得到完整微笑,0.5 得到半微笑;也可用负权重和大于 1 的权重。例如对"悲伤眉毛"用负权重得到"开心眉毛"。差分可叠加,所以眉毛和嘴巴的姿态能同时使用、互相独立。
- 这给动画师很大控制力。书中举例:《inFAMOUS Second Son》角色 Delsin 的面部用混合形状驱动;《The Order: 1886》同时使用蒙皮与变形。
实现与组合
- 姿态空间变形 (pose-space deformation) 结合了顶点混合和变形目标。
- 可把目标姿态间的位移存进预计算的顶点纹理。
- 支持流输出和顶点 ID 的硬件允许单个模型使用更多目标,完全在 GPU 上计算。
- 用低分辨率网格做蒙皮,再通过曲面细分和位移贴图生成高分辨率网格,可避免对高精模型的每个顶点做蒙皮。
几何缓存回放 (RTR4 4.6)
- 过场动画可能需要上述方法无法表达的高质量动作。直接存储每帧全部顶点,对 3 万顶点的简单模型可达 50 MB/s。
- 压缩方法可把内存降到约 10%:
- 量化:位置和纹理坐标用 16 位整数存储(有损);
- 空间预测:平行四边形预测——三角形带中下一个顶点预测为当前三角形沿当前边翻折得到的位置,只编码差值;
- 时间预测:类似 MPEG,每 n 帧做一次空间压缩,其间按上一帧的位移预测下一帧。
- 压缩后数据量足以实时流式加载。
对比
| 方法 | 适合 | 代价 |
|---|---|---|
| 骨骼蒙皮 | 肢体等关节运动 | 关节处有缺陷 |
| 变形目标 | 面部表情等局部独立控制 | 每个目标都要存差分 |
| 几何缓存 | 过场中任意复杂的动作 | 数据量大,需压缩与流式加载 |
GEA 的视角:变形目标在动画方法中的位置(卷 II 13.1.3、13.1.5)
- GEA 把逐顶点动画(动画师逐顶点制作并导出运动数据)和变形目标动画区分开:前者能做出任何形变,但每个顶点都要存随时间变化的数据,实时游戏中很少用;后者只做少量极端姿势,运行时在它们之间逐顶点 lerp(卷 II 13.1.3)。
- 面部由约 50 块肌肉驱动,变形目标让动画师完全控制面部每个顶点,所以常用于面部动画(GEA 以《最后生还者 重制版》中 Ellie 的面部变形目标为例)。也有工作室用含数百关节的面部绑定代替,或两者结合:关节摆出主姿势,变形目标做细微调整。
- 作为压缩方法:GEA 把各种动画方法看成压缩。变形目标在逐顶点动画上再加约束,顶点只能沿预定义位置间的直线移动;骨骼动画则让大量顶点跟随少量关节。面部顶点运动相对独立,用骨骼逼真表现所需关节数接近顶点数,压缩优势消失,这是面部偏好变形目标的原因之一;另一个原因是动画师更习惯这样工作(卷 II 13.1.5)。完整对比见 骨骼、姿势与动画片段。
- 与本页「变形目标 / 混合形状」的差分公式相比,GEA 只描述了"在极端姿势间 lerp",没有给出差分向量叠加的形式。
出处
- realtime_rendering_4ed.pdf 第 4 章 Transforms
- Game_Engine_Architecture_4th_Edtion_Volume_2_-_Jason_Gregory.pdf
- Jason Gregory《Game Engine Architecture》第 4 版(2026)卷 II 第 13 章 13.1.3、13.1.5 节
相关页面
游戏美术顶点混合与蒙皮Vertex Blending & Skinning顶点混合(也叫线性混合蒙皮、enveloping、骨骼子空间变形)让一个顶点受多根骨骼的变换影响,按权重混合结果,使关节处的"皮肤"连续弯曲。它非常适合在 GPU 上执行;主要缺点是关节折叠、扭转和自相交,可用双四元数蒙皮等方法改善。图形学顶点着色器Vertex Shader顶点着色器是程序员直接控制的第一个管线阶段,逐个处理输入顶点,至少要输出顶点在齐次裁剪空间里的位置。它不能创建或删除顶点,顶点之间也不能传递结果,正因如此可以大规模并行。游戏开发 · UE5动画蓝图与动画系统Animation Blueprint & Animation SystemUE5 角色动画以动画蓝图 (Animation Blueprint) 为核心:它每帧为骨骼网格体 (Skeletal Mesh) 计算最终姿势。动画蓝图内部用状态机 (State Machine) 组织“何时播什么”,用混合空间 (Blend Space) 按速度、方向等参数连续混合,用蒙太奇 (Animation Montage) 在插槽 (Slot) 中插播攻击、交互等一次性动作,用 Control Rig 做程序化骨骼控制(如贴地)。算出的骨骼姿势最终交给蒙皮 (Skinning) 驱动顶点。综合角色渲染Character Rendering角色是游戏中最受关注、技术最集中的资产。本页按"动起来 → 表面细节 → 材质着色 → 特殊材质(皮肤、毛发、布料)→ 光照与阴影 → 性能"的顺序,把 wiki 中相关概念页串成一套角色渲染方案的地图。每一层只给出要点与取舍,细节见链接页。游戏开发骨骼、姿势与动画片段Skeletons, Poses & Animation Clips角色动画系统的数据核心是三样东西:骨骼(关节层级)、姿势(每个关节的 SRT 变换)和动画片段(姿势随局部时间变化的采样)。GEA 把各种动画方法看成对"逐点控制表面"这一理想的不同压缩方式;骨骼蒙皮用少量关节驱动大量顶点,是今天最主流的方案(GEA4 卷 II 13.1–13.4)。游戏开发动画混合Animation Blending动画混合把两个或多个输入姿势合成一个输出姿势。基本工具是对每个关节的局部 SRT 分别做 lerp(旋转用 nlerp 或 slerp);在此之上有时间插值、交叉淡入淡出、方向移动、一维/二维混合空间、部分骨骼混合和叠加混合(差分片段)。前几种都是加权平均,叠加混合则是"加上一段变化"(GEA4 卷 II 13.6)。游戏开发动画压缩Animation Compression未压缩的动画每关节每样本最多 10 个 32 位浮点通道,数据量巨大。GEA 列出的压缩手段按力度递增:省略无用通道、量化(如 16 位 RL 编码)、降低采样率或省略近似线性的关键帧、用 B 样条拟合曲线、小波压缩,以及最根本的:只把需要的片段放进内存(选择性加载与流式加载)(GEA4 卷 II 13.8)。游戏美术过场与面部动画Cinematics & Facial Animation第 10 章把过场当作游戏中少数可完全编导的线性片段:相机(FOV、景深、虚拟摄影师、电影五 C)、一系列 Dos/Don'ts,以及眼睛与口型(视线、扫视、辐辏、音素、FACS、共享与排错)。过场用得好拉近共情,用过量则把玩家推回「旁观」。游戏美术游戏动画技术基础Game Animation Technical Foundations《GAME ANIM》第 5 章按基础→中级→高级梳理游戏动画师必须掌握的引擎侧概念:三类动画形态(循环 / 线性 / 过渡)、骨骼导出与数值运算、样条与碰撞移动、FK/IK,以及状态机、参数化混合、局部动画、叠加层、布娃娃,再到全身 IK、Look-At、混合形状与程序化系统。本页只收录书中实际讲到的内容,并与引擎架构页互链。