Lecture01 Introduction to Character Animation

What is Character Animation

  • 动画电影(计算机角色动画的一个重要应用领域 motivation,但目前占比很小)

  • 游戏(交互,直接推动计算机角色动画的发展)

  • 虚拟角色、虚拟主播、数字人

  • VR

  • 大场景人群仿真(粗粒度动作)

3D Computer Graphics

  • Geometry

  • Animation

  • Rendering

建模与渲染是静态的,考虑对一个固定的帧如何展现外观

动画解决的问题:下一帧如何生成——建模时序上的规律

(Character) Animation

Animation 可以分为两个方向:

  • Simulation 一些客观的物理现象 (Phenomenon) rigid bodies, deformable solids, ropes, thin shells, cloths, fluid, smoke, sound... 数学建模 可描述

  • Character Animation 行为上的建模 (Behavior) humans, animals, virual creatures, hands, robots, crowds 大量观察,统计上的建模

角色动画与仿真之间:

  • 联系:Simulation + Control = Character Animation 控制带来的是主观意愿的一些内容

  • 最大不同点:角色动画关注的对象是角色

Why Do We Study Character Animation

将劳动密集型工作转化为计算密集型!

  • A character typically has 20+ joints, or 50-100+ parameters

    • It is not super high-dimensional, so most animation can be created manually, by posing the character at keyframes

    • 劳动密集型 Labor-intensive, 不适合交互式应用 not for interactive applications

  • Character animation techniques

    • 理解做出这些动作时发生了什么 Understanding the mechanism behind motions and behaviors

    • Smart editing / Reuse animation / Generate new animation

    • 计算密集型 "Compute-intensive"

Character Animation Pipeline

如何做角色动画?

  1. 首先我们要有一个虚拟形象(几何建模的内容)

  2. Rigging & Skinning 得到模型后第一件事——将模型绑定到骨骼上;涉及两个问题:

    • 怎么设置骨骼

    • 怎么计算模型(蒙皮)和骨骼的相对关系

  3. Skeletal animation 骨骼本身应该怎么运动(绑定后骨骼带动蒙皮运动)

Where does a Motion Come From?

神经信号 -> 肌肉信号 -> 在肌肉骨骼系统上增加力和力矩 -> 物理机制 -> 姿态

Physics 部分无法人工干预

Character Animation Methods

很多计算机角色动画技术可以根据是否使用物理来区分

  • (工业界很多应用)基于运动学/关键帧的方法——隐含掉物理层及其以上层,直接更新姿态、速度、加速度

  • (希望能完整复现角色动作的物理过程)基于动力学/物理的方法——完全复现比较困难,大部分情况下会简化;但仍然是通过物理仿真建模生产动作,不能进行干预

  • low-level control 对每一帧每一个姿态精确控制,但非常低效昂贵

  • high-level control 给一个目标,很少的信息实现控制,精确度与信息熵有关

Keyframe Animation 运动学

在图形学之前 Disney's 12 Principles of Animation

Kinematic Methods

  • Forward Kinematics

    • Given rotations of every joints

    • Compute position of end-effectors

  • Inverse Kinematics

    • Given position of end-effectors

    • Compute rotations of every joints

  • Interpolation

  • Motion Capture

  • Motion Retargeting

    • Given motions of a source character

    • Compute mostions for target characters with

      • different skeletion sizes

      • different number of bones

      • different topologies 比如关节朝向相反

      • ......

捕捉到动作后,还是无法生成动作;游戏中如何使用这些数据?状态机——

  • Motion Grphs / State Machines

能够重用已有的运动数据,在交互下生产新的运动,完成一些下游任务,但是构造非常复杂

动作图是在一些完整的动作片段之间进行切换

把动作再切片,切片到每一帧进行控制——

  • Motion Matching

    • 不是去完整地播放一段动作,而是在更加细粒度(比如每一帧结束的时候)通过最近邻搜索找到一个新的姿态——同时:

      • 满足控制目标

      • 与当前角色状态相差不能太大(保证动作连续性)

    • 很大程度上是一个工程上的实现(距离函数?如何设计动作库?)

    • 简单实用

    • 对游戏来说,阻力是如何集成到原来的 pipeline

希望对角色本身的内在规律进行建模,减少手动生成动作库的工作量——生成模型

  • Learning-based Approaches

    • Motion Generative Models

希望通过一些高级内容比如语言生成动作

  • Cross-Modal Motion Synthesis

    • Audio-driven animation

      • Music to dance

      • Co-speech gesture

      • ......

    • Natural language to animation

      • Descriptions to actions

      • Scripts to performance

      • ......

角色动画学到动作的统计学表示,语言也是一个统计学模型,在两者之间建立模型

未来的方向?

  • 给一段剧本,生成一段表演(贴近动画电影)

  • ......

  • (个人想法)能否考虑不同角色的习惯和语气?

problems of kinematic methods

  • Physics plausibleness 物理可行(注意准确与可行的区别)

    • 穿模

    • ......

  • Interaction with the environment

  • 很多很难采集的动作

    • 基于运动学的方法难以生成没有采集到的动作

Physics-based Character Animation 动力学

回到基于物理仿真的方法

比运动学方法多了一步

运动模型不直接生成下一个状态,而是生成一些控制量比如力、力矩,再通过物理仿真去真正改变角色姿态

一种基本的应用:暂时将 Motion Control 忽略——Ragdoll Simulation:把控制关掉,只能生成一些无意识的、短时间内身体无法控制的动作

为了实现更有意义的动作,还是需要学习 Motion Control

物理仿真的方法非常适合 AR VR 这样的游戏,VR 环境的动作和手柄不同,只有通过物理仿真才能完全还原用户的动作

  • VR 手柄控制,如何通过三个点的数据生成下半身的动作?

    • Motion Reconstrcution with Sparse

    • 也可以结合一些新的机器学习方法让动作看起来更加真实

    • 物理仿真让用更少数据信息复现成为可能

实现一些非常细节的动作,比如使用筷子

最基本的一个问题:如何建模角色?

可以完整地建模神经系统与肌肉,但一方面其作用机理学术上并没有完全清楚,另一方面比如肌肉的自由度很高,导致仿真的效率很低

简化:使用关节力矩驱动角色动作(肌肉通过肌腱连接到骨骼上,每一块肌肉运动时对骨骼产生一个力,每一个力等价地在关节上产生一个力矩)等价地仿真

一类常用的方法:

  • Proportional-Derivative (PD) Control

    • Tracking Controllers 给出目标高度的轨迹,然后使用 PD 控制生成对每个关节的力矩

但过了将近 30 年仍然没有在游戏中见到这个技术,最大的原因是 Control is Hard

Trajectory Crafting: NaturalMotion - Endorphin 为了实现一个动作需要设计控制轨迹(然后使用 PD 控制)

基于关键帧的方法设计成什么姿势就是什么姿势,但基于物理仿真的方法无法直接设置姿势,设置后只能希望得到差不多的动作,动画师制作困难

  • "Keyframe Control"

  • Spacetime/Trajectory Optimization

    • 需要解决的是高维非线性的问题,优化非常困难,速度很慢

  • Abstract Models

    • 来自于机器人 简化模型

    • linear feedback control + FSM 非常简化 缺少细节 无法做复杂的动作

  • Reinforcement Learning

    • Deep Reinforcement Learning

    • DRL-based Tracking Controllers

    • Multi-skill Characters

  • Generative Control Policies 和基于运动学的生成模型类似,但生成的是控制而非运动

  • ......

多刚体仿真

Last updated