TouchDesigner 2D 碰撞偵測教學:高效圖像乘法法打造多目標互動系統

本篇教學介紹如何運用 Multiply (TOP) 與 Analyze (TOP),打造高效、無人數限制的 2D 碰撞偵測系統。適用於 LiDAR 投影互動、牆面/地板觸碰感測、手電筒追蹤等場景,完整圖像運算流程與進階精準度技巧一次解析。

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

⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑
這是一個非常實用的 2D 碰撞偵測方法,特別適合用於 LiDAR 感測與投影互動場景,例如牆面或地板觸碰。曾經在一個展覽中,我甚至運用觀眾手機的手電筒作為互動媒介,同樣能夠精準判斷是否接觸到投影物件。
這個方法最大的優勢是:
互動物件可以無限多個
目標圖像不限於固定位置,甚至可以是移動物件
全程基於圖像運算,效率極高,不受互動人數影響
 

實際範例畫面

當兩個圖形接觸,乘法結果會亮起,而 Analyze 提取出來的最大像素值會變為 1。

技術原理解析

這個方法的核心是運用 Multiply (TOP)Analyze (TOP) 來進行圖像層級的邏輯判斷。
  • Multiply (TOP):將互動感測來源與目標圖像進行乘法運算,當兩圖形重疊,會在該像素處產生非零值。
  • Analyze (TOP):設定為 Maximum Pixel,即會回傳圖像中最大像素值,作為「是否碰觸」的依據。
Blob Track 等傳統方式不同,此法純粹基於像素層級的計算,不需額外追蹤演算法,因此在高效能場景或多用戶互動中極具優勢。
 

操作步驟教學

第一步:準備圖像來源

  • 建立互動感測圖像(例如感測器輪廓、手電筒亮區)與目標圖像。
  • 不論是靜態或動態圖像都可以使用。

第二步:進行圖像乘法運算

  • 使用 Multiply (TOP) 將兩張圖重疊運算。當兩者有重疊區域時,結果圖像會出現亮點(值非零)。
notion image

第三步:提取碰觸資訊

  • 加入 Analyze (TOP),設定如下:
    • OperationMaximum Pixel
    • MaskRed(可選,用於只分析某個通道)
notion image

第四步:壓縮成單一像素(可選最佳化)

  • 加入 Resolution (TOP),設定解析度為 1×1:
    • Output Resolution → Custom Resolution
    • Resolution1, 1
    • 這樣能讓輸出變成單一像素,方便後續轉為 CHOP 數值使用。
notion image

第五步:轉換為 CHOP 值

  • 使用 Top to (CHOP) 將結果圖像轉為數值資料。
  • 再加上 Math (CHOP),設定:
    • Combine ChannelsAverage
notion image
 

進階技巧:提升精準度

你可能會發現,當圖像只微微接觸時,分析出來的值會是介於 0~1 之間的 Float。這是因為像素邊緣可能有透明或灰階值存在。
以下是幾種常見處理方式:
  • 使用 Math (CHOP) 的四捨五入、無條件進位功能。
  • 使用 Logic (CHOP),只要值不為 0,輸出就為 1,是我最常用的方式。
  • 你也可以依照實際需求,自訂不同的閾值判斷條件。
 
 

總結

這個碰撞偵測技巧雖然簡單,卻非常強大與高效,非常適合應用在:
  • 感測互動地板 / 牆面
  • 手電筒或雷射筆互動追蹤
  • 即時多目標碰撞感知系統
 
我也曾經應用這個做法在手電筒的互動作品上:https://luxmin.art/shadow-trophy-wall/
Video preview
 
試著動手操作一次,並嘗試更多變化方式,會有不少驚喜發現!
 
⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑⭑
Luxmin Institute 互動研究院 策劃了一系列關於互動體驗技術、科技藝術與多媒體整合為核心的主題課程、工作坊、社群、聚會,以及 TXRX 互動體驗大會
關注我們最新的活動動態與報名資訊:https://www.threads.com/@luxmin.institute