[TouchDesigner] 傳送數值至 Unity 教學

在這篇文章中,我們主要聚焦在 TouchDesigner 傳輸數值給 Unity 這一塊的技術。我們會先在 TouchDesigner 產生一個持續變化的數值,再通過 OSC CHOP,將數值以 UDP 方式傳輸至 Unity 中,最後用 Unity 的 UI 即時顯示接收到的資料。

TouchDesigner 輸出數值

啟動 TouchDesigner,沿用預設範本。

在預設內容的 Noise 後面連接 Rename CHOP 與 OSC Out CHOP。

點擊 Rename CHOP,調整 To 的參數為 a1,會把 Noise 產生的 chan1 重新命名為 a1。

點擊 OSC Out CHOP,將 Network Address 與 Network Port 屬性記錄下來,將用於 Unity 的接收設定。

Unity 安裝 OSC Jack 套件

開啟 Unity 專案 (2021.3 以上版本)。

點擊 Edit 開啟 Project Settings。

切換到 Package Manager。

於 Scoped Registries 中註冊一個套件來源,屬性內容如下。

點擊 Save 儲存並關閉 Project Settings。

點擊 Window > Package Manager。

切換套件來源為 My Registries。

從列表中找到 OSC Jack,點擊 Install 進行安裝。

Unity 接收與顯示數值

於 Canvas 中建立 Text (Legacy) 物件,調整文字顏色與大小讓它明顯一些。

在 Assets 資料夾上滑鼠右鍵 > Create > ScriptableObjects > OSC Jack > Connection,建立 OscConnection 設定檔。

選取 OscConnection,將 Port 改成先前於 TouchDesigner 紀錄的設定。

建立空物件 GameManager,加入 OSC Jack 的 Event Receiver 腳本。

將 OscConnection 設定檔拖曳至 Connection 屬性。

OSC Address 輸入「/a1」以接收 TouchDesigner 產生的 a1 數值。

修改 Data Type 為 String。

於 String Event 建立事件監聽,拖曳 Text (Legacy) 物件,並選擇 Dynamic string 內的 text。

執行測試

執行專案,TouchDesigner 產生的數值將能即時同步到 Unity 中。

相關文章

Ted Liou

雲科碩士在讀中,專注於 Unity C#、TouchDesigner 技術。
只要願意以超連結標註本文,歡迎轉載或用於教材製作!