TouchDesigner 隨機數值技巧|用 tdu.rand() 生成高效輕量隨機值

學會在 TouchDesigner 中用 tdu.rand() 生成隨機數值!用 absTime.frame 持續更新隨機種子,或用物件路徑生成可重現隨機值,簡單快速又省資源,適合大量隨機參數控制需求。

Jun 29, 2025
💡
最近我們新開了一個 Line TouchDesigner 討論群組,歡迎大家加入一起討論與進步!
https://line.me/ti/g2/5IkAcg_6dF_CbR0oChIRWVoTRWQdSEHEVmcjtw
 
我們開課囉!本月開設新課程 TD103 & DCI-01,歡迎報名參加~

⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑
在 TouchDesigner 裡,要生成隨機數值有很多種方式,例如使用 Noise (CHOP)Pattern (CHOP),但其實也可以直接用 表達式(Expression) 寫 script,快速達成隨機效果。
以下這個寫法非常常用:
tdu.rand(absTime.frame + 0.1)

notion image

深入解析

  • tdu:TouchDesigner 內建的 Python 函式庫,提供許多實用工具。
  • rand():隨機函式,輸入 Seed 回傳對應的隨機值。
  • absTime.frame:顯示程式啟動後累積的幀數,持續增加,因此每一幀都會生成新的隨機種子。
  • +0.1:可以自由加上任何值,用於改變 Seed,產生不同的隨機值。
為什麼要用 absTime.frame 呢?因為這個值會不斷變動,就能讓隨機值持續更新。如果你放入一個固定數字,則只會生成一個固定的隨機值,不會隨時間改變。

實用技巧

其實 tdu.rand() 還有一個很好玩的用法:可以放入物件路徑或運算元參照,例如:
tdu.rand(me) tdu.rand(op('null1'))
這時候,它會根據你給的物件路徑,生成一個唯一且固定的隨機值。也就是說,只要物件路徑相同,哪怕你重啟 TD,這個隨機值也會維持不變,這點在需要為多個物件配置不同但可重現的隨機屬性時特別好用。
過去我通常會用 Noise (CHOP) 來生成隨機值,然後用 Export 的方式送到其他參數使用。不過相比之下,這種直接用表達式的方式更簡潔,雖然不如 Noise (CHOP) 那麼可控,但如果在專案裡需要大量隨機值時,減少 CHOP 使用也能有效提升專案效能。

總結

tdu.rand() 表達式生成隨機數值:
  • 簡單快速:幾行程式碼就搞定
  • 效能輕量:不用新增 CHOP
  • 靈活使用:根據時間或路徑自訂生成方式
下次想要快速做隨機控制,不妨試試這個方法!
 
⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑
Luxmin Institute 互動研究院 策劃了一系列關於互動體驗技術、科技藝術與多媒體整合為核心的主題課程、工作坊、社群、聚會,以及 TXRX 互動體驗大會
關注我們最新的活動動態與報名資訊:https://www.threads.com/@luxmin.institute