本日作品欣賞!
" Movements " | Tutting in 4k | Strobe
在 Day 8 探討 Tutting 動作的數位化可以透過 FK(正向運動學)與 IK(逆向運動學)兩種方式表達。
今天我們要深入探討 FK(正向運動學) —— 在 Tutting 舞蹈中,這是最基礎、也最常見的運動邏輯,舞者透過決定每個關節的角度,逐層推算出末端關節的位置並完成Tutting的造型。
正向運動學(Forward Kinematics, FK)是指:
在已知每個關節的角度(或長度變化)的情況下,依序計算末端位置與姿態的過程。
x_n = x_(n-1) + L_n * cos(θ_1 + θ_2 + ... + θ_n)
y_n = y_(n-1) + L_n * sin(θ_1 + θ_2 + ... + θ_n)
#L_n = 第 n 段骨架長度
#θ_n = 第 n 個關節的旋轉角度
使用正向運動學(FK)較貼近舞者的思維方式——舞者本來就是先想每個關節的角度,再觀察造型結果。
本節將探討:從現實舞者跳 Tutting → 數位化 FK 模型的轉換過程。
1.確認起始活動的關,例如:肩膀開始轉動,作為動作的基準點。
2.由內向外的控制順序,關節影響順序:肩 → 肘 → 手腕 → 指尖。
3.完成造型,當每個關節角度確定後,末端自然形成預期的線條或幾何圖案。
將這個舞蹈運動邏輯轉換為數位化 FK 運動學的方式:
舞者的實際行為 | FK 運動學對應 | 數位化參數 |
---|---|---|
固定或微調肩膀位置 | 設定根節點 座標 (x0, y0) |
起點座標 |
旋轉肩膀 | 第一段骨架旋轉角 θ1 |
角度(°或 rad) |
彎曲手肘 | 第二段骨架旋轉角 θ2 |
角度 |
翻轉手腕 | 第三段骨架旋轉角 θ3 |
角度 |
調整手臂比例 | 設定骨架長度 L1, L2, L3 |
單位長度 |
確定手尖位置 | 依序套用 FK 運算公式 | 即時計算結果 (xn, yn) |
//範例:
function updateArmPosition(joints, j1, j2, j3, j4, l1, l2, l3){
let Rad1 = angles["Angle1"];
joints[j2].x = joints[j1].x + l1 * Math.cos(Rad1);
joints[j2].y = joints[j1].y + l1 * Math.sin(Rad1);
let Rad2 = angles["Angle1"] + angles["Angle2"];
joints[j3].x = joints[j2].x + l2 * Math.cos(Rad2);
joints[j3].y = joints[j2].y + l2 * Math.sin(Rad2);
let Rad3 = angles["Angle1"] + angles["Angle2"] + angles["Angle3"];
joints[j4].x = joints[j3].x + l3 * Math.cos(Rad3);
joints[j4].y = joints[j3].y + l3 * Math.sin(Rad3);
}
正向運動學(FK)就像是舞者腦中的尺規——只要決定每個關節的角度,就能自然形成想要的造型。
在 Tutting 舞蹈的數位化過程中,FK 提供了簡單、精準且高效的方式去還原與生成姿態,是模擬器的核心基礎之一。
下一篇(Day 10)我們將探討Tutting模擬器第二個核心: 逆向運動學(IK),看看如何從末端位置反推整個骨架的姿態。