TouchDesigner 跨 Operator 呼叫 Function 教學:使用 mod() 呼叫 Text (DAT) Function

了解如何在 TouchDesigner 中透過 mod() 函數跨運算元呼叫 Text (DAT) 中自定義的 Function,解決 op() 無法存取內部 Function 的限制。適合建立模組化與可重用的互動邏輯。

Jan 22, 2022
我們開課囉!
本月開設新課程 TD102 | TouchDesigner 102 - TOP 圖像處理與混合模式 以及 ISC-01 | 互動感知工作坊 - 光達、深度、體感與紅外線,歡迎報名參加~

⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑

我可以使用 op() 來取得目標 Function 嗎?

在 TouchDesigner 中,我們經常使用 op() 來取得單一 Operator,以讀取其值或進行修改。
那麼,如果我在一個 Text DAT 中撰寫了一個 Function,並希望從其他 Operator 中呼叫它,我可以使用 op() 來取得目標 Function 嗎?
-
-
答案是:不行。
您無法使用 op() 來取得內部的函數。
-

解決方案是使用 mod()

mod() 會將目標運算元作為模組來使用。
根據官方文件的說明:
MOD Class 提供對按需模組(Module On Demand)物件的存取,允許將 DAT 動態地匯入為模組。它可以透過自動匯入的 td 模組中的 mod 物件來存取。或者,也可以使用一般的 Python 陳述式 import。然而,import 陳述式僅限於搜尋路徑中的模組,而 mod 格式允許在一行中完成完整的陳述式,這對於輸入表達式更為實用。
好吧,這有點多。
讓我們透過一個例子來說明,這樣會更容易理解:
mod('DAT 名稱').函數名稱()
建立一個名為 text1 的 Text (DAT),並在其中撰寫一個 Function 來列印「Happy Programming」。
然後,建立另一個 Text DAT,僅需撰寫使用 mod() 的腳本。
當我執行 text2 的腳本時,您會在 Textport 對話框中看到它列印出來。
notion image
就是這樣。您只需在 text2 中使用腳本來呼叫 text1 中的 Function。
我真的認為這是一個非常實用的知識,希望在我剛開始學習 TD 時就知道它。
 
Refer:
 
⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑
Luxmin Institute 互動研究院 策劃了一系列關於互動體驗技術、科技藝術與多媒體整合為核心的主題課程、工作坊、社群、聚會,以及 TXRX 互動體驗大會
關注我們最新的活動動態與報名資訊:https://www.threads.com/@luxmin.institute