• 沒有找到結果。

多層式動作圖 - 政大學術集成

N/A
N/A
Protected

Academic year: 2021

Share "多層式動作圖 - 政大學術集成"

Copied!
80
0
0

加載中.... (立即查看全文)

全文

(1)國立政治大學資訊科學系 Department of Computer Science National Chengchi University 碩士論文 Master’s Thesis. 學. ‧ 國. 立. 政 治 大. 多層式動作圖. ‧. Multi-layered Motion Graph. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 研究生:林志忠 指導教授:李蔡彥. 中華民國一百零一年七月 July 2012.

(2) 致謝 轉眼間,終於寫到了這一頁。這本論文能夠完成,首先要感謝的就是指導教授,李 蔡彥老師四年半來所付出的耐心與栽培,讓凡事總愛拖到最後一刻的我可以順利的通過 在這期間的每一個考驗。在這專題加上研究生生涯的四年半間,我從老師身上學到了許 多東西,每當碰到問題及困難時,老師總能適時的引導我回到正確的道路上。由於老師. 政 治 大 由衷的感謝。此外,我也要感謝紀明德老師與戴文凱老師在口試時所提供的寶貴見,讓 立. 這四年半的指導,讓我無論是在專業領域上或是思考方式上,都有了成長,在此致上我. ‧ 國. 學. 我能夠把論文寫的更加的完善。. ‧. 在碩士班的日子裡,研究室就像我的家一樣,在這裡所結識的人們都是幫助我成長. sit. y. Nat. 的重要人物。因此我要感謝實驗室的伙伴們:陶百、強哥、伊亮、小 cow、岳黌、君興、. io. al. er. 紅蟲、阿雷、阿傑、KC、阿 zen、映似、小泰、凱新、順貞、胖達、小愛、呆呆夫婦、 頓頓、舒服、建銘、阿呈、旭峰、Mok、Helen、八方堯琪、顧氏雲集、Cyril、函娟、. n. v i n Ch 佩珊、小夫、游丞、宅佩、小白、多比,很開心也很驕傲的可以跟你們一同身為 IMLAB engchi U 的一員,希望未來還能夠有機會與你們一起奮鬥!. 最後要感謝我的父母、弟弟與竹雅,沒有你們的支持與陪伴,該我可以全心的專注 在我自己喜歡的事物上,不用為其它生活上的繁瑣之事而憂心,我愛你們。. 在完成這份論文的過程中,我一直是跌跌撞撞的,而今能夠走到最後,最重要的還 是感謝這一路上曾教導及幫助過我的師長與朋友們,感謝你們,我願將這份榮耀與你們 一同分享。.

(3) 多層式動作圖 摘要 動作擷取法是現今相當受到歡迎的角色動作產生方法,而一般多是使用已擷取好的動作, 以人工的方式將數個不同的動作混合以產生出所需的動作。但想要大量產生符合需求的. 政 治 大 者所給定的動作擷取資料集合,經過自動化的計算找出各個動作資料之間可以連接的動 立 混合動作仍相當不容易,因此有人提出了「動作圖」這個方法。動作圖是一種根據使用. ‧ 國. 學. 作片段。藉由這個自動化的程序,各個動作擷取資料可以相互連接起來,達到在不同的 動作間平順轉換,且同時保有原動作擷取資料擬真特性的目的。但縱使有上述的好處,. ‧. 目前動作圖的技術僅能就所擷取的全身動作進行串接,品質與彈性往往決定於一開始動. Nat. sit. y. 作擷取資料的準備,因此如何讓既有的全身動作資料得以分解再利用,以發揮最大的價. n. al. er. io. 值,是一個重要的問題。在本研究中,我們提出了一個階層式的動作圖結構名為多層式. i n U. v. 動作圖,在這個多層式動作圖的結構中,我們將身體的動作區分成數個部位,分別計算. Ch. engchi. 各自的動作圖後再合併成一個多層式的架構,而合併的過程中我們提出「整體動作相似 度」的計算方式,以做為兩個動作是否容易轉接的比較依據。我們也提出了在不同階層 間動作圖運作的規則,以使計算的複雜度及系統的可用性取得合理的平衡。此外,我們 更進一步提出名為 Motion Script 的簡易語意描述語言,來輔助控制這個具有高複雜度的 動作圖結構。實驗的結果顯示,我們的方法可以即時根據使用者的指令,搜尋並產生出 原動作資料所沒有的動作組合。與傳統的動作圖相比,我們的方法能更進一步的發揮原 動作擷取資料的價值,以有系統的方式讓動作組合自動產生更具豐富性及彈性。. i.

(4) Multi-Layered Motion Graph. Abstract Motion capture is a popular method for generating realistic character animation. In most applications, a motion usually is prepared by manually blending existing captured motion clips to generate a desired motion clip. However, finding a good transition points manually for. 政 治 大. two motion clips is a time-consuming task and cannot be scaled up easily. Motion Graph is a. 立. technique that has been proposed to automate this process by finding suitable connection. ‧ 國. 學. points and the corresponding transition motions between motion data. With this automatic. ‧. procedure, motions captured separately can be smoothly connected while keeping the realism of the captured motions. However, most motion graph techniques only consider the transition. y. Nat. io. sit. of full-body motions in two motion clips, and therefore, the resulting motion .depends on the. n. al. er. variety of motions available in the motion database. It is an important issue to be able to. Ch. i n U. v. compose new motion clips as much as possible with given motion capture database. In this. engchi. research, we propose a hierarchical motion graph structure called Multi-Layered Motion Graph. In this structure, we divide motion data into layers of parts depending on the articulated structure of human body, and then compute a motion graph for each part of the motion. We then combine these motion graphs into an interconnected hierarchical structure. In order to facilitate the composition of motions for different parts from different motion clips, we propose a new metric called Overall Motion Similarity to find reasonable composition of motions in run time. We also propose several rules about how to traverse the motion graphs in. ii.

(5) different layers to generate feasible motions. Furthermore, we have designed a scripting language called Motion Script to facilitate the specification and search of desirable animation to be generated. Our experimental results reveal that our method is able to compose animations that the original motion graph cannot generate in real time. Compared to the traditional motion graph method, our method is able to make good use of existing motion capture library to compose new motions in a systematic way.. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. iii. i n U. v.

(6) 目錄. 第一章 導論 ............................................................................................................................ 1 1.1 研究動機與目的 ....................................................................................................... 1 1.2 問題描述 ................................................................................................................... 4 1.3 論文貢獻 ................................................................................................................... 6. 政 治 大 2.1 動作擷取 ................................................................................................................... 8 立. 第二章 相關研究 .................................................................................................................... 8. ‧ 國. 學. 2.2 程序式動畫 ............................................................................................................. 10 2.3 動作圖 ............................................................................................................……. 13. ‧. 2.4 問題與討論 ............................................................................................................. 14. Nat. sit. y. 第三章 動作圖 ...................................................................................................................... 16. n. al. er. io. 3.1 相似方程式 ............................................................................................................. 17. i n U. v. 3.2 動作圖建立 ............................................................................................................. 20. Ch. engchi. 3.3 問題 ......................................................................................................................... 22 第四章 多層式動作圖之建構 .............................................................................................. 24 4.1 多層式動作圖建構概論 ......................................................................................... 26 4.2 多層式動作圖建立系統 ......................................................................................... 28 4.2.1 動作圖建立系統 IMMGC 總覽 ................................................................... 28 4.2.2 資料前處理 .................................................................................................. 29 4.2.3 動作圖產生器細部架構 .............................................................................. 29 4.2.3.1 動作相似度比較 ............................................................................... 30 iv.

(7) 4.2.3.2 動作連接節點選擇 ........................................................................... 31 4.2.3.3 動作圖清理 ....................................................................................... 32 4.2.4 合併建立多層式動作圖 .............................................................................. 34 第五章 使用多層式動作圖 .................................................................................................. 39 5.1 多層式動作圖階層切換規則 ................................................................................. 40 5.2 動作選擇 ................................................................................................................. 43 5.3 Motion Script ............................................................................................................ 44. 政 治 大. 第六章 實驗結果與討論 ...................................................................................................... 48. 立. 6.1 系統實作 ................................................................................................................. 49. ‧ 國. 學. 6.2 整體動作相似度驗證 ............................................................................................. 50 6.2.1 驗證實驗 ...................................................................................................... 51. ‧. 6.3 動作轉換效率測試 ................................................................................................. 56. y. Nat. io. sit. 6.4 綜合應用範例 ......................................................................................................... 60. n. al. er. 6.4.1 Motion Script 測試 ........................................................................................ 63. Ch. i n U. v. 6.4.2 連續搜尋測試 .............................................................................................. 64. engchi. 第七章 結論與未來發展 ...................................................................................................... 66 參考文獻 ................................................................................................................................ 69. v.

(8) 圖目錄. 圖 1.1 動作圖示意圖 .............................................................................................................. 1 圖 2.1 將同一動作套用到不同的模型上之示意圖 ............................................................ 12 圖 3.1 產生轉換用動作示意圖 ............................................................................................ 17 圖 3.2 計算用動作區間示意圖 ............................................................................................ 19. 政 治 大 圖 3.4 動作圖建立各階段示意圖 立 ........................................................................................ 22. 圖 3.3 動作距離及候選連接點選擇示意圖 ........................................................................ 20. ‧ 國. 學. 圖 4.1 範例多層式動作圖示意圖 ........................................................................................ 26 圖 4.2 系統架構圖 ................................................................................................................ 27. ‧. 圖 4.3 動作圖計算細部架構示意圖 .................................................................................... 30. Nat. sit. y. 圖 4.4 動作連接示意圖 ........................................................................................................ 32. n. al. er. io. 圖 4.5 Tarjan’s Algorithm ........................................................................................................ 33. i n U. v. 圖 4.6 較複雜之多層式動作圖示意圖 ................................................................................ 34. Ch. engchi. 圖 4.7 整體動作相似度初步想法計算示意圖 .................................................................... 36 圖 4.8 動作取代偏移量示意圖 ............................................................................................ 37 圖 4.9 整體動作相似度計算方式示意圖 ............................................................................ 38 圖 5.1 多層式動作圖動作產生架構 .................................................................................... 39 圖 5.2 說明範例所用之多層式動作圖 ................................................................................ 41 圖 5.3 動作選擇示意 ............................................................................................................ 43 圖 5.4 示範 Motion Script 能力用的動作之標籤設定 ......................................................... 44 圖 5.5 Motion Script 之 BNF 定義式 ...................................................................................... 45 vi.

(9) 圖 6.1 實作程式之介面 ........................................................................................................ 48 圖 6.2 實驗所使用的骨架 .................................................................................................... 50 圖 6.3 具有 TALK 標籤的兩動作與 Walk_01 上半身動作的整體動作相似度數值 ......... 51 圖 6.4 整體動作相似度驗證實驗結果 ................................................................................ 53 圖 6.5 整體動作相似度驗證實驗之動作選擇結果 ............................................................ 54 圖 6.6 單層的多層式動作圖其效率測試結果 .................................................................... 54 圖 6.7 二層的多層式動作圖其效率測試結果 .................................................................... 55. 政 治 大. 圖 6.8 三層的多層式動作圖其效率測試結果 .................................................................... 55. 立. 圖 6.9 層數與動作產生效率的關係 .................................................................................... 56. ‧ 國. 學. 圖 6.10 實驗用動作資料庫裡所含的動作 .......................................................................... 59 圖 6.11 使用本研究方法後可額外產生的動作 .................................................................. 60. ‧. 圖 6.12 測試用的動作之標籤設定 ...................................................................................... 61. y. Nat. io. sit. 圖 6.13 測試所使用到的 Motion Script ................................................................................ 61. n. al. er. 圖 6.14 Motion Script 測試結果截圖 .................................................................................... 62. Ch. i n U. v. 圖 6.15 連續搜尋測試用的 Motion Script ............................................................................ 64. engchi. 圖 6.16 Motion Script 連續搜尋測試結果截圖 .................................................................... 65 圖 7.1 說明本研究限制用的多層式動作圖範例 ................................................................ 67. vii.

(10) 第一章 導論. 1.1 研究動機與目的. 政 治 大 角色動畫(Character Animation)的製作一直都是相當有難度的工作,也一直都是一 立. 門熱門的研究主題,如果可以簡化角色動畫產生的流程,那就可以將角色動畫應用在許. ‧ 國. 學. 多有趣的地方,例如:可以讓小朋友演出一個簡短有趣的動畫小故事,較為進階的使用. ‧. 者更可以創作出一個有完整劇本的動畫,或是應用在遊戲上時,遊戲玩家所操作的角色. sit. y. Nat. 可以有較豐富的動作表現等。而現今產生角色動畫的方式大略可以分為三種,第一種方. io. er. 式是關鍵格動畫(Keyframing),這種方式通常由動畫師以電腦動畫設計軟體來指定角. al. 色動畫中足以表示意義的重要影格(Frame) ,再將影格與影格之間作內插來產生中介的. n. v i n Ch 影格,以產生動畫,而這些重要的影格我們就稱之為關鍵格(Key frame)。這種方式的 engchi U. 好處是動畫師對角色有完整的控制權,經過專業訓練的動畫師甚至可以製作出假以亂真 的動畫,但相對來說,想要產生品質良好的動畫就需要經驗豐富的動畫設計師,而且即 使是經驗豐富的動畫設計師,短短數秒鐘的動畫也需要花上許多時間來製做,因此這種 方式往往有製作成本昂貴、費時的缺點。因此,對於沒有經過專業訓練的一般使用者而 言,是難以使用這種方式來創造出一個完整流暢的動畫。除了使動畫師使用電腦軟體來 產生動畫以外,第二種是以樣本資料為基礎的方式來產生角色動畫,這種方式通常是使 用特別的設備將人體的實際動作給捕捉下來並儲存成訊號資料,並在電腦中製作一個相 1.

(11) 對應的角色模型,最後將儲存的訊號資料套用到角色身上來產生動畫,而這種方式稱為 動作擷取(Motion Capture) 。如果想要對動作擷取產生的動畫做出變化的話,通常是透 過訊號處理的方式將偏好的風格特色加入使其產生變化。這個方法的優點是產生出來的 動畫相當的逼真,但是對於運動的結構或意義一無所知,所以變化程度有限,難以適應 不同的環境。第三種是以知識為基礎的動畫(Knowledge-based Animation) ,這種方式通 常是以模擬或是運動計劃的方式來產生動畫。但即使有良好的知識基礎或是模擬系統, 要產生一個擬真的動畫仍是這種方式的一大難題。. 政 治 大 如前所述,動作擷取是屬於以樣本資料為基礎的方式來產生角色動畫的方法,但動 立. ‧ 國. 學. 作擷取所產生的動畫是較不易被修改的,因為在動作擷取的資料裡,通常除了描述一個 動作的各種低階屬性變化以外就沒有其它的資訊了,因此我們無法得知對於一筆特定的. ‧. 動作擷取資料而言,到底那些屬性才是重要的,更不用說各個屬性對於動作變化的意義。. Nat. sit. y. 而這造成動作擷取產生的動畫非常不容易調整,而即使可以調整,其幅度也是相當的有. n. al. er. io. 限。因此每當新的動畫需求出現時,如果手上的動作擷取資料都無法滿足這個新的需求,. i n U. v. 就得要再擷取新的資料,才能產生符合新需求的動畫,而這昂貴且耗時的缺點,使得使. Ch. engchi. 用動作擷取來產生的動畫變的難以親近以及利用。不過有時新的需求或許無法由資料庫 裡單一的一個動作擷取的資料所滿足,卻可以由兩個或兩個以上的動作來混成 (Synthesize)後來滿足,舉例來說:如果我們想要一個動畫角色在一個指定的空間裡 走一圈,雖然我們資料庫裡並沒有任何的動作擷取資料是可以直接用在這個情境下的, 但我們可以透過直走和轉彎兩個動作擷取資料來混成出我們所需要的動作。因此,如果 可以將足夠多個動作擷取資料適當的結合起來,那就可以創造出一個具有豐富動作的動 畫角色。而動作圖就是順著這個思考脈絡而生的。. 2.

(12) 立. 政 治 大. er. io. sit. y. ‧. ‧ 國. 學. Nat. 圖 1.1、動作圖示意圖[10]. al. 動作圖是一個由許多動作片段所連接而成的有向圖(Direct Graph),而動作圖上的. n. v i n Ch 一條路徑就代表了一段動作。因此,要從動作圖得到我們所需要的動作就可以轉換成圖 engchi U 論上的一個問題,可以使用圖論或是人工智慧(AI)中的搜尋演算法來找出一條可以解 決問題的路徑,而這條在動作圖上的路徑就是一個符合需求的動作。但傳統的動作圖都 是以全身的動作為其礎來計算所構成的圖,因此動作圖的能力與做為其基底的動作擷取 資料集合相去不遠。Jang 等人[9]提出了一個將身體各部位的動作拆解分開後,再以自動 化的方式找出合理的組合後,來產生新的動作的方法來豐富原始動作擷取資料庫的方法, 他們提出來的方法所得到的結果相當的不錯結果,但資料庫中的動作之間仍是彼此獨立 的,無法直接的拿來產生有變化的連續動作。因此在本研究中我們提出了一個可以身體 3.

(13) 各部位可以獨立切換動作,且能夠產生連續動作的階層式動作圖結構,舉例來說,如果 以走路與原地講話這兩個動作為基礎來產生動作圖的話,而該張圖能產生的結果最多也 只是走一陣子的路之後停下講話或是在原地講話之後開始走路,而不能產生走路與講話 之混合動作:一邊走路一邊講話。為了達到這個目的,我們會需要一個有別於傳統的單 層動作圖結講,而是一個多張包含身體各部份的多重動作圖結構,在這裡我們稱為多層 式動作圖(Multi-Layer Motion Graph)。. 政 治 大 的動作圖,最後再加以合併;透過這個多層式的動作圖結構,我們得以最大化的利用我 立 大略來說,本研究的目的在於除了計算傳統的動作圖外,另外計算數張身體各部份. ‧ 國. 學. 們原始用來計算動作圖的動作擷取資料,並增加動作圖能夠產生動作的豐富性,同時亦 保留了動作圖平順轉換的優點。但這個可以產生大量動作組合的結構所造成了一個問題,. ‧. 那就是控制上的困難。因此我們以人工的方式為每個動作(包含全身動作、上半身動作、. Nat. sit. y. 手部等…有區分出來的部位)加上足以表答該動作特性的標籤,並在這些標籤的基礎之. n. al. er. io. 上建立了簡易的語意系統。. 1.2 問題描述. Ch. engchi. i n U. v. 傳統動作圖產生動作的方式是將原有的動作片段以最佳的方式相互連接起來。而我 們的目標是要基於傳統動作圖建立的方法之上,建立一個帶有身體各部份子圖的多層式 動作圖結構。有了這個多層式的結構後,我們希望可以產生將不同動作各取一部份後所 合成的新動作,同時亦保留了動作圖可以在不同動作間平順轉換的特性。依照這個目標 我們將本研究切分為兩大部份,第一部份是我們是如何產生這種新的動作圖結構,而第 二個部份是我們要如何使用這新的動作圖結構來產生我們所想要的動作。. 4.

(14) 在第一部份動作圖的建立前,在資料的前處理階段我們會先以人工的方式給每個動 作加上一個或是多個的標籤。在建立動作圖時,我們會先個別的產生身體各部位獨立的 動作圖,之後再加以合併。在合併時,我們會以全身的動作圖做為最主要的參考,並以 此為基底來建立整個多層次的結構。在整個多層式的動作圖的建立過程中,我們使用了 Kovar 等人[10]所提出的 Point cloud distance 來做為尋找動作間相似片段的距離方程式, 而在找到相似的動作片段後,我們統一使用線性混合來產生連接相似動作片段間的轉換 動作。在合併各個部位所獨立產生的動作圖時,我們使用骨架做為基礎,將各個部位身. 政 治 大. 動部位的動作圖,依照其在骨架上的階層關係給連接起來,同時更會計算每個全身動作. 立. 其所屬的部份動作與其它每個可相互轉換的部份動作之間的「整體動作相似度」,並將. ‧ 國. 學. 這個數值存下來以供使用多層式動作圖產生動作時使用。. ‧. 而在第二個使用多層式動作圖來產生動作的步驟中,與以往動作圖的研究一樣,為. Nat. sit. y. 了要使用多層式動作圖來產生符合使用者需求的動作,我們需要設計一個搜尋演算法來. n. al. er. io. 達到這個目的。在本研究中我們將在圖上的搜尋過程分成兩大步驟,分別是在動作種類. i n U. v. 層級的 Global search,以及在動作片段層級的 Local search。在 Global search 的部份,讀. Ch. engchi. 取動作圖時,會同時掃描在動作圖中每個動作的連接關係並建立一張 Metric 表,然後使 用 Floyd-Warshall 演算法建立兩兩動作間最短路徑的表格,每當使用者設定其需求時, 系統就會根據這張表格找同時參考「整體動作相似度」來找出一條 Global 的最短路徑, 在找到這條路徑後,Local search 就派上用場了;Local search 會根據 Global search 所給 予動作轉換路徑一步步的尋找最近的轉換節點,並產生動作結果。以上的步驟是我們產 生動作的基礎,在這個基礎之上結合前處理時使用者給予動作的標記,我們提供簡易的 語法給使用者來設定在各個狀況下所要使用動作的規則。. 5.

(15) 本論文在系統設計上同樣由二大部份所構成,分別為:動作圖建立以及動作產生。 動作圖建立的部份負責產生部份動作亦可獨立轉換的多層式結構,增加動作圖在使用上 能夠產生動作的豐富性。動作產生的部份負責根據使用者的指令及當下環境的狀態,並 結合簡單的語法,使得多層式的動作圖在結構上複雜度提高的同時,依然能夠輕易的讓 使用者得到最符合需求的動作。. 1.3 論文貢獻 本論文的貢獻包含:. ‧ 國. 學. . 立. 政 治 大. 動作圖實驗平台. ‧. 我們設計一個名為 IMMograph 的動作圖實驗平台,在這個平台上,我們除了設計. Nat. sit. y. 了自定的骨架以及動作系統,更整合了 C++上主流的 3D 繪圖引擎(OGRE)以及 GUI. . al. n. 確性。. er. io. 繪製函式庫(QT) ,使我們可以快速的設計應用程式,以驗證我們所產生的動作圖之正. 多層式動作圖結構. Ch. engchi. i n U. v. 在計算動作圖時,我們將不只計算兩動作其相互之間全身運動方式的相似度,我們 更會將身體拆分為數個部份(ex. 手、上下半身等...) ,分別計算其運動的相似度來形成 另一張動作圖,並在建立這個結構時,會為全身動作外身體其它部位的動作圖中的動作 間,計算「整體動作相似度」的數值,這個數值將做為一個指標,供我們在使用這個結 構來組合出新的動作時,能有一個依據來判斷該組合是否合適。. 6.

(16) . 以語意尋找合成動作的機制. 我們設計了一個簡易的 Script 語法,名為「Motion Script」 ,讓使用者可以使用高階 的語法來控制我們所提出的「多層式動作圖」,不用去了解底層實際運作的方式。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. 7. i n U. v.

(17) 第二章 相關研究. 2.1 動作擷取. 政 治 大. 程序式動畫、關鍵格動畫或是動力學模擬的方法等來產生動畫的方式,在製作時或. 立. 多或少都需要對動畫角色的運動有一定程度的認知。而動作擷取方式產生的動畫,就只. ‧ 國. 學. 是對於經由硬體設備所擷取到的動作資料在參數層面上做出變化。目前所最常見的動作 擷取設備可以分為兩類,一類是使用重力加速器,而另一類是使用光學的設影機來擷取. ‧. 動作的變化。但無論是那一類的設備,在將動作擷取下來後都需要經過消除雜訊、矯正. y. Nat. io. sit. 以及使用反向機構學來計算出未被直接測度到的關節之數據等步驟後,才可以變成可以. n. al. er. 使用的資料,而通常動作擷取資料都會以角色所有關節的旋轉或是位置來表示單一的姿. Ch. i n U. v. 勢,然後由數個連續的姿勢資料來代表一個動作。雖然使用動作擷取的方式來產生動畫. engchi. 可以不用對動畫角色的運動方式有所認知,但因為擷取下來的資料是直接來自真實演員 的運動,因此,在所有的動畫產生方法中,動作擷取所產生動畫是最為逼真的。 為了將動作擷取的資料應用在不用的環境上以符合使用者的需求,我們需要對動作 擷取的資料進行修改,但因為動作擷取資料裡不包含任何的運動結構,因此修改動作擷 取資料的方式往往都是對現有的資料進行混合或延長等運算,我們通常稱修改動作擷取 資料的動作為動作編輯(Motion Editing),而接下來將簡單介紹兩種動作編輯的方式。 動作混成(Motion Blending)是最基本的動作編輯方法之一,他的目的在於將使用 8.

(18) 者提供的兩個動作擷取資料依指定的比例混合。而動作混成最常見的應用是在需要平順 的連接兩段動作資料時。通常混成的方式將全身所有的關節角度以及身體的位置以線性 內插的方式來做混成,而這個方法簡單,但效果只能算是差強人意,最基本混成的式子 如下: M′(t) = w(𝑡)𝑀1 (t) + (1 − w(t))M2 (𝑡). (2.1). 其中𝑀1 (t)和M2 (𝑡)為兩個要用來混成的動作擷取資料,w(t)是混成時的權重值,M′(t)是. 政 治 大 expansions)來使動作轉換時的混成更為平順,Bruderlin 和 Williams[4]則是將擷取下來 立 混成出來的結果。Unuma 等人[20]的研究在內插的比例上加入了傅立葉展開(Fourier. ‧ 國. 學. 的資料從原本的時域轉換到頻域後再進行動作的混成。Rose[15]在他的研究中將動作轉 換時的動作混成加入了時間與空間的限制,並且計算出不同方式的動作混成所需要耗費. ‧. 的能量,然後以最佳化的方式找出耗費最低能量的混成方式。動作混成最大的好處就是. Nat. sit. n. al. er. io. 不合理的動作。. y. 計算的複雜度較低,但隨意的混成兩個動作是相當危險的,因為是有可能產生出視覺上. Ch. i n U. v. 而動作變形(Motion Warping)則是另一個編輯動作的基本方式,這個問題最早是. engchi. 由 Witkin 和 Popovic[21]所提出,在做動作變形前通常會先了解變形後目標的需求以及 限制,然後去定義一個可以符合需求的目標函數,但同時也希望可以保原動作擷取資料 的特性與結構,舉例來說,如果想將一動作擷取資料𝑪(𝒕)變形成𝑪′(𝒕),在他們的研究中, 可以將滿足目標限制的函數以如下的方式來表示: 𝑪′(𝒕) = 𝒂(𝒕)𝑪(𝒕) + 𝒃(𝒕), 𝒕 = 𝒈(𝒕′). (2.2). 其中𝑪′(𝒕)為目標所需的結果,𝑪(𝒕)是原本的擷取資料,a(t)是縮放的係數,b(t)是用來在 做位移,而𝒕 = 𝒈(𝒕′)是在時間上的變化。但想要找到一個符合需求的變形函數通常需要 9.

(19) 以人工去不斷的嘗試,因此 Hsu 等人[8]提出了一個自動化的方法,使編輯者只要指定少 數的時間限制,而電腦就會自動的找出一個符合限制的變形函數。. 以上動作混成以及動作變形這兩個方式都是在想要編輯動作擷取產生的動畫時最 常見也是最基本的方法,但在使用時仍要非常的小心,因為基本上兩個方法都是對擷取 下來的資料做出訊號層面上的變化,無法保證產生出來結果的品質。因此建立在這兩個 方法的基礎之上來發展出來的研究至今仍是一個相當熱門的研究題目,雖然步驟不外乎. 政 治 大 子,但產生的結果以及可變化的幅度已經較最原先的方法進步了不少。 立. 是先分析資料,然後建立轉換的模型,最後經由轉換模型將原本的資料轉換成所需的樣. ‧ 國. 學. 2.2 程序式動畫. ‧. 程序式動畫是屬於以知識為基礎的動畫產生方式。如果想要製作一個角色的動畫動. y. Nat. io. sit. 作產生器的話,一般來說大致上的流程如下:首先我們需要根據生物力學上的知識來分. n. al. er. 析並了解想要產生的動作,然後將所有得到的資料匯整起來,依據分析的結果來設計該. Ch. i n U. v. 運動該有的參數、建立產生運動的規則並結合適當的控制器,最後就可以製作出產生該. engchi. 動作的動作模型。程序式動畫的概念根據我們知所最早由 Zeltzer[22]所提出,在他的研 究中他參考了 Tomovic 與 McGhee[19]將有限狀態機(Finite State Machine)應用在生物 工程學系統上的經驗,以及之前對於人類運動的研究的成果,在觀察並分析人類的走路 動作後,將走路動作同樣以一個有限狀態機來定義,而狀態機中的每一個狀態都是走路 動做中的一個關鍵格,而在各個關鍵格之間則是使用線性內插的方式來產生連接用的連 續影格。 Bruderlin 和 Calver[2, 3]在他們的研究中更進一步的在走路程序中加入了控制器的 10.

(20) 概念,透過使用反向鐘擺(Inverted Pendulum)及正向機構學(Forward Kinematics)這 兩個控制器,使在人物行走時踏出每一步的時候,都會以有接觸到地面的腳設為身體的 支撐點,重新的修正身體的移動量,以確保動畫人物不會發生像腳穿過地面等不自然的 現象。此外,透過了控制器及更良好的設計方式,在他們的動作系統中使用者可以只操 弄少許的簡單明瞭的高階參數就可以改變動作的樣式,而不用去接觸較為低階繁瑣的參 數,而之後他們更將他們的方法進一步的應用在人類跑步的動作上。. 政 治 大 來做為預防動畫角色的雙腳穿過地方或是滿足特定的限制,但因為反向機構學的運算對 立. Boulic 等人[1]在他們的研究中加入了反向機構學(Inverse Kinematics)的控制器,. 於當時的電腦來說,是一種相當複雜的運算,因此在即時的應用環境下無法連續的使用。. ‧ 國. 學. 因此為了同時兼顧即時執行的效率以及反向機構學的控制器,他們在產生動作時仍以運. ‧. 算複雜度較低的正向機構學控制器為主,而在需要對影格做後處理的時後才使用方向機. sit. y. Nat. 構學的控制器。然而,在接下來的研究中,因為電腦運算能力的快速成長,反向機構學. io. n. al. er. 變成了在制做程序式動畫時的必備基本工具。. i n U. v. Perlin[13]在他的研究中,除了設計了數個動作產生的程序,他更開始關心產生出來. Ch. engchi. 的動作在細節上的表現。在他的動作模型中,他加入了他先前所提出用來產生物體表面 材質的 Perlin 亂數(Perlin Noise)[12],使動畫程序產生的動畫看起來不會都是那麼的 機械化,生動化了動畫動作在視覺上的感受。Chen 和 Li 除了使用了反向機構學的控制 器來輔助產生走路的動作之外,也同時運用了機器人學中的運動計劃的技術來計算動畫 角色在有障礙物的環境中行進的路徑。Throne 等人[18]在他們的研究中,除了設計了一 個程序式動畫的產生器以外,加入了一個以手繪的方法來輸入的使用者介面。Hecker 等人[7]在他們的研究中設計了一個近似自然語言(Natural Language)的程序式程畫設 計系統,使藝術家在設計運動程序時可以因為自然語言的輔助,變的更加的直覺、容易, 11.

(21) 此外,他們並結合了在角色模型上標記的方式以及自行開發的反向機構學系統,使他們 的動畫成果可以套用到未知形狀的角色身上(圖 2.1) ,而且最終的成果也有運用到遊戲 Spore 上。 程序式動畫發展到之已將近二十多年了,而一個動畫產生程序其生產出來動畫品質 的好壞,是由其背後所使用的運動模型所決定,是一直以來不變的原則。要設計一個好 的運動模型,也一直以來是一件不容易的事。如果想要設計一個運動模型,可以產生品. 政 治 大 運動本身的風格變化、物理學上的運動定律、使用環環可能會有的限制等。如果想要設 立. 筫較高的動畫,所需要考慮的細節與變化的因素就要比較多,而這些要考慮的項目會有:. 計出一個能使用在任何狀況下的完美的運動模型,就必須要將所有的因素給窮舉出來,. ‧ 國. 學. 但這幾乎是不可能的一件事。但其實在大部份的狀況下,動畫應用的環境都不是完全沒. ‧. 有限制的,因此我們其實是可以例舉及考慮到可能的細節以及有可能變化的因素,依然. n. al. er. io. sit. y. Nat. 可以在大部份的狀況下使用程序式動畫來製作出符合需求且具有彈性的動畫。. Ch. engchi. i n U. v. 圖 2.1、將同一動作套用到不同的模型上之示意圖. 12.

(22) 2.3 動作圖 動作擷取資料彈性低的缺點是因為單一的動作難以做出大幅度的變化,但如果我們 可以事先設想到可能應用的環境,將所有有可能會用到的動作擷取資料都準備好,當碰 到變化時就拿出符合需求的動作資料來使用,或許也是一個解決問題的方式。而動作圖 就是一個以這種思維來解決問題的答案,動作圖是將許多的動作擷取資料依照一定的規 則給連接起來,所形成的一個有向圖。動作圖是一個一直都有的概念,但直到 Kovar 等. 政 治 大 開始有系統的發展了起來。在他們的研究中,他們提出了名為 Point cloud distance 的動 立. 人[10]在他們的研究中提出了一個自動化建立動作圖的方法後,動作圖的研究才真正的. 作相似度比較方法,並以此為基礎設計了一個自動化的程序來兩兩的比對資料庫裡所有. ‧ 國. 學. 動作片段,然後將相似的片段給找出來,在他們的研究中,所提出比對動作相似度的式. ‧. 子如下:. y. (2.3). sit. Nat. min𝜃,𝑥0 ,𝑧0 ∑𝑖 𝑤𝑖 ||𝑝𝑖 − 𝑇𝜃,𝑥0 ,𝑧0 𝑝𝑖′ ||2. n. al. er. io. 其中線性轉 𝑇𝜃,𝑥0 ,𝑧0 將點 p 在水平面上(在此假設水平面為 xz 平面)旋轉 𝜃 角然後平. i n U. v. 移(𝑥0 , 𝑧0 ) ,此計算的索引 i 會涵蓋 Point cloud 上所有的點,權重 𝑤𝑖 可依使用者決定. Ch. engchi. 每個點的重要性來自由設定。在比較兩兩動作間的每一個動作片段後,足夠相似的片段 會利用動作編輯中的動作混成來將相似的動作片段給連接起來,形成動作圖。但這個方 法在連接性以及圖的複雜度上都還有一些待解的問題。因此在這個研究的基礎之上, Zhao 和 Safonova[23]以在兩兩動作片段內插出數個新的動作的方式來增加動作圖的連接 性,並且提出了依照動作類型的不同使用不同的混成方式來連換動作,以增加混成出來 動作的品質。Safonova 和 Hodgins[16]提出了利用 A*演算法加快動作圖產生動作的時間, 以及刪減圖上多餘節點的方法。Heck 等人[6]將程序式動作引入到動作圖之中,在這個. 13.

(23) 研究中他們提出了一個離散化的方法,在程序式動作的參數空間上取出數百個具參數組 合來做為整個連續空間的代表,並套用 Kovar 等人[10]的方法來計算欲與之相連的動作 之相似度,最後在參數空間上框出合理可以相連的區域並記錄下來,這個方法達到了將 程序式動畫與其它動畫產生的方式做出適當的結合,來達到截長補短的效果;但全身性 的動作的程序設計仍是一個難題,因此在實用上仍有一點距離。. 2.4 問題與討論. 政 治 大. 在前面的介紹中,我們得知運動擷取的方法是直接將動作擷取下來,轉換成訊號. 立. 資料的形式,所以比起程序式動畫與其它動畫產生動畫方式來說,運動擷取方式產生的. ‧ 國. 學. 動畫最為擬真,而且運動擷取資料編輯方式的計算量相當對較小,因此現在這種方式已 經被大量的應用在動畫、電影或是即時的虛擬環境上。但因為難以經由運動擷取的資料. ‧. 來了解該筆資料所記錄的運動其背後的運動結構,因此編輯的幅度大多有一定的限制,. y. Nat. er. io. sit. 即使成功的做出了超過限制的編輯,產生出來的動作在視覺上仍可能是不合理的。. al. 另一方面,程序式動畫的根本就在運動模型的建立。而這又建立在我們對於運動本. n. v i n Ch 身的了解與使用環境的限制,因此程序式動畫比較適合用在運動結構較有規則的動作, engchi U 如走路、跳躍等。一些比較沒有規則的動作像跳舞等就比較不適合使用動序式動畫的方 式來產生。但對於那些可以使用程序式動畫產生的動作而言,其最大的好處就是可以輕 易透過調整高階參數的方式來產生符合需求的動作。但要設計出一個好的動畫程序實屬 不易,而且要找出產生擬真動量的參數也是一個需要不斷嘗試的工作,但它高彈性的優 點與其它動畫產生的方式比較起來仍是有相當大的優勢。除此之外,因為程序式動畫具 有明顯結構的高階可調整參數,可以使其它的程序可以很輕易的來調整這些參數,以達 應用的目的。 14.

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

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

(26) 圖 3.1、產生一轉換用動作來將原本兩個分開的動作結合起來之示意圖. 3.1 相似度方程式. 立. 政 治 大. 動作圖建立的流程中,首要的問題就是動作片段間「相似度」的定義,而我們將此. ‧ 國. 學. 種用來計算兩動作片段間「相似度」的方程式稱之為「相似度方程式(Similarity Metric) 」 。. ‧. 在此我們以距離函式 𝐷𝑖𝑗 = 𝐷(𝑃𝑖 , 𝑃𝑗 ) 來表示相似度方程式,其中 𝑃𝑖 和 𝑃𝑗 分別為兩個 單一的動作片段(Motion Clip,即動作擷取資料中的一個影格),而距離函式的結果越. y. Nat. io. sit. 小則代表兩動作片段越相似。直覺上的想法我們會覺得直接拿兩片段所表示的姿勢來做. n. al. er. 比較就可以了,但這樣讓人感到略顯不足,因為一個良好的距離方程式所要考慮的應不. Ch. i n U. v. 僅只是兩動作片段在單一片段其靜態上其姿勢的差別,更要考慮到兩動作片段在動態上. engchi. (即一小段的動作片段區間)的動作差別。而許多人也在此概念下提出了不同的方法來 實做此距離函式,其中 Lee 等人[11]提出了基於 Joint angle 的距離方程式,而兩動作片 段 i 與 j 的距離 𝐷𝑖𝑗 是基於 Joint angle 的距離方程式。其式子如下所示:. 𝐷𝑖𝑗 = 𝐷(𝑃𝑖 , 𝑃𝑗 ) = 𝑑(𝑝𝑖 , 𝑝𝑗 ) + 𝑤𝑣 𝑑(𝑣𝑖 , 𝑣𝑗 ). (3.1). 其中 𝑑(𝑝𝑖 , 𝑝𝑗 ) 代表兩片段關節角度上的差異,而 𝑑(𝑣𝑖 , 𝑣𝑗 ) 則是兩片段關節速度上的差 異,而 𝑤𝑣 則是用來調整速度重要性的權重值。 𝑑(𝑝𝑖 , 𝑝𝑗 ) 的計算方式如下所示: 17.

(27) −1 2 𝑑(𝑝𝑖 , 𝑝𝑗 ) = ||𝑝𝑖,0 − 𝑝𝑗,0 ||2 + ∑𝑚 𝑘=1 𝑤𝑘 ||log(𝑞𝑗,𝑘 𝑞𝑖,𝑘 )||. (3.2). 其中 𝑝𝑖,0 與 𝑝𝑗,0 分別是 root 點在第動作片段 i 與動作片段 j 時的位置,𝑞𝑖,𝑘 與 𝑞𝑗,𝑘 分別是關節 k 在第 i 個動作片段與第 j 個動作片段時的旋轉量。而在本研究中我們所 採用的是 Kovar 等人[10]的所提出的 Point Cloud Distance 方法。在他們的想法中,一般 動畫的動畫角色所顯示出來的樣子是由其內在的骨架所決定,因此這個方法認為比較兩 動作片段即是比較兩個由骨架所驅動的姿勢。綜合以上,想要計算兩動作間的距離就是. 政 治 大 界座標所集成的點來構成我們所使用的點雲。在實際要計算動作片段 𝑃 立. 將比較兩個由骨架所驅動的點雲(Point Cloud),而在此我們將骨架的各個關節點之世 𝑖. 和動作片段 𝑃𝑗. ‧ 國. 學. 的距離 𝐷(𝑃𝑖 , 𝑃𝑗 ) 時,需要同時將與這兩個動作片段有關的兩長度為 k 的動作區間考慮 進來,其分別是一段以 𝑃𝑖 為起點的區間 [𝑃𝑖 , 𝑃𝑖+𝑘−1 ] 而另一段則是以 𝑃𝑗. 為終點的區. ‧. io. n. al. sit. 𝐷(𝑃𝑖 , 𝑃𝑗 ) = 𝐷(𝑃𝑗−𝑘+1 , 𝑃𝑖+𝑘−1 ). (3.3). er. Nat. y. 間 [𝑃𝑗−𝑘+1 , 𝑃𝑗 ] 如圖 3.2 所示,同時我們發現:. i n U. v. 意即動作片段 𝑃𝑖 與 𝑃𝑗 的相似度計算方式和 𝑃𝑗−𝑘+1 與 𝑃𝑖+𝑘−1 是一樣的。透過比較兩. Ch. engchi. 動作片段區這個方法,使他們可以將動態上的動作差別考慮到方程式中。此外這個用來 計算距離的動作區間與最後用來混合產生出來做為連接用的動作是一樣的,因此根據 Mizuguchi 等人的建議我們將 k 的值設為 20(當動作的 FPS 為 60 時約為 1/3 秒)。. 18.

(28) 政 治 大. 圖 3.2、由圖所示我們得知 𝐷(𝑃𝑖 , 𝑃𝑗 ) 與 𝐷(𝑃𝑗−𝑘+1 , 𝑃𝑖+𝑘−1 ) 計算時所使用的動作. 立. 區間的一樣的,因此 𝐷(𝑃𝑖 , 𝑃𝑗 ) = 𝐷(𝑃𝑗−𝑘+1 , 𝑃𝑖+𝑘−1 ). ‧ 國. 學. 當在兩動作區間中取出動作並轉成點雲之後,最後還有一個問題需要解決。動作一. ‧. 開始在擷取時可能兩個動畫角色在方向及位置上都是不相同的,因此在開始計算前,我. sit. y. Nat. 們需要將一個點雲經過旋轉與平移後與另一點雲對齊(Align)。最後動作片段 𝑃𝑖 和動. n. al. er. io. 作片段 𝑃𝑗 的距離計算的方式就是將兩點雲中所有相互對應的點之歐幾里得距離. i n U. v. (Euclidean distance)加總起來。以上的描述做成公式後就如下面的式子所示:. Ch. engchi. 𝐷(𝑃𝑖 , 𝑃𝑗 ) = min𝜃,𝑥0 ,𝑧0 ∑𝑖 𝑤𝑖 ||𝑝𝑖 − 𝑇𝜃,𝑥0 ,𝑧0 𝑝𝑖′ ||2. (3.4). 其中線性轉換 𝑇𝜃,𝑥0 ,𝑧0 將點 p 在水平面上(在此假設水平面為 xz 平面)旋轉 𝜃 角然後 平移 (𝑥0 , 𝑧0 ) ,此計算的索引 i 會涵蓋 Point cloud 上所有的點,權重 𝑤𝑖 可依使用者決 定每個點的重要性來自由設定。權重的設定對不同類型的動作時會有不同的最佳設定, 但在尋找比較同一組動作之間所有的動作片段時,其權重的設定必須一致。最後計算出 來的距離結果,其距離越大者則兩動作片段越不相似,反之亦然;但是計算出來的距離 數值是沒有實質上的絕對意義。換言之,我們只能從距離數值的大小來得知兩組動作片 19.

(29) 之間那一組連接起來後會是相對起來品質比較好的轉換,而不能經由一個絕對的數值來 決定何者是品質好的連接。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. i n U. v. 圖 3.3、動作距離及候選連接點選擇示意圖,顏色越深代表距離值越高,而圖上綠色. Ch. engchi. 的點為候選轉換點. 3.2 動作圖建立 在產生動作圖之前使用者必需先收集及擷取所有在應用情境中會使用到的動作, 整理後形成一個做為基底的動作擷取資料集合。動作擷取資料中的每一個影格在圖上皆 是一個獨立的點,而點和點之間的有向邊連接則代表這兩點間可以平順的轉換。原始動 作擷取資料中相鄰的兩個影格必定是可以平順的轉換的,因此在起始時我們會將到原動. 20.

(30) 作擷取資料中相鄰的點加上連接(圖 3.4(B)),接來下為了找到預設以外的連接,我們 使用前面所提到的 Point cloud distance 來計算所有動作片段之間兩兩的相似度。在計算 完兩動作中所有動作片段之間的相似度之後,我們以一個二維的矩陣來表示其結果,如 圖 3.3 所示。我們接著將矩陣上各區的 Local Minima(圖 3.3 中的綠點)取出,做為我 們的候選轉換點(Candidate transition point) ,並透過指定一個相似度的門檻值,如果在 候選轉換點中兩動作片段 𝑃𝑖 和動作片段 𝑃𝑗 的相似度 𝐷(𝑃𝑖 , 𝑃𝑗 ) 的值小於我們所指定. 政 治 大. 的門檻值,則我們將此兩動作片段視為足夠相似可以來創造連接的組合。由前所述. 立. 𝐷(𝑃𝑖 , 𝑃𝑗 ) = 𝐷(𝑃𝑗−𝑘+1 , 𝑃𝑖+𝑘−1 ) ,如果當 𝐷(𝑃𝑖 , 𝑃𝑗 ) 小於我們所指定的門檻值時,我們會. ‧ 國. 學. 分別創造兩個有向連接(圖 3.4(C)),分別是從 𝑃𝑖 到 𝑃𝑗 以及從 𝑃𝑗−𝑘+1 到 𝑃𝑖+𝑘−1 ,. (3.5). sit. y. Nat. t = 1 − 𝑒 (−𝑠/𝜎). ‧. 並為這兩個連接計算一個轉換花費所使用的的式子如下:. n. al. er. io. 其中 t 是指前面的轉換花費,s 是兩動作片段的相似值,𝜎為選取連接點用的門檻值,而. i n U. v. t 的範圍介於 0 和 1 之間(0 為最平順的轉換而 1 是最不順的轉換)。當所有動作之間的. Ch. engchi. 連接建立完成後,最後一個步驟就是將這張圖去蕪存菁,去除掉那些會使我們在使用時 進入死路(Dead End)的結點,即找出這張圖的最大強連接點集合(Strongly connected component, SCC),而這最後所找到的最大強連接點集合所構成的圖就是我們最後所要 的動作圖(圖 3.4(D))。. 21.

(31) 立. 政 治 大. ‧. ‧ 國. 學 y. sit. io. n. al. er. Nat. 圖 3.4、動作圖建立各階段示意圖. 3.3 問題. Ch. engchi. i n U. v. 動作圖為動作的混合提供了一個相當具有保證性的自動化技術,同時動作圖具有結 構簡單以及能夠使用簡易的路徑搜尋演算法產生長動作的能力,但動作圖仍有許多在使 用上或在建立時待解的問題,因此至今仍相當的受到研究者們的歡迎,並應用在動畫的 自動產生之系統等的議題上。 在本論文中我們所面對的問題是,在使用傳統動作圖時,當你想要從一動作切換至. 22.

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

(33) 第四章 多層式動作圖之建構. 傳統動作圖所能合成的動作是大幅度依賴動作資料庫的內容。基本上傳統動作圖是. 政 治 大. 一個描述多個不同動作之間的連接關係圖,並不具有能夠組合出新動作的能力。因此如. 立. 果想要使用傳統動作圖產生出一個變化豐富的連續動作時,動作圖之中勢必要包含相對. ‧ 國. 學. 大量的動作種類。但是,如果我們能夠改變現有的動作圖結構,使其具有能力可以藉由. ‧. 重新組合動作資料庫中的部份動作來產生出新的動作,那我們就可以用常見的數個基本. sit. y. Nat. 動作,搭配一些部份變化的動作即能夠在不需要大量動作資料庫的狀態下,建立出一個. io. al. er. 有能力產生高度變化的動作圖。舉例來說,假設原先動作資料庫有以下三個動作,分別. v. n. 是走路、原地站立且雙手插腰以及對著人講話,我們希望除了能夠產生原先資料庫中就. Ch. engchi. i n U. 具有的三個動作外,更能產生邊走路邊講話、手插腰上走路等能從不同資料組合部份動 作的新全身動作。 在本論文中,從 Chen [5] 的研究所得到的靈感,我們提出了一個由多張動作圖所 構成的階層式動作圖結構,稱之為多層式動作圖。經由使用多層式動作圖,我們就可以 如前面所舉例的,僅切換部份身體的動作(ex. 僅切換上半身的動作或左手的動作等…) 來產生出新的動作,同時因為使用與傳統動作圖相彷的資料結構,所以得以與傳統動作 圖可以平順的在不同的動作間轉換。為了更具體描述我們在使用上的主要想法,我們將 24.

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

(35) 4.1 多層式動作圖建構概論 大體上來說,我們的演算法會先使用傳統動作圖來產生一張做為主幹的動作圖 ( M𝐺全身 ),然後依照應用情境的 需求來產生一個至數個部份動作的動作圖( ex.. M𝐺上半身 、 M𝐺左手 等…),最後將產生出來的多個動作圖依照骨架的階層關係給連接 起來,產生多層式動作圖。而在連接的過程中我們會為所有相互可以替換的部份動作間 計算一個「整體動作相似度」的數值。. 政 治 大 依照以上的說明,整個多層式動作圖的建立過程大略可分為四大步驟: 立. ‧ 國. 學. . 第一步,對要用來計算動作圖的動作擷取資料進行前處理,在前處理的過程中需要 以人工的方式對動作擷取的資料做出基本的分類,並對每個動作加上足以表示該動. ‧. 作特性的標籤(tag)。. sit. y. Nat. 第二步,全身動作、部份動作(要將動作切為幾個部份由使用者決定)等個別以自. io. n. al. er. . v. 動化的演算法來尋找每組動作擷取片段之間適合連接的地方。 . Ch. engchi. i n U. 第三步,在個別的圖上建立轉換用的連接,並且刪除會導致在各別圖上運行時進入 死路的結點。. . 第四步,將個別產生出來的圖加以連接,並計算「整體動作相似度」數值,產生多 層式動作圖。. 26.

(36) 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. 圖 4.2、系統架構圖 27. v.

(37) 4.2 多層式動作圖建立系統. 而在本章接下來內容中,4.2.1 節我們會先介紹依照 4.1 節的建立步驟所設計出來的 多層式動作圖所建立的 IMMGC (Intelligent Media Lab’s Motion Graph Computation System),並在緊接的章節中對整個架構的流程做出細部的說明。 4.2.1 動作圖建立系統 IMMGC 總覽. 政 治 大 在本研究中,我們設計了一個名為 IMMGC 的多層式動作圖建立架構,而 IMMGC 立. 的系統架構如圖 4.2 所示,圖中每一個方塊為一個獨立的模組,而模組與模組之間的箭. ‧ 國. 學. 頭代表了資料傳遞的方式。這個系統的目的如前所述,是要產生一個部份動作可以獨立. ‧. 切換且具強連接性(SCC, Strongly Connected Component)的多層式動作圖。此架構主要. sit. y. Nat. 由動作讀取器(Motion File Loader)、動作圖建立分派器(Graph Build Dispatcher)、動. io. er. 作圖產生器(Motion Graph Generator)和動作圖合併器(Graph Combiner)所組成。動. al. 作讀取模組(Motion File Loader)負責將動作資料以及設定檔(Configuration File)轉換. n. v i n Ch 成適合用來計算的容器內,而設定檔內儲存了前處理階段時所設定的各項屬性,像各個 engchi U 動作的標籤以及分群的資料等;動作圖建立分派器會根據使用者所給予的設定檔,負責 將讀取進來的動作以及個別的設定派送給對應的動作圖產生器,各個動作圖產生器在接 收了這些資料後就會開始著手產生動作圖,並將結果傳給動作圖合併器,最後合併器收 到各個動作圖產生器的結果,再以我們所制定的規則連接後,就是我們所要的多層式動 作圖了。. 28.

(38) 4.2.2 資料前處理. 在資料前處理階段總共有兩個部份需以人工的方式來處理,分別是為每個動作加上 具代表性的標籤。在本研究中,因加入了部份動作後,會使動作圖能切換的動作組合的 數量,因原始動作資料的數量增加,而以等比級數的方式成長,大大的增加了使用者在 使用時的複雜度。為了解決這個問題,我們提出了加入簡易的語意來輔助使用者控制。 透過語意的輔助,使用者可以自行的創造複合式或是更加高階的控制指令。所以前處理. 政 治 大 適當的的標籤如:走路(WALK) 立 、跑 (RUN)、跳(JUMP)、揮手(WAVE_HAND). 的第一步是以人工的方式將各個動作的全身動作、上半身動作、下半身動作等分別加上. ‧ 國. 學. 等…。. ‧. 為了去除一些不合理的動作轉換以及增加動作轉換時的視覺順暢性,在前處理的階. sit. y. Nat. 段我們會以人工的方式來標記允許相互轉換的動作,我們借由這個人工介入的輔助來避. io. al. n. 演算法。. er. 免一些不合理連接的產生,但要如何在這些動作間找到適合的連接點仍是採用自動化的. Ch. engchi. i n U. v. 4.2.3 動作圖產生器細部架構 動作圖產生的細部架構如圖 4.3 所示,整個動作圖產生的架構主要是基於 Rafidah 等人[14]所建議的動作圖計算基本架構所延展設計而成,其主要的模組有轉換點偵測器 (Candidate Transition Point Detector)、動作距離計算器(Distance Metric Computation Method)、連接點產生器(Transition Generator)以及圖形清理器(Graph Cleaner) 。. 29.

(39) 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 4.3、動作圖計算細部架構示意圖. 4.2.3.1 動作相似度比較. 在這裡比較兩兩動作片段相似度的方式是透過計算兩兩動作片段間距離的方式,距 離越大則兩動作片段越不相似,反之亦然。在接收了動作圖建立派送器所讀取的動作資 料以及設定資料後,轉換點偵測模組將讀取進來的動作,參照前處理時所寫下的設定檔, 30.

(40) 整合後把每對動作一一分派給距離計算模組,而距離計算模組則會依照使用者設定的需 求來選擇適當的距離計算方式。在這裡我們實作了 Point Cloud Distance(式 2.3)來做 為我們計算動作相似度距離的方法。. 4.2.3.2 動作連接節點選擇 如在第三章所提到的,我們無法透過一個絕對的門檻值來二分出那些是好的接點組 合而那些不是,因此我們參考了 Kovar 等人[10]的方法來設計選擇連接點的方法。當我. 政 治 大. 們計算完兩動作間所有動作片段的相似度並將其圖形化後,我們可以得到一個如圖 3.3. 立. 所示的分佈圖,圖上的每一個點都代表了對動作片段的組合,圖中兩軸分別是兩個用來. ‧ 國. 學. 比較相似度的動作,點的顏色越深代表該對動作片段是較不相似的(距離值高),淺色. ‧. 反之。在有了這個二維的相似度分佈的資料後,我們先選出各個位於區域低點的點做為. sit. y. Nat. 候選的轉換點,形成一個候選轉換點的集合,然後由使用者來決定要從這個候選轉換點. n. al. er. io. 的集合中選出那些來做為正式的轉換;若選出來的點多,則最後圖的連接性佳,但有可. i n U. v. 能會出現品質較差的轉換,反之若只選出其中最好的幾個轉換點,則整體運行的品質會. Ch. engchi. 較為良好,但圖的連接性會變的較差。以上的步驟化為系統上的流程就是,當候選點偵 測模組得到了距離計算模組回傳的結果後,會選出一個候選的轉換點集合並傳給製造轉 換的模組,然後製造轉換的模組再依照使用者所給定的門檻從候選的轉換點的集合中, 選出合乎規定的轉換點並加以連接。在以往的研究中,當找到一個合乎規定的轉換點 (A𝑖 , B𝑗 ) 後,建立連接時通常會將 A𝑖 到 A(𝑖+𝑘−1) 的動作片段與B(𝑗−𝑘+1) 到 B𝑗 的動作 片給混合起來產生 A𝑖 到 B𝑗 的轉換動作(Transition Motion)(如圖 4.4(a)所示),但在 本的研究中,多層式動作圖中是一個由多張動作圖所結合而成的結構,如果在建立圖時 31.

(41) 就將轉換的動作都一同產生好的話,那最後將產生一個相當龐大的資料結構。因此,本 研究在產生 (A𝑖 , B𝑗 ) 間的連接時,會 A𝑖 上寫上特別的標記(如圖 4.4(b)所示) ,待運行 需要用到此連接時,再根據這個標記將連接的動作即時產生出來。. 立. 政 治 大 圖 4.4、動作連接示意圖. ‧ 國. 學. 4.2.3.3 動作圖清理. ‧ sit. y. Nat. 截至目前為止,我們已經可以自動的產生出一個基本的動作圖了,但要順利的經由. io. er. 動作圖產生動作仍有一些問題需要解決,因為在目前這個階段的動作圖中仍存在一些會. al. 讓在圖上搜尋或是 Random walk 時進入死路(Dead-End)的不必要節點,因此最後的. n. v i n Ch 修剪器模組所負責的工作就是要將所有會導致死路的結點刪除,而在本系統中我們使用 engchi U Tarjan’s Algorithm[17]來做為刪除死路的方法;Tarjan’s Algorithm 是 Robert Tarjan 所提出 的強連接尋找法,Tarjan’s Algorithm 一開始會任選圖上的一結點進行深度優先搜索 (Depth First Search) ,在搜索過程中會將經過的節點都存放到一堆疊(Stack)中,當搜 索時如果遇到一個已經被搜索過的點的話,會先檢查該結點是否是任一強連接的根結點 並將其從堆疊中刪除。如果該結點是任一強連接的根結點的話,則該結點與會堆疊中其 它的點形成了一個強連接。在這個搜索完成後,最大強連接所構成的圖就是我們所要的 動作圖了。 32.

(42) algorithm: Tarjan’s Algorithm input: graph G = (V, E) output: set of strongly connected components (sets of vertices) index := 0 S := empty for each v in V do if (v.index is undefined) strongconnect(v) end if repeat function strongconnect(v) // Set the depth index for v to the smallest unused index v.index := index v.lowlink := index index := index + 1 S.push(v). 立. 政 治 大. ‧ 國. 學. ‧. // Consider successors of v for each (v, w) in E do if (w.index is undefined) then // Successor w has not yet been visited; recurse on it strongconnect(w) v.lowlink := min(v.lowlink, w.lowlink) else if (w is in S) then // Successor w is in stack S and hence in the current SCC v.lowlink := min(v.lowlink, w.index) end if end for. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. // If v is a root node, pop the stack and generate an SCC if (v.lowlink = v.index) then start a new strongly connected component repeat w := S.pop() add w to current strongly connected component until (w = v) output the current strongly connected component end if. end function. 圖 4.5、Tarjan’s Algorithm. 33.

(43) 4.2.4 合併建立多層式動作圖. 到目前這個階段,我們已將各個動作圖個別建立完成了,而接下來的工作就是要將 個別建立的動作圖連接起來。在多層式動作圖的概念中,動作圖之間合併的定義是:以 在骨架上的階層關係將兩動作圖連接建立父子關係。所以如兩動作圖之間在骨架上相互 沒有階層關係則無法合併。舉例來說,如果現在有一張全身動作的動作圖與上半身動作 的動作圖,在骨架上的關係是上半身的骨架是全身的子階層,因此我們會將上半身的動. 政 治 大 作圖做為全身的動作圖的子圖而與之連接;但如果現在除了前述的兩張圖外又加入了一 立. ‧ 國. 學. 個左手動作的動作圖,左手動作在此最接近的父階層為上半身,因此會先做為到上半身 動作圖的子圖與之連接。更為複雜的連接結果如圖 4.6 所示;又如果現在分別有一左手. ‧. 動作的動作圖與一右手動作的動作圖,這兩個動作在骨架階層上並無父子關係,故無法. Nat. n. al. er. io. sit. y. 連接產生多層式動作圖。. Ch. engchi. i n U. v. 圖 4.6、較為複雜之多層式動作圖簡易完成示意圖,圖上的每一個圈圈皆代表一張動. 34.

(44) 在合併動作圖時,之所以要子階層的圖參考父階層的圖上的動作後再與之合併,是 因為如果我們由一父圖的動作上,其一部份身體的動作切換到子圖上運行時,除了該身 體部份外,仍是繼續使用原來的動作,因此我們必需確保身體部份動作在子圖上運行選 擇動作時,能夠選擇與原本動作較為相似動作,否則就有可能會組合出不自然動作的結 果。而在這裡我們在設計上使用了兩個方法來降低這個問題發生的機會,第一個方法是 在前面所提到過的,在前處理階段以人工標記的方式大略的去除掉一些不可能的組合;. 政 治 大. 而第二個方法是為相互可以轉換的兩兩動作間(全身動作間、上半身動作間等…)計算. 立. 一個名為「整體動作相似度」的數值,而計算出來的值會以表格的方式記錄下來,做為. ‧ 國. 學. 使用多層式動作圖時選擇動作的參考。「整體動作相似度」數值的概念如接下來所述:. ‧. 當想要用一個部份身體的動作來替換到一動作所對應到的部份身體的動作時(ex.將走路 動作的上半身替換成講話動作),是需要一個指標來讓系統判斷這個替換適不適合的,. y. Nat. er. io. sit. 而這就是「整體動作相似度」數值的用途。所以「整體動作相似度」是用來讓系統判斷 一動作適不適合用來替換另一動作的數值指標,因此以下兩點是計算這個數值時所要考. n. al. 慮的: . 連接性. . 動作相似度. Ch. engchi. i n U. v. 由於我們切換部份身體動作的方式是經由使用該身體部位的動作圖來切換的,與欲切換 的動作相間的連接點的數量是否夠多,連接的品質好不好都是要考慮的,而這兩者所對 應到的就是「連接性」;而另一點要考量的便是,當身體的一部份的動作用別的動作來. 35.

(45) 取代時,必須要考慮用來取代的動作是否能與身體餘下部份的動作相容,不相容的話便 有可能會產生出有視覺上缺陷的動作,因此在取代時便會希望用來取代的動作能與原動 作有一定的相似度,而這便是我們提到的第二點「動作相似度」。基本上這兩點都可以 透過我們在尋找兩動作間適合連接的位置時所計算的動作距離來衡量,所以直覺上會想 說將兩動作相對應的動作距離值給加總加起來,如下式所示: ∑𝑖 𝐷𝑖,𝑖. 立. (4.2). 政 治 大. 其中 i 為影格的編號,𝐷𝑖,𝑖 為動作 A 與動作 B 在第 i 個影格間的動作距離,計算之示意. ‧. ‧ 國. 學. 圖如下:. er. io. sit. y. Nat. 圖 4.7、整體動作相似度初步想法計算示意圖. n. al. Ch. engchi. i n U. v. 如果當我們取代動作時都是使用索引值是一樣的影格來取代的話,那上面的式子是可行 的,但實際上在運作時,我們是使用動作圖來尋找轉換的方式,因此在原動作與用來取 來的動作在索引值上必定會有一個偏移量(offset) (如圖 4.8 所示) ,到這裡我們便出現 了我們的第二個想法,在這個想法中,我們大略的將偏移量分成數個級距,並為每一個 級距都計算一個相似度值,待使用時再依照實際的狀況來查尋所對應的偏移量的相似度 值便可。但在這但又出現了另一個問題,因此我們的動作彼此間長度都是不一樣的,且. 36.

(46) 大多的動作都是可以自我循環(Self-Loop)的,一但動作循環後,偏移量便會產生變化, 因此這個想法也是不可行的。. 政 治 大 立圖 4.8、動作取代偏移量示意圖. ‧ 國. 學. 綜合並檢討前述的想法後,我們將動作以每個區段大小的 s 的方式切分成數個區段,. ‧. 這部份是使用了第二個想法中將偏移量分成數個級距的想法,而因為實際使用時偏移量. sit. y. Nat. 是會一直變化的,故需要將所有的偏移量都一同列入考量,此外,因為動作間長度不一,. io. al. n. 最後,我們的「整體動作相似度」其定義如下:. Ch. engchi 𝑚/𝑠. 𝑛/𝑠. ∑𝑖=1 ∑𝑗=1 𝑚𝑖𝑛𝐷𝑖,𝑗 (𝑚/𝑠)×(𝑛/𝑠). er. 因此最後需要取一個平均來使不同動作組合間的「整體動作相似度」能夠相互比較。而. i n U. v. (4.2). 其中 m 與 n 分別為動作 A 與動作 B 的影格數,s 是每個區段的大小,而𝑚𝑖𝑛𝐷𝑖,𝑗 為兩動 作區段中所有影格間使用式(3.4)計算出之距離的最小值。計算之示意圖如下圖 4.9 所 示:. 37.

(47) 圖 4.9、整體動作相似度計算方式示意圖. 政 治 大. 最後我們以圖 4.1 中舉的M𝐺全身 及 M𝐺上半身 為例說明。如圖 4.1 所示,並有兩個. 立. 動作圖,上半身動作的動作圖(之後以M𝐺上半身 代替)與全身動作的動作圖(之後以. ‧ 國. 學. M𝐺全身 代替)。如上一個例子所述,依階層關係我們會將 M𝐺上半身 做為子圖連接至. ‧. M𝐺全身 上。在連接的過程中,會發現 Walk 和 Stand 的上半身動作有被包含在M𝐺上半身 中,. sit. y. Nat. 因此系統會個別計算 Walk 及 Stand 的上半身動作與其它所有有相連的上半身動作的「整. io. al. er. 體動作相似度」,並將這些數值存到表格內以備之後查詢。到了這裡,會發現我們的方. v. n. 法有一個很大的限制,那就是當兩個在骨架上有階層關係的動作圖合併成多層式動作圖. Ch. engchi. i n U. 後,父層上的一個動作其部份動作能夠切換至子層的圖上做轉換,只有當其部份動作在 建圖時有被包含在子圖上才行,這個限制在下一章的內容中將會再進一步說明。. 38.

(48) 第五章 使用多層式動作圖. 由於多層式動作圖的資料結構與傳統動作圖相當的相似,所以如同使用傳統動作圖. 政 治 大. 一樣,在多層式動作圖上的任一條路徑都可以轉換成一段連續的動作。在搜尋的演算法. 立. 方面,從最簡易的隨機搜尋、最短路徑搜尋、A*或是以最佳化演算法方式都可以用來進. ‧ 國. 學. 行搜尋。在此我們設計了一個使用多層式動作圖來產生動作的系統架構,如圖 5.1 所示。. ‧. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 5.1、多層式動作圖動作產生架構 39.

數據

圖 4.4、動作連接示意圖
圖 5.4  示範 Motion Script 能力用的動作之標籤設定
圖 5.5、Motion Script 之 BNF 定義式
圖 6.3、具有 TALK 標籤的兩動作與 Walk_01 上半身動作的整體動作相似度數值
+4

參考文獻

相關文件

– The The readLine readLine method is the same method used to read method is the same method used to read  from the keyboard, but in this case it would read from a 

the prediction of protein secondary structure, multi-class protein fold recognition, and the prediction of human signal peptide cleavage sites.. By using similar data, we

– File and index layers organize records on files, and manage the indexing data

Given a shift κ, if we want to compute the eigenvalue λ of A which is closest to κ, then we need to compute the eigenvalue δ of (11) such that |δ| is the smallest value of all of

The Secondary Education Curriculum Guide (SECG) is prepared by the Curriculum Development Council (CDC) to advise secondary schools on how to sustain the Learning to

Define instead the imaginary.. potential, magnetic field, lattice…) Dirac-BdG Hamiltonian:. with small, and matrix

In this paper, by using the special structure of circular cone, we mainly establish the B-subdifferential (the approach we considered here is more directly and depended on the

Miroslav Fiedler, Praha, Algebraic connectivity of graphs, Czechoslovak Mathematical Journal 23 (98) 1973,