###### tags: `Paper` 、`3D Computer Game`、`Motion` # **[Interactive Control of Avatars Animated with Human Motion Data](https://dl.acm.org/doi/10.1145/566654.566607)** 同 [Motion Graphs](/SoHgBtv0QBGoEZB4_ezOUA) 本篇論文主要的目的皆是將原有的 motion capture 重新建構出一個新的 motion sequence,並且讓 user 藉由 user interface,做到可以控制 Avatars 走到指定位置或做特定動作。 ## 1 Introduction 為 Avator 設計一組豐富的行為,並讓用戶控制這些行為,是兩個很困難的問題。設計一組行為很困難,主要是由於 real-time constraint ,特別是如果我們希望利用相對非結構化的運動數據來生成行為。 <center> ![Real-time avatar control.](https://i.imgur.com/VORUfLA.png) </center> 本篇論文提供了三種 user interface, - sketched interface:有 maze 和 terrain 兩種場景,user 使用 sketching path 控制 avatar 的運動。 - choice interface:為 playground 場景,user 從多個選項中進行選擇。 - vision interface:user 通過在攝像機前執行動作來控制 avatar。 ## 2 Background ## 3 Human Motion Database ## 4 Data Representation Human motion 通常以兩種型式表示: - 保留原始 motion frames - 以 parametric 或 probabilistic 來概括模型 上述兩種方式各有優勢:前者允許保留原始 motion 的細節以進行合成;後者創建更簡單的結構來搜索或呈現數據。本篇論文試圖將兩者組合在一個 two-layer 的結構中。 - Higher Layer 為一個統計模型,提供一個 user interfaces 可以將捕捉到的 character state 依據相似性做 cluster。 - Lower Layer 為 Markov process,根據 user 在 higher layer 提供的方向,在 motion frames 之間選擇出 transitions,並創建出新的 motion sequence。 <center> ![](https://i.imgur.com/vzLfHrp.png) </center> ### 4.1 Lower Layer: Markov Process [Markov process](https://web.ntnu.edu.tw/~algo/HiddenMarkovModel.html) 是一個概率矩陣,$P_{ij}$ 表示從 $s_i$ 到 $s_j$ 的機率。此處的機率與兩個 frame 之間的相似度,經過 exponential function 計算的結果成正比。也就是說,出來的機率值越大,兩個 frame 之間的相似度越高。 $$P_{ij} ∝ exp(-D_{ij} / \sigma) \tag 1$$ $D_{ij}$ 表示第 *i* 幀和第 *j* 幀之間的距離,$\sigma$ 代表距離與機率的對應值。 $$D_{ij} = d(p_i, p_j) + vd(v_i, v_j) \tag2$$ 第一項 $d(p_i, p_j)$ 表示關節角度的 weighted 差,第二項 $d(v_i, v_j)$ 表示關節速度的 weighted 差。 $d(p_i, p_j)$ 則是透過 Euclidean differences 計算,如下方公式: <font color="red">$$d(p_i, p_j) = || p_{i, 0} - p_{j, 0}||^2 + \sum ^m_{k = 1} w_k || log(q^{-1}_{j, k}q{i, k}) ||^2 \tag3$$</font> ==$p_{i,0}$ 是 character 在第 i 幀的 position translation,$q_{i,k}$ 是關節 k 在第 i 幀,相對於父節點的 orientation,也就是說,這邊的 motion 之間的比較,同樣要考慮位置以及方向,同位置不同方向的 motion 是不同的。== 若使用公式 1 計算 $P_{ij}$ 的結果,會是一個 $O(n^2)$ 的矩陣,因此會需要 $O(n^2)$ 的儲存空間來存處 *n* 個 motion frame,由於 motion database 大約在 4000 到 12000 幀,這樣所需的存處空間將非常可觀。因此需要透過修剪掉低概率的 transitions,來減少空間的使用,避免過於頻繁的轉換,以及提高最終結果的質量。如下圖,本篇論文通過四個規則修剪 transitions。 <center> ![Prune the transitions.](https://i.imgur.com/XvKFpyL.png) </center> **Contact state** 檢查兩個 motion segment 的接觸狀態。如果第 $i$ 到 $j-1$ 幀和第 $i+ 1$ 到 $j$ 幀為不同的接觸狀態,則需要修剪第 $i$ 到 $j$ 幀作為 transition。舉例,不允許從腳即將離開地面的姿勢過渡到腳即將接觸地面的另一個姿勢,即使這兩個動作相似。以避免轉換動作時產生抖動。 **Likelihood** 將低於 user 指定閾值的機率設為 0。 **Similarity** 在 transition matrix 中選擇 local maxima 作為最好的 transition。 **Avoiding dead ends** 同 [Motion Graphs](/SoHgBtv0QBGoEZB4_ezOUA) 中使用 strongly connected components,將 dead ends 剔除。以避免沒有動作可以接續。 ### 4.2 Higher Layer: Statistical Models <center> ![](https://i.imgur.com/IUo0k7J.png) </center> 上圖中,A 部份表示最初 motion database 是由許多的 motion clips 所組成,每個 motion clip 中又包含許多 frame。再來進入到圖片中的 B 部分,將相似的 frame 以 transition 連接,如此可以得到一個 directed graph,也就是上一節提到的 lower layer 所做的事。接著做 cluster,相似的 pose 會被組成一個 group,出來的結果如 C 部分。到這邊,作者定義了一個新的 data structure 叫 cluster tree。多個 cluster tree 的集合稱為 cluster forest。每一個 motion frame 都會有自己的 cluster tree。從任意點出發,在給定的深度或時間範圍內,將所有能走到的 cluster 加入到該 frame 的 cluster tree 中,最終即可得到該 frame 的 cluster tree。 <center> ![Cluster Tree](https://i.imgur.com/O2zYfek.png) </center> (Cluster tree) <center> ![](https://i.imgur.com/I2uX7ww.png) </center> (Cluster forest) ==關於 cluster 的公式,與上面的算 error function 的不同,用的是 isometric Gaussian mixture model,並涉及 Expectation Maximization (EM) algorithm。== $$\mathcal{L}(\theta_k, \tau_k, z_{ik}| \mathbf{x}) = \sum_{i=1}^{N} \sum_{k = 1}^{K} z_{ik} \ log(\tau_kf_k(\mathbf{x_i} | \theta_k)) \tag {5}$$ (具體不是很理解這個公式) ## 5 Controlling the Avatar ### 5.1 Choice <center> ![Playground](https://i.imgur.com/XJp9NbS.png) </center> choice-based interface 依據 time 和 space,提供幾個之後可能出現的狀態,給予使用者選擇。 在本篇論文中,Playground 即使用 choice-based interface。上圖中,左邊為 avatar在虛擬環境中,右邊為 original data。左圖的綠色 avatar 為提供給 user 可能的動作,粉紅色為下一個動作,當前選擇的動作由箭頭表示。如果 user 什麼都不做,avatar 將遵循此路徑。 <center> ![](https://i.imgur.com/5xdHcrF.png) </center> 在這張圖中,粉紅色的點為系統選擇出來的可能出現的動作,因其落在 time bound 和 space bound 的交界處。 ### 5.2 Sketching 在 sketching-based interface,user 可以自行畫出一條路徑。 <center> ![](https://i.imgur.com/tEVrRCc.png) </center> 在這個例子中,user 繪製了一條穿過障礙物的路徑,avatar 從處理過的數據庫中選擇一系列動作來跟隨路徑並避開障礙物。左上角的圖為原始的 motion data,左下角為從 motion data 中,選擇一系列 motion segments。這些 segments 做 translated 和 rotated 以對應到 sketched path。 ### 5.3 Vision 在 vision-based motion 部分,user 輸入一段人體輪廓的影像,可以得到一個 3D 骨架,僅在這種情況下,avatar 的動作會在 user 的動作輸入後 lag 數秒。 下圖為透過處理 video data 可以生成左下角的輪廓,然後將其與根據 motion database計算的右下角的輪廓進行匹配。 <center> ![](https://i.imgur.com/JQhRcBe.png) </center> 在這段 clip,我們看到 user 創建了一個更長的 motion sequences,隨後是具有 3 秒延遲的 avatar。為了獲得有關當前行為的足夠信息以做出正確選擇並補償來自單個相機的有限可用數據,此 lag 是必要的。當適當的運動不在 database 中時,系統會識別並選擇最接近的 motion。 <center> ![Video buffer.](https://i.imgur.com/xpDxVR3.png) </center> 為此,我們在 user 執行時,會有一個 video frames buffer。 <center> ![](https://i.imgur.com/SvVaEkX.png) </center> 對於 avatar motion 的每個 time step,系統會將 video buffer 與當時 avatar 可用的動作進行比較。 實驗中,通過 lower layer 計算後,會有數千條 path,並且從 cluster tree 中可以選擇出 10 到 20 條 path。我們將 video buffer 與這幾組 path 進行比較以找到匹配的 motion。這種 cluster tree使得實現 real-time 成為可能。 ## 6 Results ## 7 Discussion 本篇論文提出了兩種 interactive avatar control 的想法。 對於輸入的 motion data,提供一個簡單的方法,進行重新排序,完成可以更靈活運用的 motion。 cluster forest 可以被認為是 avatar 行為的地圖。 該地圖允許 avatar 選擇適當的動作 realtime。 創建了幾個完全不同的 user interface,可以針對不同情況作運用。