第三章 系統總覽
3.5 人物模型腳本和動作腳本描述
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
3.5 人物模型腳本和動作腳本描述
此節中我們將介紹人物模型和動作腳本的設計和所應該包含的參數,以我們內建的 人物模型腳本為例,將各項人物相關的調整參數化後,可動態的讓使用者根據腳本規則 來載入所需要的人物角色,可讓人物腳色和教學系統分離,這也是參數化後的優點。首 先介紹腳本使用的檔案格式,我們使用 XML 做為腳本輸入的檔案格式,XML(eXtensible Markup Language)是「可延伸」的標記語言,由於它不僅具自訂彈性,還能無限延伸,
定義出各式各樣的標記語言。XML 是非常普遍的標準語言,普遍使用於資料的存取和 數據的交換,XML 是以 Unicode 為字碼標準,所以定義標籤時可以使用中文或其他國 家的語言。透過 XML 腳本來選用不同的動作程序或不同的模型參數,即可產生不同的 動畫,將動作變化相關的參數抽離動畫引擎,設計成通用的動畫程序。為了能夠讓腳本 的輸入語法更為親近人類語言,我們將它轉譯為較高階的模型參數和動作參數標籤,以 下分別介紹系統中人物模型腳本和動作腳本的架構:
人物模型腳本
圖 3.7 是系統中預設的一個人物模型腳本,root element 需為<Character>,代表這是 描述人物模型的文件,其中會有<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 是最差,以此腳本為例,兩種
‧
<?xml version="1.0" encoding="UTF-8" ?>
<Character>
<skeleton>Medium_skeleton.bvh</skeleton>
<mesh>Medium_skin.mesh</mesh>
<Model_variable>
< stability >0</stability>
</Model_variable>
</Character>
圖 3.7 人物模型腳本範例
動作腳本
動作腳本中描述要展示的瑜珈動作和教學提示,動作腳本的 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,最大為
‧
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>英雄式 1 - 從山式開始,雙腳分得越開越好,同時保持身體穩定性,雙腳後跟
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
另外每個瑜珈動作也都是獨立產生的,定義腳本的目的就是希望能夠把人物角色和動作 獨立出來,並且和我們的教學系統分離,同時也可驗證不同的人物設定和動作在我們系 統中的可行性。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
第四章 程序式動畫產生
此章節將介紹系統的核心動畫模組如何產生動畫,首先會先介紹我們如何決定選擇 的動作範例,接著介紹瑜珈動作關鍵格的產生程序和參數設計,以及動作過程的程序設 計,即各種空間和時間的內插方法實作,最後是動作的碰撞修正。
為了能夠用顯而易見的瑜珈教學動作實例來呈現出 3D 動畫系統,並結合客製化和 運動特色參數,不同於傳統的學習而是以 3D 動畫的教學方式呈現,讓使用者覺得我們 的系統和傳統的教學錄影帶不同,是另外一種創新的學習方式。我們選擇了五種瑜珈動 作,分別是山式(Mountain)、英雄式一(Heroic 1)、英雄式二(Heroic 2)、英雄式三
(Heroic 3)和三角伸展式(UTTHITA Trikonasana),其中山式、英雄式一、英雄式二 和三角伸展式屬於站立姿勢,而英雄式三屬於站立平衡姿勢,我們主要會選擇站立和站 立平衡的瑜珈動作類型,是由於這些動作有較高的相似度,在設計動畫程序時,為了能 夠讓程序在設計上有較高的重用性,我們選擇這兩類相近的瑜珈體位法做為教學動作範 例,另外一個原因是站立動作的肢體表現較為明顯,動作難度適中,適合初學者和進階 者練習。
4.1 關鍵格之程序設計
瑜珈動作的程序設計由決定動作關鍵格開始,這一節將會介紹各種不同瑜珈動作的 關鍵格設計,以及組成關鍵格所需要的各種程序。我們也會介紹如何為每種程序設計其 相對應的參數,以通用於不同的動作之中。
4.1.1. 動作關鍵格
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
此節將詳細介紹所有動作的關鍵格以及所需要的達到的動作提示,這些動作提示將 對應到下節的關鍵格產生程序中。系統中人物的初始動作是站立姿勢,雙腳與肩同寬,
雙手自然下垂,所有人物模型匯入的初始動作將由此開始做起,如圖 4.1(1),我們將逐 一介紹五種瑜珈動作的關鍵格。第一種為山式,此動作為瑜珈中的基本站立式,瑜珈中 幾乎所有的站姿動作都可由此動作開始,在瑜珈中也可做為一個單獨的體位法來練習,
後面將介紹的其他四種瑜珈體位法皆可搭配從山式開始或在結束時回到山式。山式只需 要一個關鍵格,如圖 4.1(2),將雙腿和雙腳併攏站好,膝蓋打直,腳跟和腳大拇指關節 相碰觸,手臂與手指向下伸,放在身體兩側,自然垂下於身體兩側。
圖 4.1 (1)站立關鍵影格;(2)瑜珈動作”山式”關鍵影格
第二個動作是英雄式一,此動作有六個關鍵影格,如圖 4.2。
第一個關鍵格如圖 4.2(1):將雙腳盡量打開,同時保持身體的穩定性,雙腳後跟成一直 線,雙手自然垂下。
第二個關鍵格如圖 4.2(2):維持上一個動作並將雙臂高舉過頭,雙手向上伸直,保持雙 臂平行。
(1) (2)
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
第三個關鍵格如圖 4.2(3):維持上一個動作並將右腳向外轉 90 度,左腳向內轉 45 度,
以預備下一個動作。
第四個關鍵格如圖 4.2(4):維持上一個動作並轉動上半身和髖部,向右轉 90 度,面向正 右方,雙腳不要移動。
第五個關鍵格如圖 4.2(5):維持上一個動作並將右膝彎曲,盡量讓大腿和地面平行,右 膝對準身體正前方並且膝蓋在腳跟的正上方。
第六個關鍵格如圖 4.2(6):維持上一個動作後,眼睛往手的方向看,下巴抬起,伸展頸 部正面,雙手合十,手指相觸。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 4.2 瑜珈動作”英雄式一”關鍵影格(1) ~ (6)
第三個動作是英雄式二,此動作有五個關鍵格,如圖 4.3。
第一個關鍵格如圖 4.3(1):將雙腳盡量打開,同時保持身體的穩定性,雙腳後跟成一直 線,雙手自然垂下。
第二個關鍵格如圖 4.3(2):維持上一個動作並將右腳向外轉 90 度。
第三個關鍵格如圖 4.3(3):維持上一個動作並將雙臂平舉至兩側與肩膀同高,手心朝下,
手指指向身體兩側。
(1) (2) (3)
(4) 4)
(5) (6)
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
第四個關鍵格如圖 4.3(4):維持上一個動作並將頭轉向正右方。
第五個關鍵格如圖 4.3(5):維持上一個動作並將右膝彎曲,膝蓋正對身體右側,在腳後 跟的正上方,右腿形成一個直角,雙腳穩固貼地,肩膀應在髖部的正上方,肩膀與骨盆 均保持水平不傾斜。
圖 4.3 瑜珈動作”英雄式二”關鍵影格(1) ~ (5)
第四個動作是英雄式三,此動作為英雄式一的延伸版本,屬於站立平衡動作,前五 個關鍵格中,腳的擺放位置和英雄式一相同,手的部分有些變化,並且再延伸出後面三 個關鍵格來完成此動作,此動作共有八個關鍵格,如圖 4.4。
第一個關鍵格如圖 4.4(1):將雙腳盡量打開,同時保持身體的穩定性,雙腳後跟成一直 線,雙手自然垂下。
(1) (2) (3)
(4) (5)
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
第二個關鍵格如圖 4.4(2):維持上一個動作並將右腳向外轉 90 度,左腳向內轉 45 度,
以預備下一個動作。
第三個關鍵格如圖 4.4(3):維持上一個動作並轉動上半身和髖部,向右轉 90 度,面向正 右方,雙腳不要移動。
第四個關鍵格如圖 4.4(4):維持上一個動作並將右膝彎曲,盡量讓大腿和地面平行,右 膝對準身體正前方並且膝蓋在腳跟的正上方。
第五個關鍵格如圖 4.4(5):維持上一個動作後將雙臂和手指向前再向上抬起,貼近耳朵,
手指向上伸展。
第六個關鍵格如圖 4.4(6):維持上一個動作後,上半身向前彎,雙臂同時向前伸,身體 軀幹和手臂保持平行向前不要彎曲。
第七個關鍵格如圖 4.4(7):保持上一個動作,並將重心移到右腳,保持右膝蓋面向身體 前方,提起左腳並伸直,腳趾指向後方,眼睛看向地面。
第八個關鍵格如圖 4.4(8):保持上一個動作達到平衡後,眼睛看向手的方向。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 4.4 瑜珈動作”英雄式三”關鍵影格(1) ~ (8)
第五個動作是三角伸展式,此動作共有五個關鍵格,如圖 4.5。
第一個關鍵格如圖 4.5(1):將雙腳打開約身體的兩倍寬,雙腳互相平行並穩固地貼地,
雙手自然垂下。
(1) (2) (3)
(4) (5) (6)
(7) (8)
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
第二個關鍵格如圖 4.5(2):維持上一個動作並將右腳向外轉 90 度,左腳向內轉 45 度,
以預備下一個動作。
第三個關鍵格如圖 4.5(3):維持上一個動作並將雙臂平舉至兩側與肩膀同高,手心朝前,
手指指向身體兩側。
手指指向身體兩側。