• 沒有找到結果。

以程序式動畫實現3D瑜珈運動教學系統 - 政大學術集成

N/A
N/A
Protected

Academic year: 2021

Share "以程序式動畫實現3D瑜珈運動教學系統 - 政大學術集成"

Copied!
95
0
0

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

全文

(1)國立政治大學資訊科學系 Department of Computer Science National Chengchi University 碩士論文 Master’s Thesis. 立. 政 治 大. ‧ 國. 學 ‧. 以程序式動畫實現 3D 瑜珈運動教學系統. n. al. Ch. engchi. er. io. Animation. sit. y. Nat. Realizing a 3D Yoga Tutoring System with Procedural. i n U. v. 研 究 生:蔡函娟 指導教授:李蔡彥. 中華民國一百零二年五月 May 2013.

(2) 致謝. 這本論文能完成,首先要感謝的就是我的指導教授,李蔡彥老師在這三 年的耐心與栽培,使我可以順利的一步一步完成我的論文。在研究上,老 師總是能適時的給我方向和指導,使我能克服研究上所遇到的問題和瓶頸。 在我碩專生涯三年的時間裡,我從學校學到了許多專業的知識,從老師的. 政 治 大 身上學到了如何找出解決問題的方法,使我有了很多的收穫和成長,在此 立. ‧ 國. 學. 致上我由衷的感謝。. ‧. 在政大碩專班就讀的日子裡,認識了實驗室和碩專班的同學,給了我很. sit. y. Nat. 多的幫助和意見,感謝實驗室的同學們:阿衝、小蜜蜂、阿 zen、胖達、堯. er. io. 琪、Cyril、宅佩、Helen、小 cow、小顧、Mok、游承、小白、多比,很開. n. a. v. l C IMLAB 的一員,我特別要感謝佩珊,我們一 心認識你們並且能夠一同身為 ni. hengchi U. 起為了研究而努力,同時也要感謝碩專班的同學,一起在課業上努力和互 相幫助:宏軍、國獻、俊翔、王傑、小美、光博等。 我還要感謝我的朋友和同事們,在我遇到困難和不開心的時候陪伴我, 感謝小山、珮芬、咕咕、小貞、家瑋、楊咩、進德、COSMO、SHOW、A.T、 錦年。最後我要感謝我的父母和妹妹、弟弟以及一直陪在我身邊支持我的 許賓,有你們的支持和陪伴,讓我可以全心的專注於我的課業上。.

(3) 以程序式動畫實現 3D 瑜珈運動教學系統. 摘要. 瑜珈是近年來風行的運動,而數位學習則是近年來的學習趨勢。然目前以 數位學習方式學習瑜珈,多只能以文字、圖片、及影像呈現教學內容。本. 政 治 大 研究希望能以電腦動畫技術,結合瑜珈運動知識,提出一個創新的瑜珈學 立. ‧ 國. 學. 習方式。我們使用程序式動畫做為人物運動的產生方法,並加入腳本和階. ‧. 層式的參數設計概念,讓使用者可以根據自我的學習需求和不同的體能條. sit. y. Nat. 件輸入適合的模型和動作腳本,達到客製化教學呈現的目的。我們將動作. er. io. 程序模組化,不同的瑜珈動作之間可共用程序,使程序達到好的重用性,. n. a. v. l C 動作庫的擴充也會更容易。我們邀請使用者來操作本系統,體驗在不同參 ni. hengchi U. 數變化和角色設定下所產生的動畫效果,同時也以評估系統各方面的使用 觀感,並和教學影帶做比較。實驗結果顯示使用者對本系統比教學錄影帶 有更好的接受度。. i.

(4) Realizing a 3D Yoga Tutoring System with Procedural Animation. Abstract. In recent years, Yoga is becoming a popular sport while e-learning is also becoming a trend in education and training. However, the way that we learn. 政 治 大. Yoga with e-learning mostly is through text, picture and video. In this research,. 立. we aim at incorporating 3D animation technologies with Yoga domain. ‧ 國. 學. knowledge by proposing an innovation Yoga e-learning system. We use the approach of procedural animation to generate character motions with the help of. ‧. XML script and hierarchical parameter design. The resulting animations can be. sit. y. Nat. customized for different characters with various physical conditions. Learners. er. io. can select suitable and tailored character models and motion scripts for them to. n. a We have tried to design the learn Yoga by themselves. i v system by breaking a. l C n U h e nthatg can function into fundamental modules be reused in different cases. This chi design aims at increasing the reusability and extensibility of the proposed animation system. In these reusable procedures, we have made use of the Inverse Kinematics and a lookup table to generate natural 3D animations for articulated figures. In addition, we have implemented a specialized e-learning system based on 3D character animation that can generate customized motions and postures at run-time. We have implemented our tutoring system and designed experiments to study the issues of user interface, customized figures and effectiveness by comparing it with training video. The experimental results ii.

(5) show that our system is well accepted by the participants for Yoga learning, and has higher scores than watching video.. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. iii. i n U. v.

(6) 目錄 第一章 導論……………………………………………………...……………..1 1.1 研究動機與目的……………………………….………………….1 1.2 問題描述………………………………………………….……….3 1.3 論文貢獻………………………………………………….……….5 1.4 本論文之章節架構……………………………………………......7 第二章. 政 治 大 相關研究……………………………………………………...………..8 立. ‧ 國. 學. 2.1 動畫產生方法………………………………….………………….8. ‧. 2.1.1. 程序式動畫……….…...…………...………………….…….8. sit. y. Nat. 2.1.2. 動作擷取………………….…...………...………….……...11. er. io. 2.2 人物角色參數化應用………………………………...…….……13. n. a. v. l C 2.3 瑜珈運動………………………..………………………………..14 ni. hengchi U. 第三章 系統總覽……………………………………………………...………17 3.1 系統架構……………………………………….………………...17 3.2 動畫產生流程….…...…………………………………….……...20 3.3 人物骨架和模型………………………………………….……...22 3.4 關節限制和運動特色參數化…………………………….……...23 3.5 人物模型腳本和動作腳本描述………………………….……...26. iv.

(7) 第四章 程序式動畫產生……………………………………………...………30 4.1 關鍵格之程序設計….…...……………………………….……...30 4.1.1. 動作關鍵格….…...………………………………...……...30 4.1.2. 關鍵格產生程序………….…...…………...………….…...38 4.2 關鍵格之間的內插方法……..…………....…………….…….…43 4.2.1. 空間內插方法….………...………………...………….…...43 4.2.2.. 政 治 大 時間內插方法….………...………………...………….…...45 立. ‧ 國. 學. 4.2.3. 冗餘自由度設計............….………………………..….…...46. ‧. 4.2.4. 碰撞修正……….…...…………...…………...………..…...49. sit. y. Nat. 第五章 實驗結果與評估……………………………………………...………50. er. io. 5.1 人物使用者介面和系統功能介紹.…………..………………….50. n. a. v. l C 5.2 人物模型參數實驗.…………..………….......………….……….53 ni. hengchi U. 5.2.1. 關節限制參數..……………..............…………...…….…...54 5.2.2. 人物平衡感和穩定度…….…...…………...………….…...55 5.3 人物角色客製化實驗...…………….…...……………….……...61 5.4 使用者評估實驗……...…………….…...……………….……...62 5.4.1. 實驗設計…..……………..............…………...……….…...63 5.4.2. 實驗結果與分析…….………...…………...………….…...68. v.

(8) 第六章 結論與未來發展……………………………………………...………73 6.1 結論……………………………….…………..………………….73 6.2 未來發展………….…………..………….......………….……….73 參考文獻………….…………..………….......………….……………………..75 附錄 A:人物模型描述之 XML Schema.......………….……………………...79 附錄 B:人物動作描述之 XML Schema.......………….……………………...81. 政 治 大 附錄 C:三種人物模型腳本範例……….......………….……………………..82 立 ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. vi. i n U. v.

(9) 圖目錄 圖 1.1 輸入參數階層關係……………………………………………………....7 圖 2.1 正向機構學和反向機構學計算方式示意圖………………..…………. 9 圖 2.2 3D 空間中機構學計算方式示意圖…………………………………….10 圖 2.3 Swivel Angle 示意圖...………………………………………………….10 圖 2.4 階層式人物模型定義…………………….…………………………….13. 政 治 大 圖 2.5 瑜珈體位法分類示意圖[7]………………………………….…………15 立. ‧ 國. 學. 圖 2.6 瑜珈體位法:站姿直腿前彎式[7]…………….……….…………....….16. ‧. 圖 3.1 瑜珈動畫教學系統架構示意圖………...………......………………….18. sit. y. Nat. 圖 3.2 輸入參數階層關係………………...............…………………………...19. er. io. 圖 3.3 動畫展示面板示意圖……………...............…………………………...19. n. a. v. l C 圖 3.4 3D 動畫產生流程示意圖…...............…………………………..............20 ni. hengchi U. 圖 3.5 人物骨架標準化定義…………........…………………………..............23 圖 3.6 人物模型限制參數映射於瑜珈動作之範例………………..................25 圖 3.7 人物模型腳本範例…………………………………………..................27 圖 3.8 動作腳本範例………………………………………………..................28 圖 4.1 (1)站立關鍵影格;(2)瑜珈動作”山式”關鍵影格….……. ….................31 圖 4.2 瑜珈動作”英雄式一”關鍵影格(1) ~ (6)………..………......….............33. vii.

(10) 圖 4.3 瑜珈動作”英雄式二”關鍵影格(1) ~ (5)…..……………...…................34 圖 4.4 瑜珈動作”英雄式三”關鍵影格(1) ~ (8)…………..............…...............36 圖 4.5 瑜珈動作” 三角伸展式”關鍵影格(1) ~ (5)...…………......…..............37 圖 4.6 瑜珈動作和低階程序的關係示意圖……..............................................38 圖 4.7 手部動作程序示意圖……………………………..…............................39 圖 4.8 Endpoint interpolation,直線內插(左)和曲線內插(右)….......................45. 政 治 大 圖 4.9 關鍵格之間的速度控制…......................................................................45 立. ‧ 國. 學. 圖 4.10 緩進緩出和快進快出所使用的 sin 和 cos 曲線段…….......................46. ‧. 圖 4.11 手(左)和腳(右)的 swivel angle 內插區塊示意圖……….....................48. sit. y. Nat. 圖 5.1 系統畫面……………………………………………...….......................52. er. io. 圖 5.2 選單控制面板………………………………………...….......................53. n. a. v. l C 圖 5.3 左:Simple Mode;右:Advanced Mode……………...….......................54 ni. hengchi U. 圖 5.4 實驗的人物模型-肉和骨架…………………………………………....54 圖 5.5 人物模型參數 bend_forward_max_angle 的動作變化….......................55 圖 5.6 人物模型參數 raise_head_angle 的動作變化...…..................................55 圖 5.7 人物模型參數 scoliosis_max_angle 的動作變化…...............................56 圖 5.8 人物模型參數 raise_hands_max_angle 的動作變化……......................56 圖 5.9 平衡感最佳的表現曲線圖……………………….…….........................57. viii.

(11) 圖 5.10 平衡感最差的表現曲線圖…..………………….…….........................58 圖 5.11 比較動作平衡感最佳(左)和最差(右),在 z 軸的放大曲線圖..............58 圖 5.12 舉手動作- 穩定度最佳的手腕位置線圖…………………................59 圖 5.13 舉手動作- 穩定度最差的手腕位置線圖.……...……………............59 圖 5.14 腰部側彎動作- 穩定度最佳的手腕位置線圖.……...………............60 圖 5.15 腰部側彎動作- 穩定度最差的手腕位置線圖………........................61. 政 治 大 圖 5.16 動作穩定度最佳(左)和最差(右),手腕在 y 軸的放大曲線圖.............61 立. ‧ 國. 學. 圖 5.17 客製化角色動作,角色一:Thin and flexible,角色二: Medium,. ‧. 角色三:Heavy.....................................................................................................62. sit. y. Nat. 圖 5.18 第一階段實驗講義................................................................................65. er. io. 圖 5.19 第一階段實驗問卷................................................................................65. n. a. v. l C 客製化人物角色情境........................................66 圖 5.20 第二階段實驗講義ni. hengchi U. 圖 5.21 第二階段實驗講義- 操作指示............................................................67 圖 5.22 第二階段實驗問卷…………………………........................................67 圖 5.23 第三階段實驗講義……………............................................................68 圖 5.24 第三階段實驗問卷................................................................................69. ix.

(12) 表目錄 表 4.1 關鍵格動作程序編號和名稱對應列表………………………………..42 表 4.2 瑜珈關鍵格所對應的動作程序………………………………………..43 表 5.1 第一階段實驗結果分析………………………………………………..70 表 5.2 第二階段實驗結果分析………………………………………………..71 表 5.3 第三階段實驗結果分析………………………………………………..73. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. x. i n U. v.

(13) 第一章 導論 1.1 研究動機與目的 運動是現代人生活中不可或缺的一部分,過去的運動學習大部分都是在課堂上由專 業的老師來指導學生練習,但是有些人可能沒有時間參予課堂的學習或無法配合老師的. 政 治 大 來學習像是舞蹈、拳擊、瑜珈等運動。透過模擬教學影帶中老師的專業動作,也可以自 立 時間,所以有越來越多人希望能在家裡透過其他方式做自我學習,例如利用教學錄影帶. 己調整,重複播放自己較不熟悉的動作片段。近幾年來,市面上也推出結合遊戲機的運. ‧ 國. 學. 動產品,像是 Kinetic 就是一個結合動作擷取技術和 3D 電腦動畫的遊戲產品,模擬人物. ‧. 的教學動畫並加入遊戲闖關的互動方式,讓人獨自在家裡就可以透過遊戲來做運動。但. sit. y. Nat. 此類型的產品遊戲的性質居多,較不適合做為有規律性且專業的運動練習。另外,大多. io. er. 數結合電腦動畫的運動學習軟體或教學影帶都是以專業的老師為模型,無法針對不同的 學習者來量身設計,且教學播放內容呈現方式單一,對使用者而言較無互動效果和回饋. n. al. Ch. 機制,在學習的效果上也會受到一些限制。. engchi. i n U. v. 我們希望能夠依學習者的體能狀態來呈現合適的教學,若結合電腦動畫技術,可依 照學習者的各種體能條件做為輸入,產生出即時的動畫,再加入與學習者互動的元素到 教學系統中。我們認為這是一個具有挑戰性及創新性的研究議題。近年來電腦動畫一直 是很熱門的研究議題,早期的電腦動畫起源是由動畫師以手繪的方式來製作,傳統的動 畫製作需逐步的畫出每一個關鍵影格,再利用人眼的視覺暫留,使人眼看到影格播放時 產生栩栩如生的動畫效果。要讓人眼感覺到動畫的流暢,每秒最少要有 16 張靜態的影 格,因此傳統的動畫製作非常的耗時又費力,且需要有經驗的動畫師來繪製,早期迪士 尼卡通和電影就是用這種方式製作。隨著電腦軟體和硬體的發展快速,使用電腦來製作 1.

(14) 人物動畫的技術也越來越成熟,目前以電腦來製作角色動畫的技術主要分為兩類,第一 類是動作擷取(motion capture),大多需要使用攝影機和傳感器等硬體設備配合,以擷取 角色運動時的數個樣本資料,再利用這些樣本資料做一些動作的調整或是混合,以製作 出的動畫。運動擷取所得到的動畫大部分只能在同類型的動作上做變化且較難做修改, 當動作類型不同的時候,例如走路和跑步,就必須要重新擷取新的動作來產生新的動畫, 較難應用於不同類型的動作,很多研究會利用動作擷取的樣本資料,然後透過動作變形 和動作混成的方法讓所產生的動畫更加富有彈性,而此種技術的優點是所獲得的動作直. 政 治 大 結合了關鍵格動畫可被動畫師精確控制以及動作捕捉所產生的動畫完整且擬真的優點, 立. 接擷取自真實的角色,所產生出來的動畫較為逼真擬人。如 K. Pullen 等人[1]的研究,. 利用動作擷取的資料改善原本關鍵格動畫所產生較為生硬的動畫,提高了動作捕捉數據. ‧ 國. 學. 的可用性,讓產生的動畫更加的生動靈活。也有將動作擷取技術與不同的應用情境結合,. ‧. 如 Z. Luo, W. Yang 等人[2]的研究,就是以電腦動畫技術和虛擬實境所建立出的互動式. sit. y. Nat. 瑜珈訓練系統,以達到動畫教學的目的。. n. al. er. io. 第二類是程序式動畫(procedure animation),又稱為以知識為基礎的動畫. i n U. v. (Knowledge-based Animation),我們可以將人物的動作和運動設計為程序,使用機構學. Ch. engchi. (Kinematic)或動力學,和一些數學計算方法來設計動畫程序,然後將這些程序串連成完 整的動畫。程序式動畫的優點就是有通用性的動作程序具較高之重用性,經過設計後可 透過一些參數的調整來表現出不同變化的動作,但在擬真度的表現上,需要良好的動作 知識基礎和模擬方法來提升,這在程序式動畫的設計上是一大挑戰。以程序式動畫技術 為主的研究有像是 Lin [3],將情緒風格等參數加入到人物的走路運動程序中,模擬產生 出不同的走路效果。另外,像是 Chung[4]的研究,用 IK(Inverse Kinematics)最佳化的方 法和腳印計畫來模擬出人物在平坦和不平坦的路徑上行走運動,大多數使用程序式動畫 來製作的優點就是可以加入適當的參數以方便做即時的動畫調整。. 2.

(15) 無生命的物體運動,大部分只要符合動力學和物理學的定律來操作就能達到很好的 動畫效果。但有生命的動物或人的運動是更常見的動畫類型,模擬有自主意識的角色動 畫不像無生命的物體有規律性,通常動物和人的關節較多且運動的方式複雜,所以動物 和人物動畫的製作一直有著較高的難度。從過去就有很多結合電腦動畫與人物運動的相 關研究,像是 Joon 等人 [5-10],從簡單的走路、跑步和跳躍到較複雜的太極拳、游泳、 舞蹈等人物的運動模擬,不論是用程序式動畫或動作擷取技術,人的活動模擬一直以來 都是很熱門的研究。另外,也有使用動畫來做有趣的互動介面,如 Laszlo 等人[11]搭配. 政 治 大 Oshita[12]的研究,是使用筆做為物理控制的媒介,透過握筆的移動和強度可即時產生人 立 事先設計好動作程序,使用滑鼠和鍵盤來即時產生人物和動物的運動,也有像是. 物動畫,這些都是由人來學習操控,用物理方法產生即時動畫。. ‧ 國. 學. 本研究希望使用 3D 電腦動畫的呈現方式,並加入腳本設計來達到客製化運動教學. ‧. 的目的,我們將選擇以程序式動畫為主要的動畫製作技術,並利用機構學方法有系統的. Nat. sit. y. 模擬人物運動。實踐教學系統的學習介面,即使是無經驗的學習者也可以簡單操作,並. n. al. er. io. 且設計 XML 的腳本做為輸入,讓每個使用者可以針對自己的體能狀況做為輸入,選擇. i n U. v. 不同的學習項目來展示不同的教學動畫。如此設計可以讓這個系統在教學應用上更加的. Ch. engchi. 靈活彈性,不論是無經驗的學習者或是體能狀況不好的學習者也都可以利用這個教學系 統,選擇出適合的學習課程來做自我學習,並且加入一些互動的呈現方式和回饋機制, 以增加使用者學習的效率。本研究選擇以瑜珈運動模擬為例,實作出一個教學動畫系統, 展示如何利用電腦動畫技術和瑜珈運動知識的結合,以建立創新的教學系統平台。我們 將針對不同經驗和不同人體模型的學習者來進行系統效用實驗,和一般的教學錄影帶做 比較,評估是否可達到更好的運動學習效果。目前我們所實作的系統,以研究實驗和研 究成果展示為目的,展示所設計的幾種瑜珈動作供受試者學習參考。我們希望這個研究 方法未來可延伸到更多的動作或不同類型的運動學習,以發展出更豐富完整的運動教學 系統。 3.

(16) 1.2 問題描述 有別於傳統教學錄影帶的單一授課方式和受限於時間的課堂學習,我們希望發展出 一套自我學習運動的方式。首先,我們選擇了瑜珈做為運動教學的範例,由於瑜珈運動 有各種不同的姿勢(體位法),可延展和訓練人體不同部位的核心肌群,再加上瑜珈動作 會配合呼吸的調整,可促進血液循環並達到身心靈的壓力紓解。透過電腦動畫的方式來 模擬瑜珈的運動特色,並加入到我們的教學系統中,使用 3D 動畫的方式來呈現我們的 教學模擬,展示出不同於傳統教學的創新性。. 立. 政 治 大. 本研究的主要目標就是使用電腦動畫技術和瑜珈運動的知識來實作出一個完整的. ‧ 國. 學. 瑜珈動畫教學系統。為了能夠實作出應用創新、有系統性並且可供客製化的完整教學系 統,這裡分別列出三大問題探討:. ‧. 1. 如何設計出教學動畫:首先,設計教學動畫的第一步就是要選擇教學素材,選擇以. y. Nat. io. sit. 瑜珈運動為例,並挑選合適的瑜珈動作加以分析,將動作的技巧結合到動畫的製作,. n. al. er. 運用瑜珈的知識來設計人物動畫。從低階的動畫程序產生動作關鍵影格,接著利用. Ch. i n U. v. 內插方法產生影格間的連續動畫,像是運用端點軌跡的路線規劃或是關節角度的內. engchi. 插,最後再加上速度的調整和擬真效果,以設計出完整的動畫。為了能夠更容易控 制動畫的製作和達到更多的彈性,我們選擇程序式動畫為主要實作技術。機構學是 程序式動畫中很常見的方法,我們就是使用其中的正向機構學(forward kinematics) 和反向機構學(inverse kinematics)來做為動畫產生的主要技術,優點是透過設計好 的程序,我們能夠即時的操控動畫效果,達到不同的變化。 2. 參數化程序模組,搭配客製化教學的應用:想要自我學習運動的使用者,對運動本 身的熟悉程度可能會有所不同,所以為了讓不同程度的學習者都能夠看到最符合自 己體能狀況的學習動畫,我們針對使用者做了人物模型腳本。使用者可使用系統提 供的現成模型選項來做為教學動畫的人物輸出,或是自己輸入符合身體本能條件的 4.

(17) 模型腳本,當輸入了不同的人物模型後,系統會自動根據模型來展示出不同變化的 運動教學。透過動作腳本,我們可讓使用者選擇想要學習的動作和高階動作參數如 平衡感和穩定度。我們考慮人物模型中的關節限制、模型體態的不同以及使用者的 體能狀況等,將這些特色參數分別映射到程式中的動作程序,使不同的參數設計產 生不同的教學效果。而人物模型和動作選擇兩個不同的腳本輸入,使得教學系統在 應用上更加富有彈性且具有即時性。 3. 完整的教學系統設計:為了呈現我們的動畫研究讓學習運動的使用者可以方便上手,. 政 治 大 設計都需要完整的規劃。為了實現完整的教學系統,從 UI 介面操作、教學動作的播 立 我們結合了開放的平台環境,並從上層的使用者操作介面、動畫展示到底層的程序. 放、腳本輸入,我們都以使用者的角度來思考如何設計出直覺式的教學系統。在教. ‧ 國. 學. 學系統中,我們設計了兩種面板模式,分別為簡易模式和進階模式可做切換操作。. ‧. 簡易模式會提供一些事先預設好的人物模型和動作供使用者直接點選,對腳本不熟. y. Nat. 悉或不會修改的使用者適用於此模式,而進階模式可讓使用者輸入自己的人物模型. er. io. sit. 和所想要學習的動作,其中我們也會有一些設計好的人物模型和腳本範例,可作為 輸入的腳本範例。這樣的設計可讓對系統操作不熟悉的使用者和進階使用者都可方. al. n. v i n Ch 便快速的熟悉如何使用本教學系統,操作上也將更加的有彈性和人性化,而教學動 engchi U 畫的展示也增添了豐富性。. 1.3 論文貢獻 本論文的主要貢獻包含: 1. 瑜珈教學系統 我們實作了一個實驗平台,名為 IMYogaMotion,並整合了 C++上開放的 3D 繪圖 引擎 OGRE[13]來實現我們的系統,並使用 GUI 繪製函式庫(QT)[14]來製作使用者介 5.

(18) 面,操作介面和動畫呈現都以簡單明瞭、方便操作為設計原則,讓人使用起來更加直覺 化。我們並且將各種需要的功能和程序模組化,像是關鍵格產生、內插方法、人物骨架 和動作資訊、機構學方法等各種在系統中需要用到的功能,模組化後可供未來在設計上 有較好的擴充性和延展性。 2. 瑜珈動畫 過去較少以 3D 動畫做為運動教學的實例,大部分都是以動作擷取技術居多,在瑜珈. 政 治 大 運動的專業知識來設計瑜珈動畫,將瑜珈動作分類之後,可設計出數種不同的子程序, 立 運動領域也少有結合電腦動畫的研究。我們使用程序式動畫和機構學方法,在加上瑜珈. 有些程序可透過參數的調整在同類型動作中通用,有些程序較為獨特只適用於某些動作,. ‧ 國. 學. 再經過速度的調整和關鍵格的內插方法製作出動畫。瑜珈運動在人物關節極限和平衡感. ‧. 的表現上特別的突出,其中我們也利用這種瑜珈的特色來加入適當的動作效果,使得教. sit er. io. 3. 客製化教學應用. y. Nat. 學動畫在表現上有更多的獨特性。. al. n. v i n Ch 我們分別針對人物的模型和動作設計了 腳本,並整理出 XML 的 schema,讓使 e n g cXML hi U. 用者可以自行使用高階的腳本語言來輸入自己所需要的教學動作和人物模型限制條件, 我們將人物模型、瑜珈動作和動作程序三種參數設計為一階層關係,如圖 1.1,使用者 所輸入的高階參數,將映射到我們系統的低階程序中,對使用者而言只需要在輸入腳本 中指定適當的人物模型參數和動作參數,就可經由我們的系統將高階的人物模型參數映 射至中階瑜珈動作參數和低階動作程序參數中,針對不同的人物模型和指定動作來產生 客製化動畫,在我們的教學上是很重要的一個應用。. 6.

(19) 角色平衡感 和穩定性、關節限制. 高階人物模型參數 中階瑜珈動作參數. 指定要做變化的瑜珈動作. 低階動作程序參數. 角色關節的旋轉角度和移動角度. 圖 1.1 輸入參數階層關係. 立. 1.4 本論文之章節架構. 政 治 大. ‧ 國. 學. 第二章將介紹電腦動畫相關研究,以及瑜珈運動和運動教學應用的相關研究。第三. ‧. 章會介紹整個系統的架構和腳本參數的定義。第四章將介紹程序式動畫產生的設計方法, 包含關鍵格和底層程序的設計。第五章將說明我們的實驗成果和評估。第六章為結論和. n. al. er. io. sit. y. Nat. 未來發展。. Ch. engchi. 7. i n U. v.

(20) 第二章 相關研究 2.1 動畫產生方法 在電腦動畫的研究領域中,除了透過動畫軟體製作以外,通常我們將電腦動畫的產 生方法分為程序式動畫和動作擷取兩類。這兩種方法各有其優缺點,也各自有其適用的. 政 治 大. 動畫類型和目的,以下就針對這兩種方法做概略的介紹。. 立. 2.1.1. 程序式動畫. ‧ 國. 學. 人物角色的動畫控制一直是電腦動畫裡熱門的研究領域,並且有很多的研究集中在. ‧. 角色的運動控制。程序式動畫就是其中一種方法,將人物的運動模型歸納後實作於程式. sit. y. Nat. 中,這是屬於以知識為基礎的動畫產生方式。程序式動畫的優勢在於可依事先設計好的. io. er. 演算法自動產生動畫,達到即時的操控和互動的效果,此種方法更容易讓動畫師透過高 階參數來調整動畫。其中,有以剛體動力學(rigid body dynamics)來計算多關節的肢體. al. n. v i n Ch 運動,可以動態的計算出運動的位置、速度、加速度,也就是動作中所有的幾何和時間 engchi U 相關的參數,像是 Bruderlin 等人[15-18]是控制人物走路運動的相關研究,也有像是. Hodgins 等人([19]和[20])曾進行控制跑步、騎腳踏車等的人物運動研究。雖然動力學 方法可符合現實的物理特性,但卻難以讓一般使用者來調整物理相關參數像是力和力矩, 來達到想要的動作控制效果,且若是沒有經過參數調整,動作的效果會較不自然。物理 學方法通常需要較大的計算量,且動物或人物較無法使用物理公式或線性方程式來定義, 此方法較適用於無生命物的運動模擬,例如剛體、流體、布料及毛髮等的模擬。機構學 模型就是屬於動力學中的一種方法,本研究使用的主要技術就是程序式動畫中的機構學, 但並無考慮現實物理特性的動力學方法,而是利用正向機構學和反向機構學來定義出符 合自然的人物動作,以內插來計算動作與動作間的連續變化。 8.

(21) 機構學模型包含了正向機構學(forward kinematics)和反向機構學(inverse kinematics),以圖 2.1 為例,假設 P1、P2、P3 分別為肩膀、手肘、手腕三個關節點,P1P2 是肩膀到手肘的長度,而 P2P3 是手肘到手腕的長度。假設 P1P2 和 P2P3 是已知的長度, 正向機構學就是使用 P1 肩膀位置和 θ1 和 θ2 的移動角度來求出 P3 手腕的位置,公式如下: P3(x) = ̅̅̅̅̅̅. + ̅̅̅̅̅̅. (. ). (2.1). P3(y) = ̅̅̅̅̅̅. + ̅̅̅̅̅̅. (. ). (2.2). 政 P治 大 θ 2. 立. 2. θ1. ‧. ‧ 國. P3 (x, y). 學. P1. 圖 2.1 正向機構學和反向機構學計算方式示意圖. y. Nat. io. sit. 而反向機構學則是使用 P1 肩膀、P2 手肘、P3 手腕的位置和 P1P2、P2P3 已知的長度,. n. al. er. 來求出 θ1 和 θ2 的移動角度,也就是在已知手腕目標位置的條件下,算出肩膀和手肘的 移動角度。公式如下:. Ch. i n U. e n g c̅̅̅̅̅̅̅h i̅̅̅̅̅̅̅ (. ̅̅̅̅̅̅̅. ( ̅̅̅̅̅̅̅ (. (̅̅̅̅̅̅̅ ̅̅̅̅̅̅̅ ̅̅̅̅̅̅̅. ̅̅̅̅̅̅̅. ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅. ). v ). ). ). (2.3) (2.4). 以上都是在 2D 的平面空間中做計算,只會得到一組解。若是在 3D 的空間,因多了 一維的自由度,所以 P2 手肘的位置會有 360 度旋轉的一個自由度(稱為 Swivel Angel), 如圖 2.2,P2 會得到有限組解,在 3D 空間中沿著 X 軸的方向 360 度旋轉,可指定一個 軸向或角度來決定 P2 的唯一組解。. 9.

(22) y x z. 圖 2.2 3D 空間中機構學計算方式示意圖 在我們的研究中參考了 Tolani 等人[21]的 IK 求解器,並在我們的系統中實作可用. 政 治 大. 來解手、腳和身體的運動。在 3D 的空間中,如圖 2.3 所示,在固定肩膀 a 的位置並且. 立. 指定手腕 c 的位置以後,手肘以̅̅̅線段為軸心旋轉可以得到有限組解,給定一個 Swivel. ‧ 國. 學. Angel 使得 abc 平面可沿著̅̅̅線段旋轉 θ 度,將可得到手肘的唯一解。在我們的研究中 以 end point 為已知條件的情況,就是使用此 IK 方法,並且搭配事先設計好符合自然動. ‧. 作的 Lookup table 來求得 Swivel Angel,得到唯一解。. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 2.3 Swivel Angle 示意圖 大多數的程序式動畫研究不僅僅只有產生局部動作,通常會搭配其他研究議題或應 用情境,有些研究把人物動作風格參數化加入到動畫中,並使用反向機構學來產生動畫, 10.

(23) 其中 Chi 等人[22]和 Zhao 等人[23]從 LMA (Laban Movement Analysis)動作分析及 Amaya 等人[24-27]取用適當的個性風格參數,提出了 EMOTE Model 將 Effort 和 Shape 分別映 射到動作手勢和軀幹姿勢中以塑造不同人物性格的動畫。同樣類似的概念,本研究使用 高階的運動參數來對應到低階的程序中,創造出不同的運動效果。Chen 等人[28]也曾從 事典型的程序式動畫研究,使用關鍵格內插方法和 IK 來產生下半身的腳步動作,實作 出即時模擬人體走路動作的運動計畫器,並利用貝茲曲線來構成運動軌跡以順利跨越障 礙物,可克服在不平坦的地形下即時產生走路運動。 2.1.2. 動作擷取. 立. 政 治 大. 動作擷取(Motion Capture)是一種捕捉真實人物動作的技術,也可稱為以圖形為基礎. ‧ 國. 學. 的動畫產生方法。用任何方法得到人物運動的描述數據,透過分析、編輯以製作動畫並. ‧. 可實作在相關研究應用中。原始數據可以採取不同的形式,取決於所要應用的方法,最. sit. y. Nat. 常見的獲得數據方法是光學和 Dyer 等人[29]的磁學。人物運動擷取的資料通常是數個靜. io. er. 態的姿勢序列,每個姿勢都包含了關節的位置和方向,由數個姿勢資料來代表成一個動 作,且使用資料者可不需要對動畫角色的運動方式有所認知,因為擷取的資料來自於真. al. n. v i n Ch 實演員的運動,且在所有動畫產生方法中此種方法也最為逼真。從動作擷取資料中,動 engchi U 畫師可依需求將資料做編輯合成,動作編輯(Motion Editing)最基本的操作就是動作混. 合(Motion Blending),它的目的在於將兩個動作擷取資料做平滑的連接,可以透過線 性方法將人物關節和位置做內插,基本的混合公式如下, 作擷取資料,利用線性內插混合出新的動作 (). (). (). ( )是已知的兩個動. ( ),其中 t 為時間,而 ( )是內插權重。 ( )). (. ( )和. (). (2.5). 但此方法的結果較為死板無變化,所以 Bruderlin 等人提出研究[30],使用訊號處理的方 法,將動畫的資訊從原來的時域轉換到頻域,然後使用頻域上的係數來做內插以合成新 的動作,在非直線的運動上確實有較好的效果。還有 Heeger 等人[31]的研究也顯示在頻 11.

(24) 率空間中合成兩個圖像紋理是有用的,將圖像紋理數字化後,使用 histogram matching 技術即可簡單合成想要的圖像。Lee 等人[32]的研究中結合 hierarchical curve fitting 技術 和新的 IK 解法運用在動作擷取的資料上,調整動作細節以滿足目標人物,也是一個動 作編輯的應用研究。 另外一種動作擷取資料的處理方法是動作變形(Motion Warping), 通 常 我 們 會 有一個想要達到的目標來處理得到的動作資料,一方面保留原本資料的特性和結構,並 以此資料為基礎來定義一個新的動作資料。最早由 Witkin 等人[33]提出這樣的問題,試. 政 治 大. 圖滿足限制將原本的動作訊號經過變形成新的動作,如下的線性組合方法:. 立. () (). ( ). (). (2.6). 學. ‧ 國. (). 其中 ( )是原本的動作資料, ( )是變形後的資料結果, ( )是動作訊號的縮放係數, ( ). ‧. 是用來做位移的,. ( )則是用來做時間變形,也就是時間變化上的內插。. sit. y. Nat. io. er. 像是 Chan 等人[34]的研究,就是以動作擷取配合動作混合技術和 VR(virtual reality) 實作出跳舞的教學系統,並且加入回饋機制來達到更好的學習效果,由實驗的評估看來. al. n. v i n Ch 確實是可以提高使用者的學習效果,和我們的研究目的相同都是教學動畫應用。同樣是 engchi U. 以運動教學為目的的還有王炫智[35],以太極拳 3D 動畫來評估使用者學習的成效,使. 用動作擷取技術搭配 3D 動畫軟體 3DS Max 和 MotionBuilder 所做的教學動畫模擬。不 論是動作混合和動作變形方法都需要大量的動作擷取資料為基礎,經過動作的分析之後, 可建立出資料運算模型,以此來產生出所需要的動作。 由於動作擷取的資料來自真實的演員,所以在擬真度上是最為相近的,多數的動畫 研究都還是以動作擷取資料為基礎來做變化,或加入不同的參數以程序式方法應用於不 同目標的研究上。有些研究結合了程序式動畫和動作擷取的技術,如 Luo 等人[36]是以 手的運動為研究,從動作擷取的資料庫中辨識動作資料,加入程序參數來調整運動,並 12.

(25) 配合動作混合來產生關鍵格。Liang 等人[37]也是同樣類型的研究,實作於人類走路風格 的應用。 我們比較程序式動畫和動作擷取兩種方法,以動作擷取來說,優點是動作取自真實 的演員所以擬真性很高,但卻有資料不易修改和資料量過大的缺點。而程序式動畫,因 為可以透過參數設計來調整動作,程序的重複使用性高,動作的變化也較多較容易,對 於動作的擴充和動作變化的彈性都較好,缺點是在擬真度上的表現,較難以達到和真實 演員一樣的動作效果。. 立. 2.2 人物角色參數化應用. 政 治 大. ‧ 國. 學. 在教學的虛擬實境(VR)的研究裡,常常會使用虛擬的人形角色,用來與使用者. ‧. 溝通和傳達訊息,我們稱為人型化對話代理人(Embodied Conversational Agent, ECA)。為 了更準確地表達人體模型,VRML97 定義了一個標準規範,將人形動畫以 VRML 語言. y. Nat. io. sit. 標準化[38],藉由 H-ANIM 標準,我們可以將人物模型資訊內嵌到 VRML 中,並可相容. n. al. er. 於任何可支援 VRML 的 Web 瀏覽器。在 H-ANIM 定義中,人形角色由線段節點和關節. Ch. i n U. v. 節點所組成,構成一個人型的階層式結構[39],如圖 2.4。. engchi. 圖 2.4 階層式人物模型定義 13.

(26) 在我們的研究中所使用的人物骨架也是使用 H-ANIM 的定義方式,以 Hip 為最上層 節點,從左腳、右腳和脊椎三個分支出去,所組成的骨架模型,左手和右手也同樣會由 脊椎再分支出去。相關的研究有 Xinyu 等人[40],使用 H-ANIM 標準定義人物,並應用 於三維的虛擬實境場景中,可產生演員和展示一些人物動作。Naka 等人[41]也是同樣是 VR 的應用,不同的是實作於 Web 瀏覽器上,並且對人物做擴展的運動定義,將數據以 資料流的方式壓縮,可用於 real-time 的互聯網路傳輸。Naka 等人[42]的研究是將 H-ANIM 腳本加入 IK 和 FK 做為控制人物角色的方法,再針對動作資料流提出的壓縮和解壓方. 政 治 大 的研究,是在 VRML/X3D 的環境中,將腳本擴充加入前後左右上下的參數來做人物動 立. 法,更進一步可用於 MPEG4 以利於在網路上做即時的傳輸處理。其中 Huang 等人[43]. 作的調整,實現在跑步和太極的應用上。Endo 等人[44]以 VRML 創造自然和流暢的人. ‧ 國. 學. 形運動,另外也結合了運動捕捉的人形資料,產生更多樣化的人物動作。. ‧. 由以上研究可知,在很早期就有人提出人物動畫的標準定義,以 H-ANIM 定義的階. Nat. sit. y. 層式人物模型為基礎,並且擴展出其他的動作控制方法,或加入客製化參數做彈性的調. n. al. er. io. 整。這樣的人物模型定義概念,也同樣用於我們的研究中,不同的是我們並非使用 VRML. i n U. v. 做為人物和動作定義的標準語法,而是選擇 XML 語言。. Ch. engchi. 2.3 瑜珈運動 瑜珈(Yoga)是一種起源於印度的運動,各式各樣的瑜珈動作可達到訓練人體肌耐 力並且增進身體協調性的目的,不同的瑜珈動作針對不同的核心肌群做訓練,循序漸進 的瑜珈學習亦可讓人身心都更加健康。多數的瑜珈動作會使身體延展到每個人所能達到 的極限,不同的學習者在做同樣的瑜珈動作時,可能會根據每個人的體能狀況而有不同 的結果,這也是為何我們選擇瑜珈運動來實作的原因之一,藉由此種運動特性,我們可 對不同角色進行客製化的動作,更增加了自我學習的效果。瑜珈運動伸展強調的是持續 緩慢的伸展為原則,屬於靜態伸展,是一種低強度、持續性、緩慢的伸展方式,在靜態 14.

(27) 伸展的過程中,能降低神經肌肉傳入的靈敏性產生 H-反射作用,從陳哲修等人[45]的研 究中,降低刺激到牽張反射時增加的肌肉張力,能使肌肉張力降到最低,避免在伸展的 過程中造成肌肉和肌腱的拉傷,達到放鬆肌肉的效果。Raub 等人[46-49]多數的研究顯 示瑜珈運動對身體柔軟度、肌力和心肺耐力之提升均有不錯的效果。 在瑜珈運動開始之前,通常會有一些暖身的動作,來防止運動傷害,再開始進入正 式的瑜珈練習。瑜珈練習中的各種動作稱之為體位法,我們的研究所參考的是主流的哈 達瑜珈,利用各種體位法並強調配合呼吸以達到身心和諧的目標,哈達瑜珈包含體位法、. 政 治 大. 呼吸和冥想。根據 Belling[50]一書中將體位法姿勢歸類為坐或躺、站立、站立平衡、手. 立. 的平衡、倒立和放鬆姿勢共六類,如圖 2.5 為各種瑜珈類型的動作示意圖。除了姿勢的. 學. ‧ 國. 分類外,又可將不同的體位法分為中立、後仰、側彎和扭轉動作,另外也有難度上的分 級,如圖中星號所示,越多星號代表難度越高。而最後一類是放鬆姿勢,此動作是為了. ‧. 在瑜珈運動做完或到一個階段後,讓身體達到必要的放鬆和休息,所以並無難度的標. n. al. er. io. sit. y. Nat. 示。. Ch. engchi. i n U. v. 圖 2.5 瑜珈體位法分類示意圖[50] 15.

(28) 在瑜珈中呼吸是很重要的,每種瑜珈體位法皆需搭配呼吸,呼吸的訣竅是鼻吸鼻吐, 且使用肚子呼吸而不是胸部,吸氣時將氣慢慢吸飽使肚子微微脹起,吐氣時慢慢將氣吐 掉,使肚子呈現扁扁的狀態。我們用一個簡單的動作來說明如何搭配呼吸,圖 2.5 是瑜 珈體位法中的站姿直腿前彎式,在步驟 1 的圖示中,先將雙手舉起,並配合吸氣,然後 再慢慢地前彎並且配合呼氣,當達到靜態的步驟 3 前彎姿勢時,會繼續緩緩地呼吸,並 感受背部脊椎和後腿拉長延伸,保持 3〜8 個呼吸後再慢慢的反向回復到原本的站姿。 在瑜珈的運動過程中,必須一直保持呼吸,並且在學習者練習的同時給予適當的教學提. 政 治 大 如把基本的動作扎實地完成,動作姿勢的正確性在瑜珈運動中尤其重要,循序漸進的學 立. 示,將會達到比較好的成效。對於瑜珈的初學者來說,與其追求高難度的動作挑戰,不. 習,以自我的體能狀況挑選適當的動作練習,以預防運動傷害是非常重要的。. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 2.6 瑜珈體位法:站姿直腿前彎式[50]. 我們的研究是以教學為主要目的,為了能夠用簡單的教學動作實例來呈現,並且考 量選擇的動作難度不要太高,能夠符合多數人的需求,所以我們選擇站立和站立平衡類 型中的五種體位法來做為運動教學的範例,將會在後續的文章中對於動作和關鍵影格做 詳細的介紹。另外,在同一種類型的瑜珈動作中,會有較高的動作相似度,這種特性用 於程序式動畫中,可使動作程序達到較好的重複利用性,所以我們在實作動作的挑選上 也會盡量以同類型的體位法做為考量。 16.

(29) 第三章 系統總覽 3.1 系統架構 為了讓 3D 動畫和運動教學結合,並實作出可實際使用的系統,我們規劃了一套完 整的系統架構,圖 3.1 是我們的瑜珈動畫教學系統架構示意圖。我們將系統分為使用者. 政 治 大 Animation Display)三個模組。使用者介面將呈現系統功能所需要的按鈕和選單,並且 立. 介面(User Interface)、3D 動畫產生器(3D Animation Generator)和 3D 動畫顯示器(3D. 處理由使用者所觸發的事件和腳本的輸入;3D 動畫產生器是我們產生動畫的核心,裡. ‧ 國. 學. 面將包含關鍵影格、低階程序、內插器等元件,並負責將高階的腳本語言所轉換出的低. ‧. 階語言,對應到程序模組或內插器中,計算出相對應的人物動作;3D 動畫顯示器負責. sit. y. Nat. 播放產出的動畫,依照所指定的播放速度並且在動畫播放的過程中搭配適當教學提示,. io. er. 還可以手動的調整攝影鏡頭,將產出的畫面呈現給使用者。這三個模組之間的關係流程, 會先由使用者介面輸入所想要的人物和動作腳本,亦可直接由選單按鈕選擇系統內建的. al. n. v i n Ch 人物或動作,輸入的腳本資料經過解析器將高階的參數輸入給相對應的動作,並且轉換 engchi U 為低階程序所使用的程序參數,另外一種是透過介面功能,選擇不同的人物骨架和想要 展示的瑜珈動作,皆會進入到 3D 動畫產生器模組中做計算,以產生完整的動畫所需要 的所有影格,讓 3D 動畫顯示器使用。動畫產生器是我們系統的核心,其中包含了機構. 學、內插器、修正器和速度控制等模組,將在下一節中做更詳盡的介紹。最後所計算好 的動畫影格,會由動畫顯示器做即時的播放呈現,在顯示的部分中還包含了教學提示, 以增加使用者的學習效果,並且可以手動調整攝影鏡頭,做 360 度視角的觀看。. 17.

(30) User Interface 3D Animation Displayer UI event User Interface. 3D Animation Generator Screen Rendering. Motion Key Frame. Parser. Interpolator. … Teaching Tips. Script file Input. Body Control Procedure. 政 治 大. High Level Parameter input. 學. ‧ 國. 立. Camera Control. ‧. 圖 3.1 瑜珈動畫教學系統架構示意圖. sit. y. Nat. io. er. 我們將腳本的設計分為兩部分,各為一個檔案,一部分是人物模型腳本,負責輸入 有關人物的骨架和肉的模型,以及人物關節最大所能到達的限制範圍,在動作產生和計. al. n. v i n Ch 算時所必須的參數。另外還有一類是和人物運動特色有關係的參數,例如人物平衡感和 engchi U 穩定度,這些資訊同樣會包含在人物模型腳本中,這些參數是非必須的,主要用來作為. 一些特定動作上所產生的動作效果,例如手腳的抖動或身體的搖晃。另外一部分是動作 腳本,動作腳本只負責輸入所想要做的瑜珈動作和動作的順序,再加上動作的教學提示。 將上述兩種腳本分開,可讓使用者單獨切換人物模型和動作,更加符合教學系統的使用。 腳本的階層關係如圖 3.2,高階的參數是讓使用者於腳本中做設定的,我們需要決定哪 些參數將對應到哪些動作中,並且實際呈現於使用者所選擇要展示的動作中,最後將會 依每個人不同的選擇而出現不一樣的動畫結果,這也是我們選擇程序式動畫來實作最主 要的原因。. 18.

(31) 角色平衡感 和穩定性、關節限制. 高階人物模型參數 中階瑜珈動作參數 低階動作程序參數. 指定要做變化的瑜珈動作 角色關節的旋轉角度和移動角度. 圖 3.2 輸入參數之階層關係. 政 治 大 3D 動畫顯示器中包含了人物動畫和教學提示列,如圖 3.3 所示。教學提示列置於人 立. 物動畫的上方,提示內容會由動作腳本匯入,隨著動畫的播放,教學提示可動態的改變。. ‧ 國. 學. 攝影鏡頭則可透過滑鼠以人為中心做動態的調整,按住滑鼠左鍵可做上下移動,按住滑. ‧. 鼠右鍵可做左右移動,按住滑鼠中鍵可拉遠近。. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 3.3 動畫展示面板示意圖. 19.

(32) 3.2 動畫產生流程 設計動畫產生流程是我們系統的核心,此節將詳細介紹其中的模組與運作流程。3D 動畫產生器主要包含了三個模組,分別是動作關鍵影格(Motion Key Frame)、內插器 (Interpolator)和修正器(Corrector),如圖 3.4 是整個動畫產生流程架構圖。動作關 鍵格是用來產生瑜珈動作的關鍵姿勢,其中用了各種程序模組來實作,而內插器是為了 將這些關鍵姿勢連接起來,成為完整的動畫,最後再透過修正器處理一些符合物理性質 和不自然動作的修正。. 立. 政 治 大. Motion KeyFrame. 學. ‧ 國. 3D Animation Generator. Interpolator. ‧. Space Path Interpolator. y. Nat. Body Control Procedure. n. C h Speed Control engchi. er. io. al. Endpoint space. sit. Joint space. Kinematic - Inverse kinematic - Forward kinematic Joint Lookup Table. Corrector (Satisfying constraints). i n U. v. Time space interpolator e.g. ease-in ease-out …etc. Character parameter input. 圖 3.4 3D 動畫產生流程示意圖. 20.

(33) 關鍵影格為動作變化的分隔點,在設計動作時選取適當的關鍵影格會讓整個動畫的 呈現更佳的流暢。我們參考了瑜珈動作的相關資料和文獻,定義出動作關鍵影格之後, 再利用數學方法計算出每個關節的位置和旋轉角度,主要是使用 Inverse Kinematic、 Forward Kinematic 以及三角函數來求出符合關鍵格定義的動作,在 3D 場景中關節的自 由度較多,所以也建立了以線性內插為基礎的 Lookup table 以解決 IK 中冗餘自由度的 設定,使人物動作符合自然和常理性。每種瑜珈動作中包含好幾個關鍵格,而關鍵格是 由數個不同的程序模組所組成的一個關鍵姿勢(Key Pose),每個程序都是獨立的模組,. 政 治 大 算方法和程序,當一個新的關鍵姿勢出現時,我們也只需要使用到相對應的程序模組來 立 例如控制手轉動和控制腳轉動都是由獨立的模組來分別實作,模組中會使用到不同的計. 實現。從瑜珈知識中,我們決定了關鍵動作組成的一些規則,並實作所需要的低階程序. ‧ 國. 學. 模組。另外,我們又將不同的瑜珈體位法定義為不同的高階動作模組,每個體位法都是. ‧. 由數個關鍵格姿勢經過內插方法所得到的完整動畫,而關鍵格動作就是由獨立的低階程. y. Nat. 序模組所組成。這種模組的設計概念,當要加入新的瑜珈動作的時候,可用現有的程序. 需要全部重新再做一次,達到較高的程序重用性。. n. al. Ch. engchi. er. io. sit. 模組來實作出不同的關鍵格動作,若有需要只要再加入一些新的程序模組即可達成,不. i n U. v. 瑜珈體位法的關鍵格姿勢產生出來後,接下來就要選擇適當的內插器來完成動畫的 連接。內插的方法主要有兩種,第一種 Joint space 是屬於關節角度的內插法,指定前後 兩個關鍵影格的關節角度做內插,可適用於全身的關節。第二種 Endpoint space 是屬於 指定端點移動路徑的內插法,計算出要移動關節點的移動路徑,路徑可能是直線或曲線, 依照人自然的運動行為來做設計,然後照著這個移動路徑適當的使用 IK 計算出其他連 動關節的旋轉角度,較常使用在手或腳的移動。在上述兩種內插法中都需要搭配時間這 個變數,這個時間參數可分為直線和曲線的時間內插,在大部分的動作中,我們使用曲 線的時間內插,使用緩進緩出的時間參數來實作出較為擬人的效果。由使用者所輸入的 人物關節限制參數會在低階的 Body Control 程序中使用到,可用來決定關鍵格中的動作 21.

(34) 細節,例如手舉起的高度或彎腰的角度等。而人物運動的特色參數,平衡感和穩定度會 在內插器中所使用,用來計算手部晃動或站立不平衡的搖晃效果。接著我們還設計了一 個修正器,是為了使人物運動符合物理性質,例如讓人的腳可以一直保持踩在地板上面, 不會產生飄浮空中或是穿越到地面下的奇怪情形,也用於處理腳步滑動等不自然的動作 姿勢。. 3.3 人物骨架和模型. 政 治 大. 製作動畫的第一步就是要選擇被控制的動畫角色,在進入製作動畫的核心前,要先. 立. 來介紹如何產生動畫角色。我們以人物角色做為教學動畫展示的主角,我們把角色分為. ‧ 國. 學. 人的骨架和肉兩部分,都將做為人物模型腳本的匯入參數,接下來會先介紹不同的人物 產生方式和定義的規則。. ‧. 我們使用的人物骨架必須映射到動作程序中做運動控制,所以我們先將所有的關節. y. Nat. io. sit. 名稱定義統一標準化,如圖 4.1 的骨架定義。系統可以允許輸入不同的人物模型,關節. n. al. er. 與關節間的骨頭長度也可以依照學習者的條件來做設定,但需要使用統一定義的關節名. Ch. i n U. v. 稱。在人物模型的輸入腳本中會包含骨架(skeleton)和網格模型(mesh)的資訊,若. engchi. 無此資訊輸入,系統會以內建初始值”中等身材人物”做為展示模型。骨架部份是以 BVH (Biovision Hierarchy)做為資料匯入格式,BVH 是普遍用來表現人類骨架和動作的資 料格式,在我們的系統中只需要取得其中骨架的資訊,而省略檔案中動作的部分,輸入 的參數就是完整的 BVH 檔案名稱。另外,我們在系統中內建了三種初始的骨架,分別 是瘦小、中等身材和胖子的骨架,主要變化是在人物的骨架比例上做了一些調整,並且 給定不同的關節限制參數,不同的內建人物骨架同時也用於驗證我們的教學系統在人物 角色上的通用性,可適用於不同身材比例的人物。骨架決定了以後,另外一個輸入資訊 是網格模型和材質的部分,我們所輸入的人物資訊來自於 Maya,在 Maya 中繪製好的 人物角色,將骨架的比例和關節名稱定義和 BVH 檔中相同的骨架資訊,以供程式讀取 22.

(35) 和控制,從 Maya 匯出 skeleton、mesh 和 material 三種檔案格式的檔案,分別代表人物 的骨架、網格和材質;另外,我們使用檔名做為人物模型腳本的輸入參數。. Head_Top RightShoulder RightElbow RightWrist. Head Neck LeftShoulder LeftElbow LeftWrist. Chest_up RightHandToe. LeftHandToe. Chest RightHip. 立. 政 治 大. ‧ 國. 學. RightKnee. Hips LeftHip. LeftKnee. ‧ 圖 3.5 人物骨架標準化定義. n. al. LeftAnkle LeftToe. er. io. sit. y. Nat. RightAnkle RightToe. Ch. engchi 3.4 關節限制和運動特色參數化. i n U. v. 人物模型腳本中還包含了數種人物關節的條件限制和運動特色的參數設定,這些參 數是針對人物運動時所需要伸展的身體部位,以及影響運動效果的體能狀態所整理出來 的,通常也是運動中所需要訓練的重點部分,我們將針對人物模型腳本中的參數逐一做 介紹。. 1. < close_feet_pitch>,雙腳併攏時,兩腳踝關節之間的間距:此參數的單位是公分, 主要是運用在站立姿勢時需將兩腳併攏的程序。根據不同的人物骨架和身材,可能. 23.

(36) 會有所不同,當人物的身形較大時併攏的距離會較長,身形較小時距離會較短,需 針對人物的體型來設定。 2. <bend_forward_max_angle>,腰和背打直然後往前彎腰,所能達到的最大角度:參數 設定的範圍在 45〜90 度之間。當設定值超過最大角度 90 度時,我們的系統將設為 90 度,因為在我們的前彎標準動作中,所需要的最大角度為 90 度。 3. <raise_head_angle>,眼睛看向正上方時頭所能夠抬的最大角度:參數設定範圍在 30 〜90 度之間,此參數視個人頸部的柔軟度而定。. 政 治 大 圍在 60〜90 度之間。當設定值超過最大角度 90 度,我們的系統將設為 90 度,因為 立. 4. <scoliosis_max_angle>,腰和背打直的情況下,從腰部側彎的最大角度:參數設定範. 在我們的側彎標準動作中,所需要的最大角度為 90 度。. ‧ 國. 學. 5. <raise_hands_max_angle>,雙手伸直同時向上舉的最大角度:設定範圍在 150〜180. ‧. 度之間,雙手上舉的標準動作角度為 180 度,以此標準做為動作上限。. Nat. sit. y. 大部分的參數都會有範圍的限制,這也是為了判斷是否有不合法的參數輸入。若角. n. al. er. io. 色之體能狀況可超過範圍設定的最大值,系統將會視為最大值,若超過最小值也將會視. i n U. v. 為最小值,因為對系統來說不合法的輸入數值,只會取最接近的合法值來做設定,參數. Ch. engchi. 範圍的設計是根據瑜珈動作中,所需要的極限和一般人的體能狀況來做限制。以上五種 人物限制的參數設定將映射到低階的動作程序中,這是讓角色客製化最主要的控制因素, 經過參數控制會有不同的動作結果產生。從圖 4.3 中可看到上述的模型限制參數是如何 對應到動作中,圖中黃色箭頭標示了參數對應到瑜珈動作的關節角度或距離,圖中範例 並非限制於圖中的動作姿勢,而是將模型參數實際應用於瑜珈動作中的例子。. 24.

(37) Model_variable 1. Model variable 2 <bend_forward_max_angle>. Model variable 3 <raise_head_angle>. Model variable 4. 政 治 大. Model variable 5. <scoliosis_max_angle>. 立. <close_feet_pitch>. ‧. ‧ 國. 學 <raise_hands_max_angle>. n. er. io. sit. y. Nat. al. Ch. i n U. v. 圖 3.6 人物模型限制參數映射於瑜珈動作之範例. engchi. 另外我們還加入了人物平衡感和穩定度的人物特色參數,在設計動作時會決定這個 動作是否需要有較好的平衡感或穩定度來練習,或是這個動作是否會受到這兩項因素的 影響而有變化,若這兩項因素會影響人物在做動作時的結果,我們將調整這兩個參數的 設定值,並計算出相對應的動作效果,所以並非所有動作都會需要用到人物特色參數, 而此兩項參數的設定值只會映射到特定的瑜珈動作程序和內插程序中。我們系統內建的 腳本模型,也將對於人物特色參數做不同的調整,透過參數的調整所產生的結果,將在 後面的實驗中展示。. 25.

(38) 3.5 人物模型腳本和動作腳本描述 此節中我們將介紹人物模型和動作腳本的設計和所應該包含的參數,以我們內建的 人物模型腳本為例,將各項人物相關的調整參數化後,可動態的讓使用者根據腳本規則 來載入所需要的人物角色,可讓人物腳色和教學系統分離,這也是參數化後的優點。首 先介紹腳本使用的檔案格式,我們使用 XML 做為腳本輸入的檔案格式,XML(eXtensible Markup Language)是「可延伸」的標記語言,由於它不僅具自訂彈性,還能無限延伸, 定義出各式各樣的標記語言。XML 是非常普遍的標準語言,普遍使用於資料的存取和. 治 政 數據的交換,XML 是以 Unicode 為字碼標準,所以定義標籤時可以使用中文或其他國 大 立 家的語言。透過 XML 腳本來選用不同的動作程序或不同的模型參數,即可產生不同的 ‧ 國. 學. 動畫,將動作變化相關的參數抽離動畫引擎,設計成通用的動畫程序。為了能夠讓腳本. ‧. 的輸入語法更為親近人類語言,我們將它轉譯為較高階的模型參數和動作參數標籤,以 下分別介紹系統中人物模型腳本和動作腳本的架構:. sit. n. al. er. io. 人物模型腳本. y. Nat. . Ch. i n U. v. 圖 3.7 是系統中預設的一個人物模型腳本,root element 需為<Character>,代表這是. engchi. 描述人物模型的文件,其中會有<skeleton>和<mesh>兩個 element 分別是載入人物的骨 架和肉,只需填入檔名即可。另外還有一個 element 為<Model_variable>,裡面包含了各 種描述模型的限制參數,如上節所介紹的總共有七個 element,其中是<close_feet_pitch>、 <bend_forward_max_angle>. 、. <raise_head_angle>. 、. <scoliosis_max_angle>. 、. <raise_hands_max_angle>是人物的關節限制和特定動作的參數設定, 另外還有兩個 element 是<balance>和<stability>,可參考圖 4.2 範例腳本中的設定,這是動作平衡感和 穩定度的參數,將會映射到特定的瑜珈動作程序中,在瑜珈動作展示時表現出晃動或動 作不平衡等動作效果,平衡感參數的設定範圍是 0 到 5,0 是平衡感最佳而 5 是最差, 而穩定度參數的設定範圍是 0 到 3,0 是穩定度最佳而 3 是最差,以此腳本為例,兩種 26.

(39) 都設為 0 皆是最佳的,在動作的表現上不會看到身體搖晃和動作晃動的效果。 設定了這兩個參數後,系統會根據動作需求來映射到特定的動作中,例如單腳站立 時若平衡感不佳,則會出現搖晃的效果,或是當雙手需要大幅度上舉時,若穩定度不佳, 則會出現手部多餘的晃動效果。參數的輸入型態和最大最小值的限制可參考附錄 A 中的 XML schema。其他的系統預設描述文件也可參考附錄 C。 <?xml version="1.0" encoding="UTF-8" ?> <Character>. 治 政 <mesh>Medium_skin.mesh</mesh> 大 立 <Model_variable> <skeleton>Medium_skeleton.bvh</skeleton>. ‧ 國. 學. <close_feet_pitch>8.5</close_feet_pitch>. <bend_forward_max_angle>90</bend_forward_max_angle> <raise_head_angle>70</raise_head_angle>. ‧. <scoliosis_max_angle>90</scoliosis_max_angle>. <raise_hands_max_angle>180</raise_hands_max_angle>. y. Nat. sit. <balance>0</balance>. io. er. < stability >0</stability>. </Model_variable>. . al. n. </Character>. i n U. v. C h圖 3.7 人物模型腳本範例 engchi. 動作腳本 動作腳本中描述要展示的瑜珈動作和教學提示,動作腳本的 root element 需為. <Motions>,其中包含了瑜珈動作的 element 為<motion>,腳本中至少需要有一個 <motion> element,是用來指定要展示的瑜珈動作,如圖 3.8 中的<motion index="1">, 且<motion> element 必定有 index attribute 來決定動作的展示順序,在<motion> element 中還有<name> element 來表示動作的名稱,程式用此辨別要載入哪一個瑜珈動作的程序, 而<tips> element,這是非必須的 element,在 XML schema 中限制其最小值為 0,最大為 27.

(40) 無上限,主要是用來播放動作時所產生的教學提示字串,會依順序在適當的關鍵格切換 播放,若沒有輸入這個 element,將不會有教學提示產生。可參考附錄 B 的動作腳本 schema 裡面有對 element 和 attribute 的選擇和限制做描述,另也可參考圖 3.8 是本系統 的動作腳本範例。 <?xml version="1.0" encoding="UTF-8" ?> <Motions> <motion index="1"> <name>Mountain</name>. 政 治 大. <tips>山式 - 雙腿和雙腳併攏站好,手臂放在身體兩側,手臂, 手掌和手指向下</tips> <tips>膝蓋打直,大腿, 腳跟和腳大拇指關節相碰觸。雙腿用力合攏,使其成為能穩固. 立. 支撐身體的柱子</tips> </motion>. ‧ 國. 學. <motion index="2"> <name>Heroic</name> 成一直線</tips>. ‧. <tips>英雄式 1 - 從山式開始,雙腳分得越開越好,同時保持身體穩定性,雙腳後跟. y. sit. 擴胸</tips>. Nat. <tips>吸氣,雙臂舉過頭,手臂, 手掌和手指均向上伸展,保持雙臂平行,肩膀下壓,. er. io. <tips>雙腿雙腳固定,自然地呼吸。右腿和右腳外轉 90 度,左腿內轉 45 度。雙腿打. al. n. v i n Ch <tips>轉動上半身和髖部,面向正右方,雙腳不要移動。吸氣,用手臂的力量把腰部 engchi U 以上的身體往上拉</tips> 直,腳跟穩固的貼地</tips>. <tips>吐氣,右膝彎曲,努力讓大腿和地面平行。右膝對準身體正前方,膝蓋在腳跟 正上方</tips> <tips>保持腳彎曲的姿勢,眼睛往手的方向看,雙手合十,拇指互碰。</tips> <tips>保持這個姿勢 4 到 8 個呼吸的時間</tips> </motion> </Motions>. 圖 3.8 動作腳本範例 上述的人物模型和動作腳本皆可運用在我們所設計的瑜珈動作中,只要符合腳本的 schema 定義(詳見附錄 A 和附錄 B) ,我們的系統就能辨識並產生出相對應的動作,不 但人物模型和動作是分開產生的,且也可以分別載入,彼此之間沒有連動性和相關性。 28.

(41) 另外每個瑜珈動作也都是獨立產生的,定義腳本的目的就是希望能夠把人物角色和動作 獨立出來,並且和我們的教學系統分離,同時也可驗證不同的人物設定和動作在我們系 統中的可行性。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. 29. i n U. v.

(42) 第四章 程序式動畫產生 此章節將介紹系統的核心動畫模組如何產生動畫,首先會先介紹我們如何決定選擇 的動作範例,接著介紹瑜珈動作關鍵格的產生程序和參數設計,以及動作過程的程序設 計,即各種空間和時間的內插方法實作,最後是動作的碰撞修正。 為了能夠用顯而易見的瑜珈教學動作實例來呈現出 3D 動畫系統,並結合客製化和. 政 治 大. 運動特色參數,不同於傳統的學習而是以 3D 動畫的教學方式呈現,讓使用者覺得我們. 立. 的系統和傳統的教學錄影帶不同,是另外一種創新的學習方式。我們選擇了五種瑜珈動. ‧ 國. 學. 作,分別是山式(Mountain)、英雄式一(Heroic 1)、英雄式二(Heroic 2)、英雄式三 (Heroic 3)和三角伸展式(UTTHITA Trikonasana),其中山式、英雄式一、英雄式二. ‧. 和三角伸展式屬於站立姿勢,而英雄式三屬於站立平衡姿勢,我們主要會選擇站立和站. y. Nat. sit. 立平衡的瑜珈動作類型,是由於這些動作有較高的相似度,在設計動畫程序時,為了能. n. al. er. io. 夠讓程序在設計上有較高的重用性,我們選擇這兩類相近的瑜珈體位法做為教學動作範. i n U. v. 例,另外一個原因是站立動作的肢體表現較為明顯,動作難度適中,適合初學者和進階 者練習。. Ch. engchi. 4.1 關鍵格之程序設計 瑜珈動作的程序設計由決定動作關鍵格開始,這一節將會介紹各種不同瑜珈動作的 關鍵格設計,以及組成關鍵格所需要的各種程序。我們也會介紹如何為每種程序設計其 相對應的參數,以通用於不同的動作之中。. 4.1.1. 動作關鍵格. 30.

數據

圖 2.3 Swivel Angle 示意圖  大多數的程序式動畫研究不僅僅只有產生局部動作,通常會搭配其他研究議題或應 用情境,有些研究把人物動作風格參數化加入到動畫中,並使用反向機構學來產生動畫,x y z
圖 5.17  客製化角色動作,角色一:Thin and flexible,角色二:  Medium,角色三:Heavy 角色一角色二角色三

參考文獻

相關文件

These are quite light states with masses in the 10 GeV to 20 GeV range and they have very small Yukawa couplings (implying that higgs to higgs pair chain decays are probable)..

“Big data is high-volume, high-velocity and high-variety information assets that demand cost-effective, innovative forms of information processing for enhanced?. insight and

Microphone and 600 ohm line conduits shall be mechanically and electrically connected to receptacle boxes and electrically grounded to the audio system ground point.. Lines in

Proceedings of the 19th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval pp.298-306.. Automatic Classification Using Supervised

n Media Gateway Control Protocol Architecture and Requirements.

Hofmann, “Collaborative filtering via Gaussian probabilistic latent semantic analysis”, Proceedings of the 26th Annual International ACM SIGIR Conference on Research and

Proceedings of IEEE Conference on Computer Vision and Pattern Recognition, pp... Annealed

(計畫名稱/Title of the Project) 提升學習動機與解決實務問題能力於實用課程之研究- 以交通工程課程為例/A Study on the Promotion of Learning Motivation and Practical