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
如何做角色动画?
首先我们要有一个虚拟形象(几何建模的内容)
Rigging & Skinning 得到模型后第一件事——将模型绑定到骨骼上;涉及两个问题:
怎么设置骨骼
怎么计算模型(蒙皮)和骨骼的相对关系
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