接觸touchdesigner已經有一段時間了,雖然教程確實非常有限而且很難找到深入的主題,但好在和houdini同根同源很多思路都是可以直接套用的,學習過程目前還沒遇到特別難理解的問題。
今天我來講一講最近嘗試的一個交互實驗,目的是想了解touchdesigner到底有多靈活,結果很明顯它的能力和Houdini形同手足。如果說Houdini是一個城府很深,每一步都要深思熟慮的老大哥的話,Touchdesigner則有點像一個事事都急於表現,任何精彩的點子都藏不住的小弟。一個是用時間精雕細琢,一個則用魅力點亮舞台。
Touchdesigner的官方網站是:http://derivative.ca/
前幾天Elburz Sorkhabi剛出了一本教程,我估計有些人可能打開不了鏈接,這里是在我博客的下載地址。
言歸正傳,這是這次試驗的效果:
簡單講一講思路:
1: 在houdini中生成等高面
關於houdini里面地形的生成是比較簡單的,你可以用程序的方法也可以用深度貼圖來實現,這里不做太多贅述。srtm.csi.cgiar.org是通過經緯度來定位並找到當地地貌高度圖的網站,很全但是精度不高,拿來玩也完全夠用的。
在做好地貌高度之后再就是進行切片了,常規思路是用該地形與一塊grid進行cookie來取得需要的切片,但是問題是非常不穩定,尤其是切片邊緣復雜的時候這個方法基本上是用不了的。在放棄這個方法之后,嘗試了使用體積切片來處理,這個方法十分穩定但是處理起來比較慢,好在Houdini永遠不用處理實時的問題,慢點就慢點,忍了。下面是切片過程:
最后將這個過程放到foreach里面就能形成不同高度的等高切面了。
2:Touchdesigner 連接 leapmotion
touchdesigner在最新的版本中其實已經將已經做好了非常多的硬件接口,包括kinect 1/2, Oculus, Leapmotion, Midi, OSC 等等。所以連接leapmotion也就變成了一個非常簡單甚至傻瓜的事情。leapmotion的SDK如果裝好了的話,只要將它連接上電腦,在TD里面創建一個leapmotion節點,這樣所有的准備工作就算是做完了。
關於leapmotion的跟蹤數據,官方網站上也有很詳細的介紹,我在TD里面只讀取了部分數據:
3:Touchdesigner 載入 Houdini 生成的模型並用體感數據來做簡單的交互
Touchdesinger官方網站說Geometry COMP是可以讀取.fbx .obj .3ds .dxf .dae這幾種文件,但我一直沒有找到讀取的方法,另一個讀取幾何體的方法是用File In SOP可以讀取Houdini的.geo .bgeo文件,可能是我的版本是免費版,這個讀取權限我也沒有,好在TD還能讀取bhclassic文件,目前為止我只看到sidefx家族里面有用這個文件類型,這也是不幸中的萬幸吧。下面是TD中的數據處理流程:
綠色的部分是處理leapmotion傳進來的數據,藍色的部分是導入進來的幾何體模型,粉色部分則是最后的攝像機燈光設置並渲染出來。
整個過程都沒有什么特別大的技術挑戰。以前頭痛的接口設置,跨平台管理這些問題都已經為我們鋪平了道路,留給我們的唯一問題就是想象力和邏輯處理。回到最開始講的那些,Houdini能夠非常優秀的處理程序動畫和建模,但是出來的作品永遠只能呈現在熒幕上,看一遍就算一遍,而TD好像正好是開發者看到Houdini的局限所設計的一款專為實時交互應用而開發的平台,同樣是程序化的思維,但是這次直接能把非常絢麗的效果(只要你能想到)與人產生交互。這兩個軟件好比左右手,在Hololens即將出現的時代用好了的話一定能夠大放異彩。