第四章 程序式動畫產生
4.1 關鍵格之程序設計….…
4.1.2. 關鍵格產生程序
Rotate_Hands_by_X_axis(圖 4.7 左),使雙手以 X 軸為中心旋轉,如瑜珈動作中英
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
雄式一和英雄式三的舉手動作,就是套用這個程序。此程序的參數為雙手舉起的角 度。第二種程序是 Rotate_Hands_by_Z_axis(圖 4.7 右),使雙手以 Z 軸為中心旋轉,
此程序的參數也是雙手舉起的角度,如瑜珈動作中英雄式二和三角伸展式的手部動 作,將雙手平行舉至左右兩側。上述兩種程序皆是以雙手同時控制,以單一軸心做 旋轉,此方法將應用在大多數的程序中,套用同樣的座標軸。第三種程序是
Droop_Hands,屬於手腕的動作程序,我們設計了一個程序模組來表現雙手自然垂下 的狀態,可用來分別指定左右手腕的彎曲程度,此程序的參數為左手和右手腕彎曲 的角度,例如在山式中的手腕動作就用到此程序。第四種程序是 Open_Arms,為固 定的手部動作,以雙手向兩側張開平行於肩膀,手掌心向前,此程序無參數設計,
為三角伸展式中所用到的動作程序。
圖 4.7 手部動作程序示意圖
2. 腳:腳的動作程序有 3 種,第一種程序是 Parallel_Open_Legs,使雙腳打開的站立動
作,參數是單腳張開的角度,如英雄式一、英雄式二、英雄式三中的動作關鍵格一,
雙腳呈現平行張開的姿勢,此程序的參數會同時適用於左腳和右腳張開的角度。第 Z 軸
X 軸
左:Rotate_Hands_by_X_axis
Y 軸
右:Rotate_Hands_by_Z_axis X 軸
Z 軸 Y 軸
‧
二種程序是 Rotate_Legs_by_Y_axis,為雙腳旋轉動作,已和腳平行的 Y 軸為軸心,
左旋或右旋,腳踝則是以和腳垂直的 X 軸為旋轉軸心,向上或向下移動,此程序的 參數分別為左腳旋轉角度、右腳旋轉角度、左腳踝旋轉角度和右腳踝旋轉角度,透 過這個程序可分別設定左腳和右腳不同的旋轉角度並調整腳踝的位置,腳踝的初始 站立位置將和腳關節形成直角,雙腳旋轉之後需要經過參數調整腳踝位置來表現出 踩在地面上的動作效果,如英雄式一中的關鍵格三,右腳向右旋轉 90 度,左腳向右 旋轉 45 度,就是使用此程序來完成。第三種程序是 Close_Legs,使雙腳合併的動作,
程序參數為雙腳合併的距離,指定雙腳合併時所需的距離後,此程序會計算出雙腳 的位置和骨盆的位置,來產生出此動作,在山式動作中會用到此程序。
3. 頭:頭的動作程序有 2 種,第一種程序是 Rotate_Head_by_X_axis,以 X 軸為中心旋
轉,也就是低頭和抬頭的動作,程序參數為抬頭或低頭的角度,在英雄式一和英雄 式三中都有使用此程序。第二種程序是 Rotate_Head_by_Y_axis,以 Y 軸為中心旋轉,
也就是左右轉頭的動作,程序參數為轉頭角度,在英雄式二和三角伸展式中有使用 到此程序。
4. 腰:腰部的動作程序有 2 種,第一種是 Rotate_Waist_by_X_axis,以 X 軸為中心旋轉,
也就是腰往前和往後的動作,程序參數為彎腰的角度,在英雄式三中有使用此程序 來做彎腰的動作。第二種是 Rotate_Waist_by_Z_axis,以 Z 軸為中心旋轉,也就是身 體面向前方做側身彎腰的動作,程序參數為側彎角度,此動作在三角伸展式中有使
‧
旋轉角度。第三種程序是 Sideways Lunge,動作為側身弓箭步,在英雄式二的關鍵 格五會使用到此動作程序,此動作和弓箭步不同的是身體並無轉向,身體和腳在同(a) Rotate_Hands_by_X_axis (b) Rotate_Hands_by_Z_axis (c) Droop_Hands
(d) Open_Arms
腳
(e) Parallel_open_Legs (f) Rotate_Legs_by_Y_axis (g) Close_Legs
頭
(h) Rotate_Head_by_X_axis (i) Rotate_Head_by_Y_axis 腰 (j) Rotate_Waist_by_X_axis
‧
(k) Rotate_Waist_by_Z_axis
全身動作
(l) Rotate_Hip_by_Y_axis (m) Lunge
(n) Sideways Lunge (o) Stand_on_one_Leg
表 4.1 為所有程序的分類整理,我們在同一個關鍵格中可以使用不同的動作程序來組
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
3 (b), (e), (f) 4 (b), (e), (f), (i)
英雄式三
1 (c), (e) 2 (c), (e), (f) 3 (c), (l) 4 (m) 5 (a), (m) 6 (a), (j), (m) 7 (a), (o) 8 (a), (h), (o)
三角伸展式
1 (c), (e) 2 (c), (e), (f) 3 (d), (e), (f) 4 (d), (e), (f), (k) 5 (d), (e), (f), (k), (i)