• 沒有找到結果。

第二章 相關研究

3.3 問題

立 政 治 大 學

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

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

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

24

第四章

多層式動作圖之建構

傳統動作圖所能合成的動作是大幅度依賴動作資料庫的內容。基本上傳統動作圖是 一個描述多個不同動作之間的連接關係圖,並不具有能夠組合出新動作的能力。因此如 果想要使用傳統動作圖產生出一個變化豐富的連續動作時,動作圖之中勢必要包含相對 大量的動作種類。但是,如果我們能夠改變現有的動作圖結構,使其具有能力可以藉由 重新組合動作資料庫中的部份動作來產生出新的動作,那我們就可以用常見的數個基本 動作,搭配一些部份變化的動作即能夠在不需要大量動作資料庫的狀態下,建立出一個 有能力產生高度變化的動作圖。舉例來說,假設原先動作資料庫有以下三個動作,分別 是走路、原地站立且雙手插腰以及對著人講話,我們希望除了能夠產生原先資料庫中就 具有的三個動作外,更能產生邊走路邊講話、手插腰上走路等能從不同資料組合部份動 作的新全身動作。

在本論文中,從 Chen [5] 的研究所得到的靈感,我們提出了一個由多張動作圖所 構成的階層式動作圖結構,稱之為多層式動作圖。經由使用多層式動作圖,我們就可以 如前面所舉例的,僅切換部份身體的動作(ex. 僅切換上半身的動作或左手的動作等…)

來產生出新的動作,同時因為使用與傳統動作圖相彷的資料結構,所以得以與傳統動作 圖可以平順的在不同的動作間轉換。為了更具體描述我們在使用上的主要想法,我們將

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

25

以下面兩張動作圖所構成的一個已完成的多層式動作圖為例說明。 M𝐺全身 (Full Body Motion Graph)以及 M𝐺上半身 (Upper Body Motion Graph)(如圖 4.1 所示),其中 M𝐺全身 是一張由全身的動作所建立而成的動作圖(即傳統的動作圖),而 M𝐺上半身 則是由動 作擷取資料庫中的上半身動作所計算建立而成的動作圖。我們基本是想法是, M𝐺全身 的用途如同傳統的動作圖一樣,經由在其上使用路徑搜尋演算法,我們可以產生由一連 串 M𝐺全身 中有包含的動作所組成的新動作,而當我們僅想要改變一個動作的上半身動 作並保持其當下下半的動作時(ex. 將走路其上半身的動作由擺手改成講話的動作),就 將上半身產生動作的方式切換到 M𝐺上半身 來做動作間轉換的搜尋與產生,並將此產生 出來的上半身動作加以覆蓋至 M𝐺全身 產生的動作的上半身後,即為我們所想要的結果。

圖 4.1、由上半身及全身動作圖所構成的兩層式動作圖

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

26

4.1 多層式動作圖建構概論

大體上來說,我們的演算法會先使用傳統動作圖來產生一張做為主幹的動作圖

(M𝐺全身),然後依照應用情境的 需求來產生一個至數個部份動作的動作圖( ex.

M𝐺上半身 、 M𝐺左手 等…),最後將產生出來的多個動作圖依照骨架的階層關係給連接 起來,產生多層式動作圖。而在連接的過程中我們會為所有相互可以替換的部份動作間 計算一個「整體動作相似度」的數值。

依照以上的說明,整個多層式動作圖的建立過程大略可分為四大步驟:

 第一步,對要用來計算動作圖的動作擷取資料進行前處理,在前處理的過程中需要 以人工的方式對動作擷取的資料做出基本的分類,並對每個動作加上足以表示該動 作特性的標籤(tag)。

 第二步,全身動作、部份動作(要將動作切為幾個部份由使用者決定)等個別以自 動化的演算法來尋找每組動作擷取片段之間適合連接的地方。

 第三步,在個別的圖上建立轉換用的連接,並且刪除會導致在各別圖上運行時進入 死路的結點。

 第四步,將個別產生出來的圖加以連接,並計算「整體動作相似度」數值,產生多 層式動作圖。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

27

圖 4.2、系統架構圖

多層式動作圖所建立的 IMMGC (Intelligent Media Lab’s Motion Graph Computation System),並在緊接的章節中對整個架構的流程做出細部的說明。

4.2.1 動作圖建立系統 IMMGC 總覽

在本研究中,我們設計了一個名為 IMMGC 的多層式動作圖建立架構,而 IMMGC 的系統架構如圖 4.2 所示,圖中每一個方塊為一個獨立的模組,而模組與模組之間的箭 頭代表了資料傳遞的方式。這個系統的目的如前所述,是要產生一個部份動作可以獨立 切換且具強連接性(SCC, Strongly Connected Component)的多層式動作圖。此架構主要 由動作讀取器(Motion File Loader)、動作圖建立分派器(Graph Build Dispatcher)、動 作圖產生器(Motion Graph Generator)和動作圖合併器(Graph Combiner)所組成。動 作讀取模組(Motion File Loader)負責將動作資料以及設定檔(Configuration File)轉換 成適合用來計算的容器內,而設定檔內儲存了前處理階段時所設定的各項屬性,像各個

適當的的標籤如:走路(WALK)、跑 (RUN)、跳(JUMP)、揮手(WAVE_HAND)

等…。

(Candidate Transition Point Detector)、動作距離計算器(Distance Metric Computation Method)、連接點產生器(Transition Generator)以及圖形清理器(Graph Cleaner)。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

30

圖 4.3、動作圖計算細部架構示意圖

4.2.3.1 動作相似度比較

在這裡比較兩兩動作片段相似度的方式是透過計算兩兩動作片段間距離的方式,距 離越大則兩動作片段越不相似,反之亦然。在接收了動作圖建立派送器所讀取的動作資 料以及設定資料後,轉換點偵測模組將讀取進來的動作,參照前處理時所寫下的設定檔,

求來選擇適當的距離計算方式。在這裡我們實作了 Point Cloud Distance(式 2.3)來做 為我們計算動作相似度距離的方法。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

32

就將轉換的動作都一同產生好的話,那最後將產生一個相當龐大的資料結構。因此,本 研究在產生 (A𝑖, B𝑗) 間的連接時,會 A𝑖 上寫上特別的標記(如圖 4.4(b)所示),待運行 需要用到此連接時,再根據這個標記將連接的動作即時產生出來。

4.2.3.3 動作圖清理

截至目前為止,我們已經可以自動的產生出一個基本的動作圖了,但要順利的經由 動作圖產生動作仍有一些問題需要解決,因為在目前這個階段的動作圖中仍存在一些會 讓在圖上搜尋或是 Random walk 時進入死路(Dead-End)的不必要節點,因此最後的 修剪器模組所負責的工作就是要將所有會導致死路的結點刪除,而在本系統中我們使用 Tarjan’s Algorithm[17]來做為刪除死路的方法;Tarjan’s Algorithm 是 Robert Tarjan 所提出 的強連接尋找法,Tarjan’s Algorithm 一開始會任選圖上的一結點進行深度優先搜索

(Depth First Search),在搜索過程中會將經過的節點都存放到一堆疊(Stack)中,當搜 索時如果遇到一個已經被搜索過的點的話,會先檢查該結點是否是任一強連接的根結點 並將其從堆疊中刪除。如果該結點是任一強連接的根結點的話,則該結點與會堆疊中其 它的點形成了一個強連接。在這個搜索完成後,最大強連接所構成的圖就是我們所要的 動作圖了。

圖 4.4、動作連接示意圖

圖 4.5、Tarjan’s Algorithm

algorithm: Tarjan’s Algorithm input: graph G = (V, E)

output: set of strongly connected components (sets of vertices) index := 0

function strongconnect(v)

// Set the depth index for v to the smallest unused index

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

34

4.2.4 合併建立多層式動作圖

到目前這個階段,我們已將各個動作圖個別建立完成了,而接下來的工作就是要將 個別建立的動作圖連接起來。在多層式動作圖的概念中,動作圖之間合併的定義是:以 在骨架上的階層關係將兩動作圖連接建立父子關係。所以如兩動作圖之間在骨架上相互 沒有階層關係則無法合併。舉例來說,如果現在有一張全身動作的動作圖與上半身動作 的動作圖,在骨架上的關係是上半身的骨架是全身的子階層,因此我們會將上半身的動 作圖做為全身的動作圖的子圖而與之連接;但如果現在除了前述的兩張圖外又加入了一 個左手動作的動作圖,左手動作在此最接近的父階層為上半身,因此會先做為到上半身 動作圖的子圖與之連接。更為複雜的連接結果如圖 4.6 所示;又如果現在分別有一左手 動作的動作圖與一右手動作的動作圖,這兩個動作在骨架階層上並無父子關係,故無法 連接產生多層式動作圖。

圖 4.6、較為複雜之多層式動作圖簡易完成示意圖,圖上的每一個圈圈皆代表一張動

相關文件