接触touchdesigner已经有一段时间了,虽然教程确实非常有限而且很难找到深入的主题,但好在和houdini同根同源很多思路都是可以直接套用的,学习过程目前还没遇到特别难理解的问题。
今天我来讲一讲最近尝试的一个交互实验,目的是想了解touchdesigner到底有多灵活,结果很明显它的能力和Houdini形同手足。如果说Houdini是一个城府很深,每一步都要深思熟虑的老大哥的话,Touchdesigner则有点像一个事事都急于表现,任何精彩的点子都藏不住的小弟。一个是用时间精雕细琢,一个则用魅力点亮舞台。
Touchdesigner的官方网站是:http://derivative.ca/
前几天Elburz Sorkhabi刚出了一本教程,我估计有些人可能打开不了链接,这里是在我博客的下载地址:
http://files.cnblogs.com/files/simonxia/Introduction_to_TouchDesigner.zip
言归正传,这是这次试验的效果:
简单讲一讲思路:
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即将出现的时代用好了的话一定能够大放异彩。