電腦視覺與虛擬人物動畫製作

Part-A: A friendly introduction to the digital character animation pipeline

Chia Cheng Hsu
Taiwan AI Academy
5 min readApr 21, 2020

--

前言

30年前,3D軟體的初次問世帶給影視業莫大的衝擊,隨後3D動畫也逐漸成為電影與動畫製作的主流。現今許多的影像當中都充斥著3D動畫的足跡,隨著科技不斷的發展,影視製作的技術也不斷演進與優化,近年來的3D動畫已經越來越以假亂真、難以分辨。本篇文章將直觀介紹常用於遊戲業內用於製作角色動畫的流程,並簡短提及其原理。

動態擷取於角色動畫之應用於魔戒電影(2012)
Cubic Motion演示即時人物動態擷取,將動態賦予虛擬人物(2018)

遊戲公司製作角色動畫的流程大致上可以分成三個步驟

  1. 製作人物3D模型
  2. 設定人物體態
  3. 動態捕捉並控制人物
數位人物動畫製作三步驟

1.製作人物3D模型

傳統的3D建模多由設計師設計2D人物概念,由3D建模師將3D形體建立出來。

但是如果想建立的模型是可真實取材的,則我們透過攝影測量法 (Photogrammetry)的技術,可以快速的實現使用拍攝某物體的照片還原出物體的3D形體。

Photogrammetry的input是圖片,output則是3D模型

Photogrammetry原理

用於Photogrammetry的攝影機陣列 - Image from UMBC

透過多角度攝影機對一物體拍攝,我們得到物體在不同角度的樣貌。由於光的直線前進特性,物體投影於攝影機成像平面的軌跡能夠線性方程表示。透過解出描述一個pixel被投影的線性方程組,我們可以得到該pixel在真實空間中的位置。

描述點投影在三攝影機中的線性方程組 - Image from Rich Radke

透過電腦視覺中的feature matching演算法,我們得以批配物體的局部在不同照片中的位置,並搭配上述的過程逐一解出各pixel的位置。

Feature matching演算法 - Image from smartprogress

當圖片中的pixel經過feature matching並且解出對應的座標位置後,產生出point clod(點雲),便是將每個pixel對應座標,在3D空間裡的樣子。有了point cloud之後,便能夠轉化為實面的3D模型。

point cloud(左) -> 網格化(中) -> 面化(右) - Image from researchgate

2.人物體態設定

2.1 Retopology(重新拓補)

Photogrammetry後得出的模型並不能夠直接使用來做動畫,因為當前模型的點線面的分佈極為雜亂,要想得到高品質且擬真的人物動畫,需要先對雜亂的點線面分佈做整理,在做動畫的過程才能夠看起來較為合理。此過程的專業術語稱為retopology(重新拓補)。

人物模型的點線面分佈應符合真實的人體肌肉結構 - Image from foundation3d

2.2 Rigging(骨架綁定)

經過重新拓補的人物模型已經具備做動畫的要求,但是目前的模型僅僅是一個由點線面構成的靜態物體,在建立模型的最後一步我們尚須定義物體運動時模型頂點的關聯性,例如:當高舉時,胸部的肌肉也會有所連動…etc。

手部運動之肌肉連動 - Image from imgur
臉部表情設定 - Image from antcgi

2.3 高階案例

電影界常在實際拍攝的影片當中加入數位角色的表演,因此有對角色高擬真的要求,原因是數位的角色需要不突兀的融入我們眼中的真實世界。

以下為著名電影特效公司"威塔"所製作的生物骨骼,除了最基本的模型頂點關聯性,更加入了許多物理的元素來提昇真實度。如:運動時肌肉的震顫、脂肪的晃動…etc。一般人第一眼看到這樣的數位角色時,常常會被超高的真實度騙過,而認為眼前的數位角色是真實存在的吧!

威塔所製作的數位角色-馬

part-A 結語

part-A 旨在大綱式介紹數位人物動畫製作的前期流程。

Followup

下一篇part-B將深入探討演算法的實作,將會是以Python為基礎的實作文章,內容包含Photogrammetry演算法、機器學習之動態捕捉應用,以及進行實時虛擬人物的控制。

--

--