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

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

Jan 22, 2022
🧰 TouchDesigner 工具庫 | Luxmin Institute on Patreon
我們把接案與展場現場累積下來的 TouchDesigner 元件、專案檔與製作系統,整理發佈在 Patreon,部分工具與 Demo 免費開放下載。
https://www.patreon.com/cw/LuxminInstitute
⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑

我可以使用 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 (互動研究院) on Patreon
教學講的是觀念,工具則是我們在真實展場裡跑過、改過、確定能用的東西。TD 元件、專案檔、校正與製作流程都陸續發佈在 Patreon 上,免費層可以先看 Demo 與公開工具,付費層取得完整檔案與更新:
https://www.patreon.com/cw/LuxminInstitute
最新的活動動態與報名資訊:
https://www.threads.com/@luxmin.institute
 
如有相關專案或其他需求,請洽 luxmin.art