iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0
佛心分享-SideProject30

用 GenAI 創造虛擬 Tutting 舞者的 30 天冒險系列 第 18

Day 18 | Tutting 舞蹈律動數位化 — 提升舞蹈的靈魂

  • 分享至 

  • xImage
  •  

Day 18 | Tutting 舞蹈律動數位化 — 提升舞蹈的靈魂

文章開始先來欣賞一部作品吧!!!

NEW STYLE OF TUTTING: BOOMERANG

看完之後,大家會發現 Tutting 除了線條與角度,其實還有一種讓舞蹈活起來的 律動感。
這種律動,正是 Tutting 的「呼吸」與「心跳」。今天我們就來探討:如何把這份律動搬進數位世界?


接續 Day 17,今天我們來探討:Tutting 的律動如何被數位化?


數位化的方式

Tutting 模擬器將新增「律動模式」。
當使用者設計完成一段 Tutting 排舞後,可以選擇合適的「律動形式」,並調整參數(強度、頻率、隨機性),讓舞蹈更有生命力。

可選擇的律動形式

  • Bounce(彈跳)

    • 表現:身體或手部有上下或前後的小幅彈動。
    • 數位化:上下震動的正弦波。
  • Rock(搖擺)

    • 表現:身體或手臂小幅左右或前後搖擺。
    • 數位化:左右擺動的餘弦波。
  • Switch(切換/轉換)

    • 表現:角度或動作突然、快速切換,但保持節奏感。
    • 數位化:在特定時間點觸發,像節奏上的「切換點」。
  • Slide(滑動)

    • 表現:手臂或身體沿著某條路徑平滑移動。
    • 數位化:轉換成持續變化的路徑。

程式

class Groove {
  constructor(type, intensity, frequency) {
    this.type = type;       // Bounce, Rock, Switch, Slide
    this.intensity = intensity; // 律動幅度
    this.frequency = frequency; // 律動頻率
  }

  toDataFrame(time) {
    switch(this.type) {
      case "Bounce": return Math.sin(time * this.frequency) * this.intensity;
      case "Rock":   return Math.cos(time * this.frequency) * this.intensity;
      case "Switch": return (time % (1/this.frequency) < 0.05) ? this.intensity : 0;
      case "Slide":  return time * this.intensity;
    }
  }
}

// 模擬一個有 Bounce 與 Slide 的律動
let grooveList = [
  new Groove("Bounce", 0.8, 2),
  new Groove("Slide", 0.5, 0.5)
];

for (let t = 0; t <= 5; t += 0.5) {
  console.log("Time:", t, grooveList.map(g => g.toDataFrame(t)));
}

這段程式展示了如何把「律動」轉換成數值模型,讓每一個時間點都能輸出對應的律動數據,進而驅動動畫。


結論

數位化的Tutting不只是靜態的幾何,

當我們用數學公式去模擬 Bounce、Rock、Switch、Slide 時,也許會擔心舞蹈會變得僵硬、少了人味。
但正因為可以調整「強度、頻率、隨機性」,模擬器就能夠兼具規律性與自由度,讓舞蹈保有靈魂。


上一篇
Day 17 | Tutting x 律動探討
下一篇
Day 19 | 升級 Tutting 模擬器的腦 — 資料庫
系列文
用 GenAI 創造虛擬 Tutting 舞者的 30 天冒險29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言