[TouchDesigner] 多部影片自動接續播放

收到學長來信,有一需求是要在 TouchDesigner 中,讓 3 部影片分別在播放結束時會切換到下一部,並且在 3 部都播完時自動重新從第一部開始重播。在這個案例中,我們主要會用到 Movie FIle In、Info、Switch 與 CHOP Execute 這 4 個節點,同時需要寫一些 Python 程式來快速實作。

節點總覽

需求是讓 3 部影片自動切換,所以我們需要:

節點名稱數量說明
Movie File In (TOP)3輸入 3 部要播放的影片
Info (CHOP)3提取 Movie File In 的節點資訊
Switch (TOP)1切換要播放的 Movie File In 節點
CHOP Execute (DAT)1用 Python 控制 Switch 的索引

3 個 Movie File In 需連接到各自的 Info 與 Switch,Info 與 CHOP Execute 的實作細節在後面將會說明。

image.png

控制 Movie File In 的播放狀態

Movie File In 除了要播放的影音檔與 Play 參數之外,其它的設定都可以保持預設不動。現在我們要用 Python 來控制 Play 參數的開關 (On/Off),使用最簡單的 == 判斷來實作。

選擇第 1 個影片,展開 Play 參數,將參數型態改成淺藍色 (仔細觀察下圖的輸入欄位左邊),並輸入:

1op('switch1').par.index == 0

後兩個影片的 Play 參數也是用同樣的操作,但 == 後的數字要加 1。

第 2 個要輸入:

1op('switch1').par.index == 1

第 3 個:

1op('switch1').par.index == 2

前面我們建立的 Switch 的名字為「switch1」,所以上面的程式碼是呼叫 op('switch1'),請依你的狀況來修改。

image.png

image.png

image.png

剛才實作功能是讓 Movie File In 的 Play 參數只會在 Switch 是指定的索引 (0、1、2) 的時候才會變成 On。同時,因為 Movie File In 預設會自動重播影片,所以接下來我們要讓它在影片播放完後自動把 Switch 加 1,讓 Play 變成 Off,直到 Play 變回 On 時才會從頭播。

取得影片播放完成的訊號

Info 可以取得 Movie File In 的節點狀態,影片播放完成的那一瞬間 (最後一幀) 會讓 last_frame 變成 1,我們要在它變成 1 的時候改變 Switch 的索引,讓影片的 Play 變成 Off,影片才會停止。同時,Switch 切換到的影片的 Play 會變成 On,影片將播放。

需設定 Info 的 Scope,輸入 last_frame,讓它只會顯示這個狀態。

2025033172-VplKvTIRlD.png

3 個 Info 對應 3 個 Movie File In,完成設定後,最後將要來撰寫 Python 程式,偵測 last_frame 從 0 變成 1 的瞬間來改變 Switch。

當 Info 變成 1 時控制 Switch

在 CHOP Execute 的 CHOPs 中輸入 3 個 Info 的名稱,中間用空白來分隔,並將 Off to On 改成 On,只監聽 Info (last_frame) 從 0 變成 1 的事件。

CHOP Execute 預設會有一些 Python 語法,我們只會用到 onOffToOn,其他可以刪掉。我們要在 onOffToOn 被觸發時將 Switch 的索引 (index) 增加 1,並且當索引達到 Switch 連接的最大值時自動歸零。Python 程式碼:

1def onOffToOn(channel, sampleIndex, val, prev):
2    sw = op('switch1')
3    sw.par.index += 1
4    if sw.par.index >= len(sw.inputs):
5        sw.par.index = 0
6    return

image.png

實作結果

先隨意調整一下 Switch 的索引,再歸零索引,讓它觸發影片播放,最後結果如下:

參考資料

技術文件

網路論壇


本文提供所有使用到的影片素材 (來源:Pexels) 與 TouchDesigner 專案:下載連結 (GitHub)

相關文章

Ted Liou

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