• 沒有找到結果。

第四章 程序式動畫產生

4.2 關鍵格之間的內插方法

4.2.4. 碰撞修正

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

(c)和(d)區塊的 swivel angle 從離身體最遠的位置設為 ( ),內插到 ( ),內 插公式如下:

( ) ( ( ( )) ( ( ))) (4.7)

除了內插的手部或腳部動作大多使用 Lookup table 來決定自由度外,在設計某些特 定的瑜珈姿勢時,我們會用例外處理,指定一個特定的自由度以達到動作的要求;此時,

動作的擺放不會使用 Lookup table 來做處理,因為目標姿勢不一定是符合最自然的擺放 位置。

4.2.4. 碰撞修正

當動作選擇使用 Joint angle interpolation 時,在動作的過程中人物有可能會超出到地 板下或浮在空中,所以我們會在內插之後做個檢查,當人物的腳沒有正確的踩在地面上 時,我們會從髖關節的地方往上或往下做移動修正,這是為了維持人物的動作滿足踩在 地板上這個物理特性,通常在髖關節和腳步的旋轉動作中較容易發生這個情形,以雙腳 打開的動作為例,我們選擇一腳往外跨的同時要將髖關節的位置下降,經過腳的旋轉內 插後,會產生腳超出地面的情形,透過檢查把腳的目標位置上移並且重新以 IK 計算出 其他關節的旋轉角度,以產生腳抬起往旁邊跨的動作效果。另外我們還設計了一個手和 腳的碰撞檢查在執行 IK 計算之前,在使用 Lookup table 計算出冗餘自由度之前,會先 檢查手腳的位置,是否會碰撞到身體其他地方或是超出手腳所能碰觸的範圍,若有不合 法的碰撞或超出合理的範圍時,會調整關節的目標位置,修正至最接近的合法目標位置,

使得之後的 Lookup table 和 IK 模組的計算上,不會產生不合理或奇怪的碰撞結果。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

第五章 實驗結果與評估

我們實作了完整的瑜珈教學系統來做為實驗評估的平台,此系統主要建立於開放的 動畫引擎 OGRE[13],並結合了 GUI 繪製函式庫 QT[14]實作使用者介面,C++為主要的 使用語言。我們並將此實驗平台命名為 IMYogaMotion。此系統的目的在於提供給使用 者一個自我學習瑜珈運動的平台,以 3D 方式呈現瑜珈動畫,讓使用者以腳本的方式輸 入自身的體能狀態,並根據不同的角色客製化出不同的運動結果。我們是以即時計算的 方式來播放相對應的動作回饋,並將瑜珈的動作特色實作到我們的系統中。接下來我們 將會透過實驗來呈現系統所實現的功能。此系統所展示的瑜珈運動不同於播放單一的教 學影帶,我們希望透過這套完整的系統可達到更好的自我學習效果。

接下來先介紹系統的 UI 介面和相關的功能,再展示不同的人物和參數客製化的實 驗結果,最後是使用者評估實驗。我們將實驗分為三個部份,人物模型參數實驗、人物 客製化實驗和使用者觀感實驗。我們會將人物模型中的參數分為關節限制和動作特色兩 種,前者會針對各種可變化的人物關節進行單一維度的設定調整,以比較結果,後者會 以人物的平衡感和穩定度兩項進行調整,呈現出不同的動作變化。而在人物客製化實驗 中,我們會展示不同的人物骨架,以相同的動作來表現出不同的運動效果,以達到人物 客製化的目的。最後使用者觀感的部分,會邀請使用者來操作我們的系統,並以問卷的 方式做評估,以驗證系統的可行性。

5.1 使用者介面和系統功能介紹

圖 5.1 是我們的系統畫面,左邊是 3D 動畫顯示畫面,其中包含了置頂的運動教學 提示,右邊是選單介面,分為上半部的事件功能選單和下半部的人物和動作選單。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 5.1 系統畫面

在選單介面的部分,上半部的事件選單中(圖 5.2)由上到下依序是攝影機鏡頭切 換按鈕、影格顯示面板、影格滑動條、影格移動按鈕、重播按鈕、人物重置按鈕和結束 程式按鈕,按鈕的下方是選擇動畫的播放速度,有 2 倍快、正常和 0.5 倍慢三種速度可 做即時的切換。攝影機鏡頭切換按鈕分為左、右、前和後共四個按鈕,可分別即時的切 換到不同的人物視角,另外也可以按住滑鼠的右鍵,以左右拖曳的方式切換到左右視角,

按住滑鼠的左鍵上下拖曳,可以切換到人物上下的視角,而按住滑鼠的中鍵拖曳,則是 可以拉近和拉遠。影格顯示面板的地方會顯示當前播放的動畫影格,而下面的滑動條可 手動的調整至想要播放的影格,在自動播放的情況下,手動調整影格會中斷自動播放。

在影格移動按鈕的部分”<<”和”>>”按鈕可跳到前一個和後一個的關鍵影格,而”<”和”>”

按鈕會跳至前一個和後一個的影格。”PLAY/PAUSE”按鈕可播放和暫停動作,Re-play 重播按鈕則可重新再播放一次動畫。

3D 動畫顯示器 事件功能選單

人物和動作選單

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 5.2 選單控制面板

下半部的人物和動作選單介面中,有兩個面板模式可供選擇,分別是 Advanced Mode 和 Simple Mode(圖 5.3),在 Advanced Mode 中可透過”Upload People Model

file“和”Upload People Motion file“的按鈕,自行輸入角色模型腳本和動作腳本,可讓較 熟悉腳本的使用者來設計符合自我角色的模型腳本,並選擇想要練習的動作輸入至動作 腳本中,可連續展示多種的動作。而在 Simple Mode 中,會將腳本輸入的功能隱藏,並 且會有三組系統內建的人物模型以供直接選擇,點選後即可在動畫展示框架中看到角色 的變化,角色的即時載入同樣也可在 Advanced Mode 的模型腳本輸入後看到。三組內建 的人物腳本呈現於附錄 C 中。在這兩種模式下,都有瑜珈動作選單可讓使用者選擇播放 單一的瑜珈動作,瑜珈動作總共有 Mountain、Heroic 1、Heroic 2、Heroic 3、UTTHITA Trikonasana 五種,選擇後按下”Loading and Play Motion“的按鈕後,就可直接播放單一 動作。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 5.3 左:Simple Mode;右:Advanced Mode

5.2 人物模型參數實驗

我們將以中等身材的人物骨架和肉做為此節的實驗模型範例,如圖 5.4。依人物模 型腳本中的各項參數,分別以單一維度來做調整實驗,並透過動作圖或線圖來呈現參數 對人物運動的變化,其中平衡感和穩定度也屬於瑜珈的特色參數,可表現不同的瑜珈動 作效果。

圖 5.4 實驗的人物模型-肉和骨架

肉 骨架

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

5.2.1. 關節限制參數

 bend_forward_max_angle:腰和背打直時,身體可前彎的最大角度。

參數設定範圍:90 度〜45 度,如圖 5.5,90 度為最佳的瑜珈標準動作。

圖 5.5 人物模型參數 bend_forward_max_angle 的動作變化

 raise_head_angle:眼睛看向正上方時頭所能夠抬的最大角度。

參數設定範圍:30 度〜90 度,如圖 5.6,此為客製化參數以達到動作為目的,並無指定 最佳的角度。

圖 5.6 人物模型參數 raise_head_angle 的動作變化

 scoliosis_max_angle:腰和背打直時,腰可側彎的最大角度。

參數設定範圍:60 度〜90 度,如圖 5.7,此動作以人物骨盆面向前方且不做扭轉和移動 的條件下,從髖部往右側彎曲,盡量拉長左側身,通常 90 度為動作的標準,視個人的 柔軟度而定,手的擺放位置也和人的身體骨架比例有關,擺放位置可以在地板、腳踝或 小腿上作為支撐。

90 度 75 度

60 度 45 度

90 度 60 度

30 度

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 5.7 人物模型參數 scoliosis_max_angle 的動作變化

 raise_hands_max_angle:雙手同時舉起的最大角度。

參數設定範圍:150 度〜180 度,如圖 5.8,此動作為雙手可舉起的最大角度,因動作要 求為雙手舉至耳朵的位置,所以最大值設為 180 度即可。

圖 5.8 人物模型參數 raise_hands_max_angle 的動作變化

5.2.2. 人物平衡感和穩定度

人物平衡感的好壞通常會表現在一些需要平衡的姿勢上,例如單腳站立或單手支撐,

我們也將平衡感當作人物的運動參數之一,實作於瑜珈運動教學中,主要表現在瑜珈動 作”英雄式三”的單腳站立動作上。另外一個運動參數是人物動作的穩定度表現,可顯示 出在運動的過程中,是否能夠準確的一次到達指定的動作位置,或是經過來回的嘗試後 才能達到目標動作,我們將這個參數設計至人物的模型參數中,表現在雙手同時舉起和 三角伸展式的腰部側彎動作上。以下將透過平衡感和動作穩定度的參數調整,展示瑜珈 動作變化的實驗結果。

90 度 80 度

70 度 60 度

180 度 170 度

160 度 150 度

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

 平衡感 Balance:瑜珈動作的平衡感。

參數設定範圍:0〜5,0 為平衡感最佳,5 為最差。我們將平衡感的變化實作於英雄式 三的單腳站立動作,關鍵影格 6〜7 之間,要準備以單腳支撐慢慢往上站起的動作,平 衡感不好時會產生左右搖晃的情形。我們將平衡感參數設為 0,並且將此站立動作的髖 骨位置變化記錄下來,在 x、y、z 軸的位置線圖,表示如圖 5.9,可看到在動作的過程 中皆呈現線性的狀態,並無任何晃動的情形,緩慢達到單腳站立動作,這是最佳的平衡 感人物所表現出來的結果。

圖 5.9 平衡感最佳的表現曲線圖

再來我們觀察在平衡感最差,參數設為 5 的表現情況,如圖 5.10 的髖骨位置線圖,

人物在中間的線段時,z 軸開始呈現上下波動的情形,並且在幾次的波動後又漸趨穩定。

在實際動作展示時,我們會觀察到人物有左右搖晃的情形,並在一段時間後又逐漸穩定。

以上兩個例子皆在同樣的時間影格中,所呈現出的不同結果。此動作平衡感的表現發生 在髖骨於 z 軸的變化上,所以我們將髖骨在 z 軸的線圖放大比較,如圖 5.11,可看到右 邊是正常無晃動情形的,無任何上下震盪的情形,而右邊是最差的情況,在震盪的幅度 上非常的劇烈。而介於 0 到 5 之間平衡感的差別,在於晃動的幅度大小會漸趨明顯。

時間影格 髖骨位置

平衡感最佳¸ 參數= 0

y

z

x

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 5.10 平衡感最差的表現曲線圖

圖 5.11 比較動作平衡感最佳(左)和最差(右),在 z 軸的放大曲線圖

 穩定度 Stability:人物動作的穩定度。

參數設定範圍:0〜3,0 為穩定度最佳,3 為最差。人物穩定度的表現設計在往上 舉手和三角伸展式中側彎的動作中。以舉手的動作為例,當人物穩定度越差時,在達到

參數設定範圍:0〜3,0 為穩定度最佳,3 為最差。人物穩定度的表現設計在往上 舉手和三角伸展式中側彎的動作中。以舉手的動作為例,當人物穩定度越差時,在達到