2009年5月5日星期二

ipot touch 控制Geo (三)



先上图片(点击可100%显示)。
再简单介绍:
首先我们看到了3个窗口,1个gemwin,2个patches的窗口,一个是我们的play_Gem,另一个是OSCemote跟pd沟通的窗口,如果想链接touch 跟pd or max/msp, 我们需要有一个ipod touch端的app,可以是 TouchOSC (http://hexler.net/software/touchosc)或者OSCemote(http://lux.vu/blog/oscemote/),可以在itunes store 里购买,或者自己寻找其他特殊版本。

同时,注意pd的extra文件夹里需要有OSCX 库,2者都具备了才可以进行连接。

在图中,左下角的patch就是让touch 跟pd 建立最近比链接的patch,这个在OSCemote的官网里面就有下载。

然后再右侧,是Play_Gem的主patch,分为这样几个部分:
1,gemwin 创建
2,世界光源
3,一个立方体和一个球体
4,立方体和球体变化的控制运算

这里的原理非常简单,就是基于之前的patch,给立方体和球体分别贴视频和贴图。

在送出讯息从touch到pd时,首先我们需要知道laptop跟touch的ip,然后在OSCemote or TouchOSC 中设置好访问ip跟接入端口,并且在pd or max/msp端的patch中将检查端口是否一致。例如图中的3333

这里我只用到了OSCemote的2组参数,一个是button,另一个是acceleration, 我分别将这两组数据通过之前提到的[send somename],[ receive somename]物件来传送到play_Gem 的主patch中。

而在button 讯息中,touch 则送入了一组讯息,一个是告诉我们哪个按键(A/1,A/2...B/1,B2,...C3,C4...),另外则告诉我们案件是否被按下(0、1)。因此我们需要将这两个数据类型(symbol 与 float)分开,所以我们看到[r button]之后紧接着接入了[unpack s f](s=symbol,f=float).

只后,我们通过[select]物件进行判断。[select]物件就好象我们在其他编程软件中的if...else... 语句,在这里很简单,如果/A1按钮被触发,则讯息通过左边第一个出点送出。如果是/B1按钮被触发,则讯息通过中间的出点被送出,触发其他按钮的讯息则通过右出点送出。

基本就是这样了,就是这样很简单的东西可以出有趣的效果呵呵。


之所以在图中我调出了pd的控制台,因为我print了从touch中或许的数据,没做一次触发,pd都会在控制台上进行一些非法勾当呵呵

没有评论: