Touch Designer 直播挑戰 Vol.6|花海綻放實作(Replicator 進階技巧)

直播挑戰#6 課程筆記
MONOLAB|藝術 x 科技 x 教育

MONOLAB|藝術 x 科技 x 教育

2025年12月15日 上午 1:47

TD直播課程筆記

課程概覽

本集直播為 TouchDesigner 每週挑戰系列,講者分享個人創作歷程(從網頁互動、Creative Coding 到 TouchDesigner 沉浸式視覺),並展示近期每日創作作品,最後重點實作「花海綻放」效果。核心技巧為使用 Replicator 結合 CHOP 資料驅動,實現大量花朵的個別參數控制(位置、顏色、綻放程度、旋轉等),效能優於傳統 Instancing。

課程大綱 / Agenda

  1. 開場與個人創作分享(大學時代網頁直播 → NYU Creative Coding → TouchDesigner)
  2. 近期每日創作展示(Launchpad 粒子、蒲公英、磁場粒子、雲霧室模擬、仙女棒二次粒子)
  3. 今日實作主題:Replicator 驅動的花海綻放效果
  4. 步驟教學:從單朵花模板 → 大量複製 → 資料綁定 → 後期特效
  5. 課程推廣與結語

核心概念與理論

  • Replicator:用於大量重複產生 COMP(Base),適合需要個別參數差異的複製(優於 Instancing 的等比例限制)。
  • 資料驅動參數:使用 CHOP(Noise、Pattern 等)產生一包多通道資料,再透過 Python Callback 將每個 sample 綁定到對應複製體的參數。
  • 模組化思維:將常用設定(燈光、材質、後期)封裝成 Base,創作時重複利用可大幅提升效率。
  • 效能考量:使用「數字」模式 Replicator(而非 Table)僅在數量變動時重建,提升即時性。
  • 粒子與物理模擬延伸:本集雖聚焦花朵,但前半段展示粒子系統(Force、Noise、Feedback Loop)在視覺創作的強大應用。

示範案例

  • Launchpad Army:MIDI Launchpad 驅動粒子海膽
  • 蒲公英:聲音觸發粒子飄散 + Feedback Loop 控制受力
  • 磁場粒子 / 雲霧室模擬:向量物理計算產生螺旋軌跡(速度 × 磁場外積)
  • 仙女棒:粒子一次發射 + 死亡時二次分裂 + Leap Motion 手部追蹤控制
  • 花海綻放:50~100 朵花個別控制位置、顏色、綻放、旋轉,曾用於 MonoLab 演出

步驟教學(Step-by-Step)

1. 製作單朵花模板(Base)

  1. 使用 Circle SOP 畫中心圓(花心)。
  2. 另一 Circle SOP 作為花瓣原型 → Copy SOP 複製到第一個 Circle 的點上。
  3. Rotate to Vector 讓花瓣朝向徑向(位置向量)。
  4. Merge 花瓣 + 花心 → Geometry COMP。
  5. 加入 Constant CHOP 控制「Bloom」(綻放程度)→ 連接至花瓣 Circle 的 Translate X(配合 Anchor 達成由內向外綻放)。
  6. 轉成表面(Connectivity → Surface)方便上 PBR 材質。
  7. 加入 Noise SOP + Normal(可選折紙感)。
  8. 加入 PBR Material(Base Color 用 Ramp 漸層)。
  9. Collapse 成 Base 名為 template_flower

2. 準備控制資料(CHOP)

  1. Constant CHOP 集中所有全域控制(flower_count、scale 等)。
  2. Noise CHOP × 2(X、Y 位置)→ Samples 設為 flower_count。
  3. Noise CHOP(顏色 Seed)→ 單 sample。
  4. Pattern CHOP(Bloom 綻放序列)→ Length = flower_count。
  5. Merge 所有資料 → Null CHOP 名為 null_flowers(集中管理)。

3. 使用 Replicator 複製

  1. 放入 Replicator COMP。
  2. Master Operator → template_flower
  3. Active → 勾選 flower_count 通道。
  4. template_flower 的 Parameters → Custom 加入:
    • Position (float 2:X/Y)
    • Bloom (float 1)
    • Seed (float 1)
  5. 開啟 Replicator Callbacks → On Replicate 中寫 Python:
for i, c in enumerate(items):
    c.par.Position1.expr = f"op('null_flowers')['posx'][{i}]"
    c.par.Position2.expr = f"op('null_flowers')['posy'][{i}]"
    c.par.Bloom.expr = f"op('null_flowers')['bloom'][{i}]"
    c.par.Seed.expr = f"op('null_flowers')['seed'][0]"
  1. 按 Recreate All Operators(或綁 Keyboard In 快捷重置)。

4. 渲染與後期

  1. Render TOP → Geometry 填 *flower*/*(抓所有複製花朵)。
  2. 加入 Camera、Light、Environment Light(HDRI from Poly Haven)。
  3. Post-Process:
    • Edge + Blur + Add → 發光邊緣
    • Bloom TOP → 整體發光
    • Halftone(參考 BDM 教學)→ 網點印刷風
    • Chromatic Aberration → 彩虹光暈

5. 進階控制(可選)

  • 用 ABS Time 或 LFO 驅動 Pattern 的 Position → 自動輪流綻放。
  • 加入旋轉 Noise → 每朵花不同轉速。
  • 音樂訊號 → 控制 Bloom 或整體 Scale。

常見問題 & 解決方案

  • Replicator 不更新 → 按 Recreate All Operators,或檢查 Callback 是否拖入 Callback DAT。
  • Python 報錯 → 確認 null_flowers 路徑正確、通道名稱一致;可用 GPT 除錯。
  • 效能卡頓 → 使用數字模式 Replicator;避免過多 Noise SOP;將材質簡化。
  • 顏色不變化 → PBR Base Color 需設為白色才吃 Ramp;確認 Seed Noise 範圍足夠。
  • 花朵重疊 → 增加位置 Noise Amplitude 或 Frequency。

練習任務

  1. 完成基礎花海(30 朵花,可綻放)。
  2. 加入音樂反應(Audio Device In → 影響 Bloom 或 Scale)。
  3. 改變花瓣形狀(使用自訂 SOP 如 Heart、Star)。
  4. 嘗試 Halftone 或其他後期濾鏡,截圖分享。
  5. (進階)用 Leap Motion 或滑鼠控制其中一朵花的特殊參數。

總結

本集展示了 TouchDesigner 在「大量個別化物件控制」上的強大潛力。透過 Replicator + CHOP 資料綁定 + Python Callback,能以極高自由度與效能創造複雜動態視覺。講者強調模組化與每日創作的重要性:持續累積小模組,最終能快速組合出驚人作品。適合已具基礎的學員挑戰,結合課程可大幅降低學習門檻。期待大家實作後分享成果!