• 沒有找到結果。

問題與討論

第二章 相關研究

2.4 問題與討論

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

15

而動作圖在概念上可以說是一種以量取質的方式,動作圖的出現就是為了透過事先 建立大量的動作擷取資料庫,來補充原先單一運動擷取資料編輯幅度有限而彈性不足的 缺點。以往以全身動作為基礎的動作圖在根本上是在事先列舉出所有有可能會用到的動 作,透過大量的動作擷取資料做為輔助來提升使用時的彈性,但其實我們是很難真正將 所有有可能的動作都給例舉出來的。舉例來說,同一個揮手的動作,我們就可能使用到 在走路時揮手、站立時揮手、跑步時揮手或是跳著揮手等。因此我們發現雖然以全身動 作為基礎的動作圖產生的動作會是最為擬真的,但這個局限也使得它無法充分的利用動 作擷取資料庫裡的資源。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

16

第三章

動作圖

動作擷取資料以離散化的方式把動作資料以連續序列的方式記錄下來,因此可以相當精 確的記錄被擷取者在錄製時的動作。但通常單一筆動作擷取資料所能提供的單一或特定 動作序列之動作種類是相當有限的。因此在實際使用動作擷取資料時,通常會利用多筆 資料,截長補短後組合成一筆在錄製時所沒有的動作。而在這個截長補短的過程通常是 以人工的方式反覆觀看不同的動作後,找出動作相似的部份後加以混合連接如圖 3.1 所 示。而動作圖則是一個將此人工連接過程自動化且有效表達的方法,而動作圖上的每一 個點都是動作擷取資料中的一個姿勢或動畫的一個畫格(Frame)。一個傳統的動作圖通 常是由數個符合應用情境的動作擷取片所建立而成。以拳擊遊戲為例來說,用來建立動 作圖的動作擷取資料就必需要有數個不同位置的出拳、對應的閃躲以及不同方向及節奏 的小跳步等。當動作圖建立完成後,使用者就可以透過路徑搜尋演算法在圖上找到一條 路徑的方式來產生所需的動作。在本章接下來的內容中我們將大略的說明動作圖的建立 流程,並指出本研究所想要解決及改進的問題。3.1 節將描述兩動作片段間的「相似度」

定義,並解釋其定義背後的想法。3.2 節將說明如何應用在上一節中定義好的「相似度」

來自動建立動作圖。3.3 節的部份將討論我們在實做動作圖的過程中所發現的問題。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

17

3.1 相似度方程式

動作圖建立的流程中,首要的問題就是動作片段間「相似度」的定義,而我們將此 種用來計算兩動作片段間「相似度」的方程式稱之為「相似度方程式(Similarity Metric)」。 在此我們以距離函式 𝐷𝑖𝑗 = 𝐷(𝑃𝑖, 𝑃𝑗) 來表示相似度方程式,其中 𝑃𝑖 和 𝑃𝑗 分別為兩個 單一的動作片段(Motion Clip,即動作擷取資料中的一個影格),而距離函式的結果越 小則代表兩動作片段越相似。直覺上的想法我們會覺得直接拿兩片段所表示的姿勢來做 比較就可以了,但這樣讓人感到略顯不足,因為一個良好的距離方程式所要考慮的應不 僅只是兩動作片段在單一片段其靜態上其姿勢的差別,更要考慮到兩動作片段在動態上

(即一小段的動作片段區間)的動作差別。而許多人也在此概念下提出了不同的方法來 實做此距離函式,其中 Lee 等人[11]提出了基於 Joint angle 的距離方程式,而兩動作片 段 i 與 j 的距離 𝐷𝑖𝑗 是基於 Joint angle 的距離方程式。其式子如下所示:

𝐷𝑖𝑗 = 𝐷(𝑃𝑖, 𝑃𝑗) = 𝑑(𝑝𝑖, 𝑝𝑗) + 𝑤𝑣𝑑(𝑣𝑖, 𝑣𝑗) (3.1)

其中 𝑑(𝑝𝑖, 𝑝𝑗) 代表兩片段關節角度上的差異,而 𝑑(𝑣𝑖, 𝑣𝑗) 則是兩片段關節速度上的差 異,而 𝑤𝑣 則是用來調整速度重要性的權重值。 𝑑(𝑝𝑖, 𝑝𝑗) 的計算方式如下所示:

圖 3.1、產生一轉換用動作來將原本兩個分開的動作結合起來之示意圖

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

18

𝑑(𝑝𝑖, 𝑝𝑗) = ||𝑝𝑖,0− 𝑝𝑗,0||2+ ∑𝑚𝑘=1𝑤𝑘||log (𝑞𝑗,𝑘−1𝑞𝑖,𝑘)||2 (3.2)

其中 𝑝𝑖,0 與 𝑝𝑗,0 分別是 root 點在第動作片段 i 與動作片段 j 時的位置,𝑞𝑖,𝑘 與 𝑞𝑗,𝑘 分別是關節 k 在第 i 個動作片段與第 j 個動作片段時的旋轉量。而在本研究中我們所 採用的是 Kovar 等人[10]的所提出的 Point Cloud Distance 方法。在他們的想法中,一般 動畫的動畫角色所顯示出來的樣子是由其內在的骨架所決定,因此這個方法認為比較兩 動作片段即是比較兩個由骨架所驅動的姿勢。綜合以上,想要計算兩動作間的距離就是 將比較兩個由骨架所驅動的點雲(Point Cloud),而在此我們將骨架的各個關節點之世 界座標所集成的點來構成我們所使用的點雲。在實際要計算動作片段 𝑃𝑖 和動作片段 𝑃𝑗 的距離 𝐷(𝑃𝑖, 𝑃𝑗) 時,需要同時將與這兩個動作片段有關的兩長度為 k 的動作區間考慮 進來,其分別是一段以 𝑃𝑖 為起點的區間 [𝑃𝑖, 𝑃𝑖+𝑘−1] 而另一段則是以 𝑃𝑗 為終點的區 間 [𝑃𝑗−𝑘+1 , 𝑃𝑗] 如圖 3.2 所示,同時我們發現:

𝐷(𝑃𝑖, 𝑃𝑗) = 𝐷(𝑃𝑗−𝑘+1, 𝑃𝑖+𝑘−1) (3.3)

意即動作片段 𝑃𝑖 與 𝑃𝑗 的相似度計算方式和 𝑃𝑗−𝑘+1 與 𝑃𝑖+𝑘−1 是一樣的。透過比較兩 動作片段區這個方法,使他們可以將動態上的動作差別考慮到方程式中。此外這個用來 計算距離的動作區間與最後用來混合產生出來做為連接用的動作是一樣的,因此根據 Mizuguchi 等人的建議我們將 k 的值設為 20(當動作的 FPS 為 60 時約為 1/3 秒)。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

19

當在兩動作區間中取出動作並轉成點雲之後,最後還有一個問題需要解決。動作一 開始在擷取時可能兩個動畫角色在方向及位置上都是不相同的,因此在開始計算前,我 們需要將一個點雲經過旋轉與平移後與另一點雲對齊(Align)。最後動作片段 𝑃𝑖 和動 作片段 𝑃𝑗 的距離計算的方式就是將兩點雲中所有相互對應的點之歐幾里得距離

(Euclidean distance)加總起來。以上的描述做成公式後就如下面的式子所示:

𝐷(𝑃𝑖, 𝑃𝑗) = min𝜃,𝑥0,𝑧0∑ 𝑤𝑖 𝑖||𝑝𝑖− 𝑇𝜃,𝑥0,𝑧0𝑝𝑖||2 (3.4)

其中線性轉換 𝑇𝜃,𝑥0,𝑧0 將點 p 在水平面上(在此假設水平面為 xz 平面)旋轉 𝜃 角然後 平移 (𝑥0, 𝑧0) ,此計算的索引 i 會涵蓋 Point cloud 上所有的點,權重 𝑤𝑖 可依使用者決 定每個點的重要性來自由設定。權重的設定對不同類型的動作時會有不同的最佳設定,

但在尋找比較同一組動作之間所有的動作片段時,其權重的設定必須一致。最後計算出 來的距離結果,其距離越大者則兩動作片段越不相似,反之亦然;但是計算出來的距離 數值是沒有實質上的絕對意義。換言之,我們只能從距離數值的大小來得知兩組動作片

圖 3.2、由圖所示我們得知 𝐷(𝑃𝑖, 𝑃𝑗) 與 𝐷(𝑃𝑗−𝑘+1, 𝑃𝑖+𝑘−1) 計算時所使用的動作 區間的一樣的,因此 𝐷(𝑃𝑖, 𝑃𝑗) = 𝐷(𝑃𝑗−𝑘+1, 𝑃𝑖+𝑘−1)

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

20

之間那一組連接起來後會是相對起來品質比較好的轉換,而不能經由一個絕對的數值來 決定何者是品質好的連接。

3.2 動作圖建立

在產生動作圖之前使用者必需先收集及擷取所有在應用情境中會使用到的動作,

整理後形成一個做為基底的動作擷取資料集合。動作擷取資料中的每一個影格在圖上皆 是一個獨立的點,而點和點之間的有向邊連接則代表這兩點間可以平順的轉換。原始動 作擷取資料中相鄰的兩個影格必定是可以平順的轉換的,因此在起始時我們會將到原動 圖 3.3、動作距離及候選連接點選擇示意圖,顏色越深代表距離值越高,而圖上綠色

的點為候選轉換點

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

21

作擷取資料中相鄰的點加上連接(圖 3.4(B)),接來下為了找到預設以外的連接,我們 使用前面所提到的 Point cloud distance 來計算所有動作片段之間兩兩的相似度。在計算 完兩動作中所有動作片段之間的相似度之後,我們以一個二維的矩陣來表示其結果,如 圖 3.3 所示。我們接著將矩陣上各區的 Local Minima(圖 3.3 中的綠點)取出,做為我 們的候選轉換點(Candidate transition point),並透過指定一個相似度的門檻值,如果在 候選轉換點中兩動作片段 𝑃𝑖 和動作片段 𝑃𝑗 的相似度 𝐷(𝑃𝑖, 𝑃𝑗) 的值小於我們所指定 的門檻值,則我們將此兩動作片段視為足夠相似可以來創造連接的組合。由前所述 𝐷(𝑃𝑖, 𝑃𝑗) = 𝐷(𝑃𝑗−𝑘+1, 𝑃𝑖+𝑘−1) ,如果當 𝐷(𝑃𝑖, 𝑃𝑗) 小於我們所指定的門檻值時,我們會 分別創造兩個有向連接(圖 3.4(C)),分別是從 𝑃𝑖 到 𝑃𝑗 以及從 𝑃𝑗−𝑘+1 到 𝑃𝑖+𝑘−1 , 並為這兩個連接計算一個轉換花費所使用的的式子如下:

t = 1 − 𝑒(−𝑠/𝜎) (3.5)

其中 t 是指前面的轉換花費,s 是兩動作片段的相似值,𝜎為選取連接點用的門檻值,而 t 的範圍介於 0 和 1 之間(0 為最平順的轉換而 1 是最不順的轉換)。當所有動作之間的 連接建立完成後,最後一個步驟就是將這張圖去蕪存菁,去除掉那些會使我們在使用時 進入死路(Dead End)的結點,即找出這張圖的最大強連接點集合(Strongly connected component, SCC),而這最後所找到的最大強連接點集合所構成的圖就是我們最後所要 的動作圖(圖 3.4(D))。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

22

圖 3.4、動作圖建立各階段示意圖

3.3 問題

動作圖為動作的混合提供了一個相當具有保證性的自動化技術,同時動作圖具有結 構簡單以及能夠使用簡易的路徑搜尋演算法產生長動作的能力,但動作圖仍有許多在使 用上或在建立時待解的問題,因此至今仍相當的受到研究者們的歡迎,並應用在動畫的 自動產生之系統等的議題上。

在本論文中我們所面對的問題是,在使用傳統動作圖時,當你想要從一動作切換至

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

23

另一個動作,你必須全身的動作一起切換,即便同樣是邊走路邊揮手這一類的動作,僅 只是想要從揮左手換成揮右手也是一樣。或是當你的動作圖中有一個走路動作以及一個 原地講話的動作時,可能就會有人想說何不有個一邊走路一邊講的動作,但在傳統的動 作圖中,如果一開始用來建立圖的動作擷取資料庫中沒有一邊走路一邊講話這個動作的 話,使用者是無法經由使用動作圖來產生的。以上這兩個例子都指向了同一個問題:動 作圖除了可以在不同的動作間可以混合出用來平順轉換的轉換動作外,並無法自動的混 合不同身體部份的動作。因此在本研究中,我們企圖以為身體其他部位也計算動作圖的

另一個動作,你必須全身的動作一起切換,即便同樣是邊走路邊揮手這一類的動作,僅 只是想要從揮左手換成揮右手也是一樣。或是當你的動作圖中有一個走路動作以及一個 原地講話的動作時,可能就會有人想說何不有個一邊走路一邊講的動作,但在傳統的動 作圖中,如果一開始用來建立圖的動作擷取資料庫中沒有一邊走路一邊講話這個動作的 話,使用者是無法經由使用動作圖來產生的。以上這兩個例子都指向了同一個問題:動 作圖除了可以在不同的動作間可以混合出用來平順轉換的轉換動作外,並無法自動的混 合不同身體部份的動作。因此在本研究中,我們企圖以為身體其他部位也計算動作圖的

相關文件