• 沒有找到結果。

第二章 相關研究

2.3 瑜珈運動

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

在我們的研究中所使用的人物骨架也是使用 H-ANIM 的定義方式,以 Hip 為最上層 節點,從左腳、右腳和脊椎三個分支出去,所組成的骨架模型,左手和右手也同樣會由 脊椎再分支出去。相關的研究有 Xinyu 等人[40],使用 H-ANIM 標準定義人物,並應用 於三維的虛擬實境場景中,可產生演員和展示一些人物動作。Naka 等人[41]也是同樣是 VR 的應用,不同的是實作於 Web 瀏覽器上,並且對人物做擴展的運動定義,將數據以 資料流的方式壓縮,可用於 real-time 的互聯網路傳輸。Naka 等人[42]的研究是將 H-ANIM 腳本加入 IK 和 FK 做為控制人物角色的方法,再針對動作資料流提出的壓縮和解壓方 法,更進一步可用於 MPEG4 以利於在網路上做即時的傳輸處理。其中 Huang 等人[43]

的研究,是在 VRML/X3D 的環境中,將腳本擴充加入前後左右上下的參數來做人物動 作的調整,實現在跑步和太極的應用上。Endo 等人[44]以 VRML 創造自然和流暢的人 形運動,另外也結合了運動捕捉的人形資料,產生更多樣化的人物動作。

由以上研究可知,在很早期就有人提出人物動畫的標準定義,以 H-ANIM 定義的階 層式人物模型為基礎,並且擴展出其他的動作控制方法,或加入客製化參數做彈性的調 整。這樣的人物模型定義概念,也同樣用於我們的研究中,不同的是我們並非使用 VRML 做為人物和動作定義的標準語法,而是選擇 XML 語言。

2.3 瑜珈運動

瑜珈(Yoga)是一種起源於印度的運動,各式各樣的瑜珈動作可達到訓練人體肌耐 力並且增進身體協調性的目的,不同的瑜珈動作針對不同的核心肌群做訓練,循序漸進 的瑜珈學習亦可讓人身心都更加健康。多數的瑜珈動作會使身體延展到每個人所能達到 的極限,不同的學習者在做同樣的瑜珈動作時,可能會根據每個人的體能狀況而有不同 的結果,這也是為何我們選擇瑜珈運動來實作的原因之一,藉由此種運動特性,我們可 對不同角色進行客製化的動作,更增加了自我學習的效果。瑜珈運動伸展強調的是持續 緩慢的伸展為原則,屬於靜態伸展,是一種低強度、持續性、緩慢的伸展方式,在靜態

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

伸展的過程中,能降低神經肌肉傳入的靈敏性產生 H-反射作用,從陳哲修等人[45]的研 究中,降低刺激到牽張反射時增加的肌肉張力,能使肌肉張力降到最低,避免在伸展的 過程中造成肌肉和肌腱的拉傷,達到放鬆肌肉的效果。Raub 等人[46-49]多數的研究顯 示瑜珈運動對身體柔軟度、肌力和心肺耐力之提升均有不錯的效果。

在瑜珈運動開始之前,通常會有一些暖身的動作,來防止運動傷害,再開始進入正 式的瑜珈練習。瑜珈練習中的各種動作稱之為體位法,我們的研究所參考的是主流的哈 達瑜珈,利用各種體位法並強調配合呼吸以達到身心和諧的目標,哈達瑜珈包含體位法、

呼吸和冥想。根據 Belling[50]一書中將體位法姿勢歸類為坐或躺、站立、站立平衡、手 的平衡、倒立和放鬆姿勢共六類,如圖 2.5 為各種瑜珈類型的動作示意圖。除了姿勢的 分類外,又可將不同的體位法分為中立、後仰、側彎和扭轉動作,另外也有難度上的分 級,如圖中星號所示,越多星號代表難度越高。而最後一類是放鬆姿勢,此動作是為了 在瑜珈運動做完或到一個階段後,讓身體達到必要的放鬆和休息,所以並無難度的標 示。

圖 2.5 瑜珈體位法分類示意圖[50]

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

在瑜珈中呼吸是很重要的,每種瑜珈體位法皆需搭配呼吸,呼吸的訣竅是鼻吸鼻吐,

且使用肚子呼吸而不是胸部,吸氣時將氣慢慢吸飽使肚子微微脹起,吐氣時慢慢將氣吐 掉,使肚子呈現扁扁的狀態。我們用一個簡單的動作來說明如何搭配呼吸,圖 2.5 是瑜 珈體位法中的站姿直腿前彎式,在步驟 1 的圖示中,先將雙手舉起,並配合吸氣,然後 再慢慢地前彎並且配合呼氣,當達到靜態的步驟 3 前彎姿勢時,會繼續緩緩地呼吸,並 感受背部脊椎和後腿拉長延伸,保持 3〜8 個呼吸後再慢慢的反向回復到原本的站姿。

在瑜珈的運動過程中,必須一直保持呼吸,並且在學習者練習的同時給予適當的教學提 示,將會達到比較好的成效。對於瑜珈的初學者來說,與其追求高難度的動作挑戰,不 如把基本的動作扎實地完成,動作姿勢的正確性在瑜珈運動中尤其重要,循序漸進的學 習,以自我的體能狀況挑選適當的動作練習,以預防運動傷害是非常重要的。

圖 2.6 瑜珈體位法:站姿直腿前彎式[50]

我們的研究是以教學為主要目的,為了能夠用簡單的教學動作實例來呈現,並且考 量選擇的動作難度不要太高,能夠符合多數人的需求,所以我們選擇站立和站立平衡類 型中的五種體位法來做為運動教學的範例,將會在後續的文章中對於動作和關鍵影格做 詳細的介紹。另外,在同一種類型的瑜珈動作中,會有較高的動作相似度,這種特性用 於程序式動畫中,可使動作程序達到較好的重複利用性,所以我們在實作動作的挑選上 也會盡量以同類型的體位法做為考量。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

第三章 系統總覽

3.1 系統架構

為了讓 3D 動畫和運動教學結合,並實作出可實際使用的系統,我們規劃了一套完 整的系統架構,圖 3.1 是我們的瑜珈動畫教學系統架構示意圖。我們將系統分為使用者 介面(User Interface)、3D 動畫產生器(3D Animation Generator)和 3D 動畫顯示器(3D Animation Display)三個模組。使用者介面將呈現系統功能所需要的按鈕和選單,並且 處理由使用者所觸發的事件和腳本的輸入;3D 動畫產生器是我們產生動畫的核心,裡 面將包含關鍵影格、低階程序、內插器等元件,並負責將高階的腳本語言所轉換出的低 階語言,對應到程序模組或內插器中,計算出相對應的人物動作;3D 動畫顯示器負責 播放產出的動畫,依照所指定的播放速度並且在動畫播放的過程中搭配適當教學提示,

還可以手動的調整攝影鏡頭,將產出的畫面呈現給使用者。這三個模組之間的關係流程,

會先由使用者介面輸入所想要的人物和動作腳本,亦可直接由選單按鈕選擇系統內建的 人物或動作,輸入的腳本資料經過解析器將高階的參數輸入給相對應的動作,並且轉換 為低階程序所使用的程序參數,另外一種是透過介面功能,選擇不同的人物骨架和想要 展示的瑜珈動作,皆會進入到 3D 動畫產生器模組中做計算,以產生完整的動畫所需要 的所有影格,讓 3D 動畫顯示器使用。動畫產生器是我們系統的核心,其中包含了機構 學、內插器、修正器和速度控制等模組,將在下一節中做更詳盡的介紹。最後所計算好 的動畫影格,會由動畫顯示器做即時的播放呈現,在顯示的部分中還包含了教學提示,

以增加使用者的學習效果,並且可以手動調整攝影鏡頭,做 360 度視角的觀看。

3D Animation Generator

Parser

Motion Key Frame

Body Control Procedure

Interpolator

3D Animation Displayer

Screen

High Level Parameter input

User Interface

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 3.2 輸入參數之階層關係

3D 動畫顯示器中包含了人物動畫和教學提示列,如圖 3.3 所示。教學提示列置於人 物動畫的上方,提示內容會由動作腳本匯入,隨著動畫的播放,教學提示可動態的改變。

攝影鏡頭則可透過滑鼠以人為中心做動態的調整,按住滑鼠左鍵可做上下移動,按住滑 鼠右鍵可做左右移動,按住滑鼠中鍵可拉遠近。

圖 3.3 動畫展示面板示意圖

角色關節的旋轉角度和移動角度 角色平衡感

和穩定性、關節限制 指定要做變化的瑜珈動作 高階人物模型參數

中階瑜珈動作參數 低階動作程序參數

動畫產生器主要包含了三個模組,分別是動作關鍵影格(Motion Key Frame)、內插器

(Interpolator)和修正器(Corrector),如圖 3.4 是整個動畫產生流程架構圖。動作關 鍵格是用來產生瑜珈動作的關鍵姿勢,其中用了各種程序模組來實作,而內插器是為了 將這些關鍵姿勢連接起來,成為完整的動畫,最後再透過修正器處理一些符合物理性質 和不自然動作的修正。

圖 3.4 3D 動畫產生流程示意圖 3D Animation Generator

Motion KeyFrame

Body Control Procedure

Character parameter input

Corrector (Satisfying constraints)

Kinematic

- Inverse kinematic - Forward kinematic Joint Lookup Table

Space Path Interpolator

Speed Control Interpolator

Joint space Endpoint space

Time space interpolator e.g. ease-in ease-out …etc

再利用數學方法計算出每個關節的位置和旋轉角度,主要是使用 Inverse Kinematic、

Forward Kinematic 以及三角函數來求出符合關鍵格定義的動作,在 3D 場景中關節的自 由度較多,所以也建立了以線性內插為基礎的 Lookup table 以解決 IK 中冗餘自由度的 兩個關鍵影格的關節角度做內插,可適用於全身的關節。第二種 Endpoint space 是屬於 指定端點移動路徑的內插法,計算出要移動關節點的移動路徑,路徑可能是直線或曲線,

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

細節,例如手舉起的高度或彎腰的角度等。而人物運動的特色參數,平衡感和穩定度會 在內插器中所使用,用來計算手部晃動或站立不平衡的搖晃效果。接著我們還設計了一 個修正器,是為了使人物運動符合物理性質,例如讓人的腳可以一直保持踩在地板上面,

不會產生飄浮空中或是穿越到地面下的奇怪情形,也用於處理腳步滑動等不自然的動作 姿勢。

3.3 人物骨架和模型

製作動畫的第一步就是要選擇被控制的動畫角色,在進入製作動畫的核心前,要先 來介紹如何產生動畫角色。我們以人物角色做為教學動畫展示的主角,我們把角色分為

製作動畫的第一步就是要選擇被控制的動畫角色,在進入製作動畫的核心前,要先 來介紹如何產生動畫角色。我們以人物角色做為教學動畫展示的主角,我們把角色分為