2012年1月17日 星期二

2012年1月16日 星期一

k-object mouseover





這個物件可以用來做簡單的邊界偵測,第一個輸入孔為滑鼠現在位置,2、3 輸入孔為左上角的邊界坐標,4、5輸入孔為右下角邊界坐標。

如果滑鼠位於偵測範圍內,輸出1,反之輸出0。

File Download

2012年1月12日 星期四

Pd模擬P5的範例 「Chain」

這裡是chain在processing的寫法
http://processing.org/learning/topics/chain.html
在pd我是這樣做的






Flie download

動態中心的操作示意



因為自己久沒開作品都時,會忘了之前是怎麼操作的,所以這次特別連操作過程也錄下來。
一方面提醒自己,另一方面也跟大家分享我是如何用pd來演出的。

2012年1月10日 星期二

[筆記-52] [GEMglLineWidth]

先看這裡,[GEMLineWidth]同屬於opengl在GEM裡的物件,這物件可以用來控制vertex產生的線的寬度。

Pd模擬P5的範例「Esfera」

在processing官方範例中,有一隻程式運用到圓球表面位置的公式,
程式連結如下 它使用的公式為:


float z = random(-radio,radio);
float phi = random(TWO_PI); 
float theta = asin(z/radio);
float x = radio * cos(theta) * cos(phi);
float y = radio * cos(theta) * sin(phi);
float z = radio * sin(theta);

而我之前在pd計算圓球位置的公式為:
x = x0 + rsin(theta)*cos(phi)
y = y0 + rsin(theta)*sin(phi)
z = z0 + rcos(theta)
0<= phi<= 2pi
0<= theta<= pi


道理來說兩個公式都應該可以求的正確位置,只是我用pd跑第一隻公式,位置卻出不來
所以在pd裡製造Esfera的效果,我還是用我原本的式子。


上面影片是我用pd模擬esfera的效果,只是pd沒有processing noise()這個函數(pd的noise 是用來產生噪音),所以效果還是有差。(毛的轉動感覺)

File Download

2012年1月6日 星期五

2012年1月5日 星期四

[筆記-51] [init]



跟[loadbang]有異曲同工之妙的[init],可以讓你少建立一個message,就達到開機自動載入數值的效果。

P5 送訊號到 pd


1.首先到oscP5下載外掛
http://www.sojamo.de/libraries/oscP5/index.html

2.下載完後,解壓縮將oscP5 資料夾放入 processing 的libraries裡





3.重開processing,如果在example看到oscP5資料夾及代表安裝成功



4.以下是processing的程式碼。
(當滑鼠在畫布上移動時,滑鼠在畫布上的座標會送給pd)

import oscP5.*;
import netP5.*;

OscP5 oscP5;
NetAddress IP;
float x,y;

void setup() {
  size(400,400);
  frameRate(25);
  oscP5 = new OscP5(this,12000);
  IP = new NetAddress("127.0.0.1",12000);
}//p5跟pd要設定同一個port,這裡是設12000


void draw() {
  background(0);
  x=mouseX;
  y=mouseY;

}

void mouseDragged(){
  OscMessage x_osc = new OscMessage("/pos_x");//先設定接收參數名字
  x_osc.add(x);//在給訊號
  oscP5.send(x_osc, IP);//送出

  OscMessage y_osc = new OscMessage("/pos_y");
  y_osc.add(y);
  oscP5.send(y_osc, IP);
}


5.以下是pd程式碼(grid這物件需要先按右鍵打開屬性窗,設定座標最大最小值)



File Download