Bonus:多媒體互動展演技術規劃:HDMI 傳輸距離、佈線與電力計算實戰|IVD487 W18
一場互動展演在現場能不能順跑,關鍵不在軟體,而在基礎設施。這篇以體感作品「地面鬥技場」為範例,一層一層把技術規劃圖填滿:USB 線材與速度、顯示三大類、投影機規格、HDMI 傳輸距離解法、影像分配、音訊 PA、網路協定、電力計算、佈線與遠端監控。附多張對照表與章節時間戳,規劃前掃一遍就能跟廠商對得上話。
想用 TouchDesigner 做即時手勢辨識?這篇整理互動控制第三堂的兩條路線:OpenCV 的 Blob Track 色塊追蹤(Resolution 降解析度、Edge 保輪廓、DAT to CHOP 轉資料),以及 Google MediaPipe 的 AI 辨識——手勢魔法方塊與 Face AR 濾鏡。附 Blob Track vs MediaPipe 對照表、DAT to CHOP 設定步驟與章節時間戳,上完課回來掃一遍就能接回來。

Resolution (TOP) 與 Edge (TOP)DAT to CHOP 的三個關鍵設定
家族 | 節點 | 這週的用途 |
TOP | Movie File In/Resolution/Edge/Noise/Blob Track/Over/Render/Switch/Video Device In/Body Track/Face Track | 影像輸入、前處理、色塊追蹤、渲染、疊圖、切換 |
CHOP | Blob Track/DAT to CHOP/Select/Null/Math/Count | 把追蹤表格轉成 channel、選值、運算、累加 |
SOP | Rectangle | 要被 instance 複製的方框幾何 |
COMP | Geometry/Camera | 3D 容器與鏡頭(改 orthographic) |
MAT | Line | 讓方框以線框呈現的材質 |
.tox 元件 | MediaPipe | Google AI 辨識(手/臉/姿勢/分割) |
OpenCV 是一套開源的電腦視覺函式庫(由 Intel 在 2000 年釋出),GitHub 上就找得到,常用來做辨識、分割、臉部偵測。TouchDesigner 只整合了其中少數效果,最常用的就是 Blob Track——它在 TOP 與 CHOP 兩個家族都有,TOP 版最直接。Blob Track (TOP),它下方會多出兩個 DAT 表格,記錄追蹤到的每個色塊:uv(等同 x/y)、width、height、ID,以及 lost/active/expired 狀態。它追的是「色塊(blob)」,所以:Noise (TOP) 造隨機圖來試最清楚——整張圖縮小,相近色塊變多,blob 數量就跟著變多。Blob Track 是完全基於 pixel 運算的,影片一大(例如 1920×1080)就會超級慢。標準前處理是兩步:Resolution (TOP) 把 output resolution 降到約 1/8——畫面變糊,但對色塊辨識幾乎不影響,跑起來順很多。Edge (TOP) 做邊緣預處理,只保留想要的輪廓、去掉多餘的顏色雜訊,讓 blob 更乾淨。⚠️ 順序別接反:Resolution → Edge → Blob Track。先降解析度、再抽邊緣,最後才丟進追蹤。
💡 大影片先加 Resolution: Blob Track 吃 pixel,原始大檔直接跑會卡到不行。養成習慣:追蹤前先Resolution (TOP)降到 1/8。
⚠️ Blob Track 只追到兩個點? 舊版 TD 的非商業版本 blob tracker 最多只有兩個追蹤點;近期版本已移除這個限制,追蹤數量無上限。回去記得把 TD 更新到最新版(右上角綠色 update 會帶你到官網)。
Blob Track 給的是一張 DAT 表格,要拿去渲染得先轉成 channel。用 DAT to CHOP,但預設會把「每個橫排(row)」當成一個 channel,這不是我們要的——我們要的是「每個直行(column)」各自是一個 channel(id、u、v、width、height…),才能把 channel 餵給 instance。設定項 | 改成 | 為什麼 |
Channel per Rows | Channel per Column | 讓每個直行(column)各自成為一個 channel,而非每個橫排 |
第一個 Row | name | 最上面那排當 channel 名稱(id/u/v/width/height…) |
第一個 Column | value | 指定哪一行的數值當 channel 的實際值 |
Select (CHOP) 取需要的資料就好——例如選 u 跟 v 當待會 Rectangle (SOP) 的 x/y 值。📺 影片段落:14:03Rectangle (SOP) → Geometry (COMP) → Camera (COMP) → Render (TOP)。Line (MAT)(賦予到 Geometry 的 material),讓方形以線框呈現。Geometry 打開 instance,把前面的 Null (CHOP)(資料鏈的最後一個節點)拖進來,u 給 x、v 給 y——框框就會跟著追蹤點動。Camera (COMP) 是 perspective(透視),會因距離改變物件大小;但追蹤資料是平面的,改成 orthographic(正投影,不論遠近同尺寸就同大小),並把對位點設 bottom left、scale 設 1,坐標才會貼近原本影像的辨識座標。Over (TOP) 疊回來(記得把渲染框調到上層),再用 Math (CHOP) 微調 u/v,讓左邊畫的框對齊右邊辨識的框。剩下的就是慢慢校位的例行細節。(線條版本同理,只是改用選取 line 的資料去連點成線。)Body Track (TOP) 與 Face Track (TOP),把 Video Device In (TOP) 接進去就能用;但 Mac 沒有 Nvidia,跑不了這兩個節點,所以改走跨平臺的 MediaPipe。MediaPipe 是 Google 開發的開源 AI 辨識庫,最大優勢是跨平臺——Windows、Mac、手機、甚至網頁都能跑,內建臉部 mesh、手勢、手部關節、身體骨架、圖像分割(segmentation)等多種辨識。本課用的是社群大神 Torin 做的 TD 整合套件(GitHub 搜 mediapipe touchdesigner 即可),把對應辨識點一點就自動接好。ㅤ | Blob Track | MediaPipe |
原理 | 基於 pixel 的色塊(blob)追蹤 | Google 開源 AI 辨識模型 |
追蹤對象 | 任意色塊/輪廓,不認得「那是什麼」 | 臉、手、姿勢、手勢、分割等具語意的對象 |
前處理 | 需 Resolution 降解析度+Edge,否則吃效能 | 載入 .tox 即用,點對應辨識自動接好 |
平臺 | 通用 | 跨平臺(Win/Mac/手機/網頁),Mac 也能跑 |
適用情境 | Lidar 人流追蹤、社群感的框線視覺 | 手勢控制、AR 濾鏡、骨架互動 |
⚠️ MediaPipe.tox 要第一個 download: 核心MediaPipe的 .tox 檔很大,存進專案容易 crash,所以老師把它移除、要用時再從 media pipe/toxes 資料夾把它拉進來,且它一定要排在最前面、後面配套的 1~9 個檔都要有。刪節點時先按 xx 再 delete 比較安全。
MediaPipe 的紫色 output 拉進來、點 detect hands,就能拿到兩隻手的資料。這個方塊做三件事(注意:h1/h2 沒有左右手之分,看誰先被辨識到):Math (CHOP) 算兩手 x/y/z 的平均值(=兩手中點),分配給 x/y/z。兩手等距左右張開時中心幾乎不動。hand distance(雙手距離)當 scale,並加一個條件——兩手都 active 才觸發,否則 scale 給 0(方塊完全看不到)。Math (CHOP) map 到適合畫面的範圍(例如 translate 到 -3.5~3.5、scale 到 0.5~3.5,都是試出來的經驗值)。整體比 Blob Track 更簡單:知道想要的效果需要哪個資料點,再做數學轉換就好。💡 「兩手都被辨識到才給值、否則歸零」本質就是條件運算——想把這種判斷寫得更漂亮,可參考 TouchDesigner Python 條件運算/三元表達式。想做多人時,調高max number of hands理論上就能多人互動(實際支援程度請自行查證)。
Count (CHOP) 累加 → 在 0~3 循環 → 控制 Switch (TOP) 切換貓臉/墨鏡/帽子/天線寶寶等貼圖。Math (CHOP) 各自微調偏移即可。本質上就是「用方塊追蹤臉,再把貼圖對到方塊上」。提醒:貼圖有時會追不完整(例如環繞整臉的效果),這屬正常現象,回去多調位置與 scale 就好。「單手 I love you」手勢老師當場沒比出來——有比出來的同學歡迎回報。
Resolution (TOP) 降到約 1/8,再接 Edge (TOP),順序是 Resolution → Edge → Blob Track。DAT to CHOP 出來的 channel 不對,全擠成一排?MediaPipe 的 .tox 檔很大容易 crash,一定要第一個 download 並排在最前面、配套檔也都要;刪節點先按 xx 再 delete 比較安全。Movie File In (TOP) → Resolution → Edge → Blob Track → DAT to CHOP → Select,再用 Rectangle (SOP)+Geometry (COMP)+Render (TOP)+Line (MAT) 的 instance 畫出會動的追蹤框,Camera 改 orthographic 對位。MediaPipe detect hands,用 translate(兩手中點)、scale(hand distance,兩手 active 才觸發)、rotation(兩手平均)三組資料控制一個方塊。Count (CHOP) → Switch (TOP) 切換貼圖。換成自己的貼圖對位試試。max number of hands 試多人辨識。時間 | 內容 |
OpenCV 是什麼:開源電腦視覺函式庫 | |
TD 只整合少數效果,最常用 Blob Track(TOP/CHOP) | |
Blob Track 下方兩個 DAT:uv/width/height/ID | |
用 Noise 測 min/max blob size | |
lost/active/expired:被遮住能追回、ID 不變 | |
加 Resolution 降到 1/8,Blob Track 才順 | |
更新最新版:移除兩點追蹤限制 | |
加 Edge 做預處理,保留想要的輪廓 | |
DAT to CHOP:Channel per Column+name/value | |
Rectangle→Geometry→Render+Line 材質做框 | |
Camera 改 orthographic、對位 bottom left | |
width/height 給 scale,Over 疊回原圖校位 | |
Body/Face Track 需 Windows+Nvidia,Mac 走 MediaPipe | |
MediaPipe 介紹+Torin 的 TD 整合套件 | |
手勢魔法方塊:拉 MediaPipe、detect hands | |
translate 取兩手中點、scale 取 hand distance、rotation 取平均 | |
Face AR:手勢 → Count → Switch 切換貼圖 | |
鼻子定位 x/y、左右耳距離當深度 scale |