• 沒有找到結果。

第五章 使用多層式動作圖

5.3 Motion Script

5.3 Motion Script

為了方便使用者以語意方式提出對動作的要求,我們設計了一個語意式動畫腳本語 言(在本研究中稱為 Motion Script),透過簡易語意的描述,對系統下達動作的命令。

此腳本語言的 BNF 定義如圖 5.5 所示。

Full-Body Graph Motions Upper-Body Graph Motions Idle_01 IDLE Idle_01 IDLE

Idle_02 IDLE Walk_01 SWING_HAND Walk_01 WALK Walk_02 SWING_HAND Walk_02 WALK Walk_03 WAVE_HAND Walk_03 WALK,

WAVE_HAND

Music_01 Music, IDLE Music_01 Music, IDLE Talk_01 TALK, IDLE Talk_01 TALK, IDLE Talk_02 TALK Talk_02 TALK

圖 5.4 示範 Motion Script 能力用的動作之標籤設定

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

45

在腳本語言 Motion Script 中,最基礎指定動作的方式是透過 <motion-term> 來指定,

而<motion-term>又可以分為<motion-name>和<motion-tag>兩種。以閒置動作為例,在動 作圖上可能有三個不同的閒置動作其名稱分別為:Idle_01、Idle_02,且這三個動作皆具 有「IDLE」的動作標籤。使用時可以用直接指定這些動作的名稱(ex.「idle01」)的方 式,來指定所想要轉換到的特定閒置動作,而這裡的名稱就是<motion-name>。但有時 使用情境並不在意所轉換到的具有 IDLE 標籤的動作是那一個,那就可以用指定動作標 籤的指令,例如:

Motion Script>>> IDLE

以圖 5.4 之設定為例,便會選取 Idle_01 或是 Idle_02 這兩者的其中一個。但如果所指定 的標籤在根圖上並不存在呢?例如:

Motion Script>>> SWING_HAND

圖 5.5、Motion Script 之 BNF 定義式

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

46

那我們就會將此指令派送至較下層的動作圖裡來檢查是否有符合需求的動作。以圖 5.4 之設定為例,這裡會選擇上半身圖中的 Walk_02 或 Walk_03 做為目標動作。使用指定動 作標籤的方式一次可能選定多個可能的動作,並交由系統自動從中選出一個當下最好的 目標動作進行轉換,在這個動作標籤指的就是<motion-tag>。此外,我們也可以在

<motion-tag>前加上動作圖的名稱來指明我們欲在其上進行動作轉換的動作圖,例如:

Motion Script>>> Upper-Body TALK

在這個指令中,Upper-Body 為一動作圖的名稱,使用這個指令會在 Upper-Body 動作圖 上尋找 TALK 標籤的動作,以圖 5.4 之設定為例便是尋找上半身圖中的 Talk_01 或是 Talk_02 來做為目標動作,當指名了欲在其上進行動作轉換的動作圖的名稱後,在指定 的動作圖上找不到結果,並不會如同之前會將指令派送至較下層的動作圖做搜尋。如果 想要進行更為複雜的轉換的話,Motion Script 也提供了「with」和「and」這兩個詞來讓 我們可以組合出複合式的指令,像是:

Motion Script>>> WALK with Upper-Body TALK

使用這個指令就可以找到一個全身動作為 WALK 標籤的動作且上半身為動作標籤為 TALK 的動作組合,以圖 5.4 之設定為例,有可能會產生 Walk_01、Walk_02、Walk_03 與 Talk_01、Talk_02 所組合出的六種可能性中的一種,而另一個例子:

Motion Script>>> TALK and IDLE

Motion Script>>> WALK and TALK

那就會將這兩個標籤分開到可以同時運行的兩個動作圖上做尋找,看是否可以用組合不 同身體部份動作的方式來符合指令的需求,以圖 5.4 之設定為例,便會找到由 WALK 及 TALK 所組合出來的六個動作中的一個來做為目標動作。最後,Motion Script 更具有可 以指定每個動作指令執行的時間,例如:

Motion Script>>> WALK for 10 sec

這個指令會在執行「WALK」指令 10 秒後再執行接續在其後的 Motion Script。

在前面對 Motion Script 有了簡單的介紹後,對於動作標籤的使用上有兩點需要注意:

其一、擁有同一個動作標籤的動作,必須在其動作的意義上具有一定的相似程度;其二、

使用的動作標籤在字詞上的意義,也需與被指定該標籤的動作具有一定的關連程度。如 果在一開始給予各個動作標籤時沒有注意到上面這兩件事,則可能造成在使用 Motion Scripts 時,會產生一些預期之外的結果。但如果標籤有做出良好的設定,Motion Script 與多層式動作圖可說是相輔相成的最佳組合,這點由「and」的例子(TALK and IDLE)

可以了解到;在上面「and」的例子中,雖然下的是一個相當簡單的語句,但可以充份 的利用多層式動作圖的特性,在單一層中找不找結果時,可以在可以同時運行的不同層 間做進一步的嘗試。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

48

第六章

實驗結果與討論

在本章的內容中,我們將會對前面章節所提出的多層式動作圖,進行實作,並提供 圖形介面供使用者輸入及指定動作。接著,我們將會透過實驗來進行比較與測試。

圖 6.1、實作程式之介面

示晶片為 nVidia GeForce 420m。我們使用 C++做為系統開發語言來實現前面所提到的架 構。在多層式動作圖建立的部份,為了加速前處理的速度,我們設計了可以平行化計算 的演算法,並使用 Intel TBB(Intel Threading Building Blocks)[24]做為平行計算用的函 式庫。在多層式動作圖的使用上,我們以 OGRE(Open-source Graphics Rendering Engines)

[25]做為 3D 繪圖引擎,搭配 Qt[26]來產生 GUI 介面,實作多層式動作圖及動作產生應 用程式。而我們實驗中使用了 8 個不同風格的動作擷取資料(共約 3000 影格)來建立 多層式動作圖,所使用到的動作擷取資料格式為 BVH(Biovision Hierarchy),實驗所使 用的動作擷取資料皆使用相同的骨架結構,如圖 6.2 所示。另外,在路徑搜尋演算法上, 右中的輸入框讓使用者可以輸入我們所定義之 Motion Script(客製化的動畫腳本)的方 式來指定所需要的動作。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

50

6.2 整體動作相似度驗證

由前面的敘述可以得知,使用一般的搜尋演算法僅能在動作轉換處找到一個最為平 順的轉換路徑。然而在本研究中,在切換身體一部份的動作時若使用同樣的方法,可能 會產生出切換過後的子部份動作與身體其餘部份動作相互不協調的結果。因此我們提出 了透過計算整體動作相似度的數值(式 4.2),來做為在切換子部份動作時的選擇依據;

圖 6.2、實驗所使用的骨架

在本實驗中我們所使用的語法為「Walk_01 with Upper-Body TALK」,上半身的動作 以標籤的方式來指定一群具有 TALK 標籤的動作來供系統選擇,其中上半身中具有

Talk_01 Talk_02 Walk_01 187.252 427.763

圖 6.3、具有 TALK 標籤的兩動作與 Walk_01 上半身動作的整體動作相似度數值

TALK 標籤的動作共有 Talk_01 與 Talk_02 兩個,而其 Walk_01 與這兩個動作在上半身 部份的整體動作相似度值分別如下圖 6.3 所示: 算法便只能根據區域的資訊來做搜尋,一但出現了區域最低值(Local Minima),便有可 能會陷入。經由以上的結果驗證了我們所提出的整體動作相度數值,可以做為一個適合 的相似度指標。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

53

(a)

(b)

圖 6.4、整體動作相似度驗證實驗結果

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

54

編號 動作選擇結果

編號 動作選擇結果

使用 沒使用 使用 沒使用

1 Talk_01 Talk_01 11 Talk_01 Talk_01 2 Talk_01 Talk_01 12 Talk_01 Talk_02 3 Talk_01 Talk_01 13 Talk_01 Talk_01 4 Talk_01 Talk_01 14 Talk_01 Talk_02 5 Talk_01 Talk_01 15 Talk_01 Talk_02 6 Talk_01 Talk_01 16 Talk_01 Talk_01 7 Talk_01 Talk_01 17 Talk_01 Talk_01 8 Talk_01 Talk_01 18 Talk_01 Talk_01 9 Talk_01 Talk_01 19 Talk_01 Talk_01 10 Talk_01 Talk_02 20 Talk_01 Talk_01

圖 6.5、整體動作相似度驗證實驗之動作選擇結果

圖 6.6、單層的多層式動作圖其效率測試結果

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

55

圖 6.7、二層的多層式動作圖其效率測試結果

圖 6.8、三層的多層式動作圖其效率測試結果

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

56

6.3 動作轉換效率測試

在衡量一個動作圖的品值是否良好上,除了轉換動作是否平順外,另一個使用者最 容易感受到的便是動作轉換所需的時間。動作間轉換所花的時間(亦為在動作圖上的路 徑長度,因動作圖上的一條路徑可轉換成一連串的動作影格,在動作的 FPS 固定的情況 下,可換算出所需的時間)多的話,會造成使用者在使用時有指令沒有送達的錯覺。我 們在第五章中提出了多層式動作圖產生動作的方法,其中提到了整個搜尋演算法是階層 式的,所以使用多層式動作圖來產生動作,從下指令到動作變成所需的動作,其轉換變 化過程時間上的花費,理論上會隨著所使用到的動作圖圖層數量呈線性的關係成長(因 每一層皆要做一次搜尋與轉換)。

圖 6.9、層數與動作產生效率的關係

二層: (Idle01, Walk01 with Upper-Body Talk01)

三層: (Idle01, Walk01 with Upper-Body Talk01 with Left-Hand Wave01)

此外,轉換的所需的時間更與當下所在動作圖上的位置(在不同的位置上,搜尋到

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

59

圖 6.10 實驗用動作資料庫裡所含的動作,動作分別為:a.雙手下擺的閒置動作、b.

雙手抱頭的閒置動作、c.走路動作、d.較快的走路動作、e.原地全身律動的動作、f.講 話動作、g.雙手舉起的走路動作、h.手高舉的講話動作

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

60

6.4 綜合應用範例

如前面所提到過的,我們實作出了一個可以運用多層式動作圖來產生動作的應用程 式,使用者可以透過圖形介面上的按鈕或是輸入 Motion Script 的方式來控制動作的產 生。當熟悉上敍兩種控制方式後,使用者便可以利用這個應用程式產生一些原先動作資 料庫裡所不具有的動作,如圖 6.11。圖 6.10 中所示的八個動作為實驗用動作資料庫所 含有的動作,當使用這些動作來產生傳統的動作圖時,所能制造出來的動作僅是在這八 個動作間轉換的連續動作。但在使用本研究的方法後,在圖 6.12 的設定之下,由全身以 及上半身動作的動作圖所組成的多層式動作圖,可以額外的產生 49 種組合出來的動作,

而其中在視覺上可用的動作有 24 種。圖 6.11 中所示為最佳的六個結果,如圖所示,我 圖 6.11、使用本研究的方法後可額外產生的動作(將身體拆分成全身與上半身的狀況 下),動作分別為:1.邊走路走講話的動作(c+f)、2.手位置較高的邊走路邊講話的動 作(c+h)、3.邊走路身體邊律動的動作(c+e)、4.站在原地雙手擺動的動作(a+c)、5.手抱 頭走路的動作(c+b)、6.僅下半身律動的動作(e+a)(英文代號皆對應至圖 6.10 的動作,

其中 c+f 代表動作由 c 及 f 所對應到的動作所組成)

Full-Body Graph Motions Upper-Body Graph Motions

動作名稱 動作標籤 動作名稱 動作標籤

Idle_01 (a) IDLE Idle_01 IDLE

Idle_02 (b) IDLE Walk_01 SWING_HAND Walk_01 (c) WALK Walk_02 SWING_HAND Walk_02 (d) WALK Walk_03 WAVE_HAND Walk_03 (g) WALK,

WAVE_HAND

Music_01 Music, IDLE Music_01 (e) Music, IDLE Talk_01 TALK, IDLE Talk_01 (f) TALK, IDLE Talk_02 TALK

3 WALK with Upper-Body TALK 4 TALK and IDLE

5 WALK and TALK

圖 6.13 測試所使用到的 Motion Script

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

62

圖 6.14、Motion Script 測試結果截圖,數字對應到圖 6.11 中的編號

6.4.1 Motion Script 測試

為了展現 Motion Script 在實際使用上的效果,我們設計了一個測試。在這個測試中,

為了展現 Motion Script 在實際使用上的效果,我們設計了一個測試。在這個測試中,

相關文件