GAMES105-計算機角色動畫基礎

GAMES105-計算機角色動畫基礎

課程介紹:
- 代碼、作業(yè)等
角色動畫的什么部分


103:物理仿真
105:動畫
動畫:動作、行為上的

仿真+控制就是動畫


基于關鍵幀的動畫()(勞動密集型)
怎么讓動畫動起來?

- 綁定骨骼
- 人骨骼運動

- 基于物理
- 不基于物理的
運動學方法

低級的,低效率的

高級的

迪士尼的動畫12準則

基于物理的UI設計?
算法:
- 前向動力學
- 逆向動力學
差值動畫

動作捕捉
慣性動捕
研究方形:
- 基于視頻的動捕
- 動作重定向


狀態(tài)機(游戲)
02年(Motion Graphs)

動作圖:太復雜

Motion Matching

從數據中學習(深度學習)

生成模型

語音 轉化為 動作

MotionCLIP 跨模態(tài)
劇本,自動表演。。。
物理仿真,回到模擬

控制量,輸出

物理可行的
AR/VR的交互
物理仿真的應用:如筷子
物理仿真怎么做
- 簡化物理
- 關節(jié)力矩
- 高度差
- 控制的關鍵幀方法
- 通過優(yōu)化的方法
- 重定向
- 時空優(yōu)化的方法
- 給出落點
- 機器人領域
- 簡化模型的方法
- 只能做走路
- 強化學習方法
- 2015年 Deep mind

- 讓角色自己學習動作

- 滑板,可以更精細的完成任務
生成模型 -》 基于命令進行高級的生成
接下來可以做什么???
語言、音樂 -》 控制的領域【跨模態(tài)的動畫生成】

基于強化學習模型,在虛擬中產生動作的方法變成現實、變得可用
課程

從科學、方法、理論
可交互的虛擬角色
Python
物理引擎(pybullet/ode/..)


panda3D 游戲引擎(python)
動作預測

實驗(可用用經典方法)簡化模型
線性代數
力學(理論力學)
人機交互:動畫是HCI手段
動作生成
----------------------------------------------------

點乘:
歐式空間,高維空間
風格遷移、
投影
叉乘:
來源。。
運算規(guī)則
尋找法線方向
旋轉角度:

Matrix 矩陣
運算性值

X為什呢要寫小x?

正交矩陣

行列式 det


剛體變換
平移:

旋轉:非線性
旋轉矩陣

旋轉的組合

R = R2R1

特征值特性向量
旋轉軸:不變量



旋轉矩陣

局部坐標點和世界坐標的關系

局部到全局:先旋轉再平移
全局到局部:先平移再旋轉
----------------------------------------------------
三維旋轉
平移差值:
旋轉差值
歐拉角定義:
萬向鎖問題:歧義點

基點問題:
反向轉、萬向鎖問題
軸角表示:



四元數
把二維拓展到三維


重定向,怎么做?
Lecture 03: 運動學:前向逆向運動學
作業(yè):github.com/GAMES-105/GAMES-105/
前向運動學:

考慮物體的運動,不用考慮力

joint 骨骼的組合
保證關節(jié)不離體,前向運動學
每一個R都是旋轉矩陣

歸納:

位置和朝向

對于角色模型
腰 root


自由度DoF
(SPS也是有DoF,可以用運動學的方法來研究運動軌跡的獨立性)
2DOF

旋轉范圍
動作生成:SPS的IO位置生成、動作生成,根據空格數量決定軌跡

從根節(jié)點出發(fā)
可變性關節(jié)
Inverse Kinematics 逆向運動學


逆向問題:

前向問題:自由度相對低

機器學習:梯度下降
能不能把ML加入到SPS?實時?
————————————————————
框架,自動求微分

雅各比矩陣?


————————————————————
L5 Kinematics & Keyframe(差值)
課程提綱



可以制作 眼動SPS 的BVH 文件

所有旋轉都為0的Pose
T-Pose
A-Pose
T、A 和形狀相關

動作重定向的問題(Retargeting)

和旋轉的轉置有關系
先用單個物體來考慮


骨骼數量、名字不同的情況:需要映射

反向動力學 的優(yōu)化問題求解方法
什么是 雅各比矩陣?
————————
關鍵幀動畫/關鍵幀差值

關鍵幀、過渡幀
抽象:問題是數據點的差值問題
內插、外插,一般是內插
- 梯度函數
- 線性差值


- 平滑性
- Smoothness
- 非線性差值
- 多項式

- Runge's
- 樣條差值/分段差值

- 曲尺:樣條 spline
- 是三次多項式(可證明)
- 方法:

- 問題:單點移動整體移動/計算復雜

- 希望局部性,計算量小
三次厄米特樣條

方法

常用差值:


旋轉差值

處理極點問題
SLERP 運算(四元數)
貝塞爾曲線

L4講了2個內容
- 動作運動學的內容:重定向、全身IK
- 差值
————————————————————
L5 數據驅動的角色動畫

運動估計

穩(wěn)定性需要提升

當有動捕數據后,怎么用?

模型+動捕數據

使用流程

重定向流程
動作連接/轉移

動作轉移 做差值
i表示 幀

動作要先對齊:“Facing Frame”

假設 y up,只有xz 面的移動
定義:

根關節(jié)的數據是否移動:
相機采集:有移動
動畫師制作:沒有

動作圖(2002)

眨眼控制的IO 設計研究的是 狀態(tài)基?
姿態(tài)的距離 -> 得到相鄰幀/動作

——————————————————
L6 基于學習的方法
高斯模型(2016之前)

動作和當前軌跡連接

Motion Graphs 的不足:
需要做完上一個動作
在每幀切換 Motion Matching

每一個點找到最近鄰

為什么看上去效果好,但用的少?
用強化學習得到權重

距離函數:特征向量


最佳性能:數據結構
Motion Matching 可能不能解決滑步問題,還需要IK方法來把腳固定在地面
————————————————————
重放動作:
建模 動作自然
低維結構的數據,

高維空間里的低維流形

高維數據中,不同維度之間的關系

PCA方法是來找一些軸,數據在軸上的投影可以給出有用信息。

定義:PCA
在軸上信息最大的方向,用方差最大


PCA 找到一系列主成分的方向

PAC 發(fā)現疊加多個主成分后,動作變得更加自然~
Nutshell 信息量可以用PCA來描述

表示,能以多少的百分比恢復數據
正則化 看姿態(tài)是不是一個好的姿態(tài)
距離中心點距離

作用:先驗信息
動作來源于概率分布
數據分布

數據來源于同樣的概率分布
怎么估計這個概率分布
方法:
- 高斯分布


F(x)
f(x) 動作相關的
任務相關項 + 運動先驗
局限性:e.g. 跳舞
不同分布

GMM 高斯混合模型
GPLVM 高斯過程
L6+ Learning-based Character Animation
pytorch 神經網絡
換了工具表示出來,思想是一致的


動作是真實的可能性

表示動作的方式BVH、基于關節(jié)位置的
BVH 基于關節(jié)旋轉的

條件概率密度 z

概率密度函數 采樣
另一個角度:
基于 條件概率:每一幀基于前一幀確定

動作具有 馬爾可夫性
姿勢只和上一個動作有關系
左側可能考慮了未來,

簡化模型

前后兩幀的二元組

訓練目標:

Interpolation


三層前向網絡

訓練 -》 優(yōu)化問題
F(tha) 最小
求解:
梯度下降

算法:后向傳播(鏈式法則)
缺少約束:
怎么找到合適的z?

PFNN
控制參數、相位參數

走路有周期性,循環(huán)(周期性sps運動

不同定義,性質不變

混合專家模型

專家的參數混合
走路每個相位,不同專家

改進
專家 theta
權重 w


學概率密度函數?
生成模型 -》

VAE 編解碼器
GAN 判別器

GAN 在時序模型上表現不是很好

————————————————————
L7 Skinning 蒙皮



——————————————————