[TouchDesigner 教學] 傳送數值至 Unity

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

TouchDesigner 輸出數值

  1. 啟動 TouchDesigner,沿用預設範本。
  2. 在預設內容的 Noise 後面連接 Rename CHOP 與 OSC Out CHOP。

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

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

Unity 安裝 OSC Jack 套件

  1. 開啟 Unity 專案 (2021.3 以上版本)。
  2. 點擊 Edit 開啟 Project Settings。

  1. 切換到 Package Manager。
  2. 於 Scoped Registries 中註冊一個套件來源,屬性內容如下。
  1. 點擊 Save 儲存並關閉 Project Settings。

  1. 點擊 Window > Package Manager。

  1. 切換套件來源為 My Registries。
  2. 從列表中找到 OSC Jack,點擊 Install 進行安裝。

Unity 接收與顯示數值

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

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

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

  1. 建立空物件 GameManager,加入 OSC Jack 的 Event Receiver 腳本。
  2. 將 OscConnection 設定檔拖曳至 Connection 屬性。
  3. OSC Address 輸入「/a1」以接收 TouchDesigner 產生的 a1 數值。
  4. 修改 Data Type 為 String。
  5. 於 String Event 建立事件監聽,拖曳 Text (Legacy) 物件,並選擇 Dynamic string 內的 text。

執行測試

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

相關文章

Ted Liou

雲科碩士在讀中,專注於 Unity C#、TouchDesigner 技術,常把技術筆記分享到部落格,偶爾還直接挪用文章來當教材的研究生。