hirokazuk さんのアバター

投稿者: hirokazuk

Processing 2.0 beta 8 がリリースされました

2013年2月25日 (Processingニュース)

2月25日 Processingの新しいバージョンである 2.0 beta 8 がリリースされました。
Download \ Processing.org
今回は、特に注目すべきポイントについてご紹介します。

  • Retinaディスプレイがサポートされ、パフォーマンスが改善されています。
  • その他複数のバグが修正されています。
新たな関数clear()及びrandomGaussian()が追加されています。
それらの関数を使ったサンプルがこちら
final int RATIO = 10;
float x, y;
PGraphics g1, g2;
int SIDE=200;
int WIDTH=SIDE*2, HEIGHT=SIDE;

void setup() {
  frameRate(1000);
  clear();//more than 2.0b8 (If less than 2.0b7 background(0, 0, 0, 0))
  size(WIDTH, HEIGHT);
  stroke(255);

  g1 = createGraphics(SIDE, SIDE);
  g1.beginDraw();
  g1.clear();//more than 2.0b8 (If less than 2.0b7 background(0, 0, 0, 0))
  g1.stroke(255);
  g1.endDraw();

  g2 = createGraphics(SIDE, SIDE);
  g2.beginDraw();
  g2.clear();//more than 2.0b8 (If less than 2.0b7 background(0, 0, 0, 0))
  g2.stroke(255);
  g2.endDraw();
}
void draw() {
  g1.beginDraw();
  x =g1.width/2+ random(-1, 1)*RATIO;
  y =g1.height/2+ random(-1, 1)*RATIO;
  g1.point(x, y);
  g1.endDraw();
  image(g1, 0, 0);

  g2.beginDraw();
  x =g2.width/2+ randomGaussian()*RATIO;//more than 2.0b8
  y =g2.height/2+ randomGaussian()*RATIO;//more than 2.0b8
  g2.point(x, y);
  g2.endDraw();
  image(g2, width/2, 0);

  line(width/2, 0, width/2, height);
}


clear()はbackground(0, 0, 0, 0)と同じです。
randomGaussian()は平均 0.0、標準偏差 1.0 のガウス(正規)分布の、擬似乱数値を求めます。

正規分布 – Wikipedia

PGraphicsを使って少々コードが読みにくいかもしれないので、簡易版を載せます。
final int RATIO = 10;
float x, y;

void setup() {
  clear();//more than 2.0b8 (If less than 2.0b7 background(0, 0, 0, 0))
  size(200, 200);
  stroke(255);
  frameRate(1000);
}
void draw() {

  //randomGaussian() version
  x =width/2+ randomGaussian()*RATIO;//more than 2.0b8
  y =height/2+ randomGaussian()*RATIO;//more than 2.0b8

  ////random() version
  // x =width/2+ random(-1,1)*RATIO;
  // y =height/2+ random(-1,1)*RATIO;

  point(x, y);
}

サイト管理者 さんのアバター

投稿者: サイト管理者

ジェネラティブ・アート発売!

2012年12月21日 (ProcessingJP)

※本記事には、記事末にプレゼント企画があります!

ジェネラティブ・アートが発売されました!

株式会社ビー・エヌ・エヌ新社様より
「ジェネラティブ・アート Processingによる実践ガイド」
ISBN:978-4-86100-856-6
定価:2,520円(本体 2,400円+税)
仕様:B5判変型/248ページ/※本書と同内容のPDFデータをダウンロードできます
発売予定日:2012年12月21日
著者:マット・ピアソン
翻訳:沖 啓介
監訳:久保田 晃弘

 

 

 

 

 

 

 

が本日発売されます。

私は原著
「Generative Art: a practical guide using Processing」
の方は既に読んでいたのですが、日本語版を手にとった時、その表紙の美しさに驚かされました。

この本のありがたいところはPDFも付いてくるというところですね、本の内容が全て収録されています。
お手持ちの タブレット端末で、Androidで、iPhoneで、iPadで、iPad miniで
どこでも持ち運んで読むことができるのです、すばらしい!!
また、原著と違い、中身が全てカラーになっている点も嬉しい限りです。

本のサブタイトルに”Processingによる”とありますが、
「Processingでなければ作ることができない」「Processing用の書籍」
というわけではありません。(作中でも触れられています)

しかし、お手軽にこのようなアート作品を作ることができることは、Processingの最大の特徴と言えるでしょう。

 

Processingとジェネラティブアートの親和性

さて、Processingとジェネラティブアートにはとても親和性があります。

例えば、C/C++でアート作品を作ろうとした場合、描画ライブラリのインポートやキャンバス情報の設定をするだけで、大量のコードを記述しなければなりません。

しかしながら、皆さんご存知の通り、Processingでは
size(width,height)・・・「キャンバスを表示して」
line(x1,y1,x2,y2)・・・「線を一本引く」
これだけで済むのです。

ここで重要なことは「与えたい振る舞い(命令)に対して、そのコード(関数)が1:1(又は1に近い)で対応する。」ということです。
1振る舞いに対してのシンタクス(関数などのコード量)が少ないほど、
ビジュアルデザインに近いプログラミング言語と言えると思います。
Processingが持っているこの様な特性が、表現やアルゴリズムをシームレスにコードへ落としこむことへ、一役買っているのだと思います。

現在進行中の「Processing Advent Calendar 2012年」ここ数日の @p5info の作品は「ジェネラティブアート」を意識して作らせていただきました。
なお、原著者のProcessing作品は AbandonedArt.org にもたくさんありますので、覗いてみてはいかがでしょうか?

 

プレゼント企画

私は日本語版のジェネラティブ・アートを予め読ませていただいたのですが、改めてジェネラティブアートの良さと楽しさを発見することができました。
皆さんもジェネラティブアートに挑戦してみたくなってきませんか?

実はこの度、この素晴らしい「ジェネラティブ・アート Processingによる実践ガイド」を、
株式会社ビー・エヌ・エヌ新社様のご協力により、2名様にプレゼントしていただけることになりました!そこで、抽選を実施いたします!

応募方法は、ご自身のTwitterのアカウントを使い、ハッシュタグ「#BNN_GenerativeArt」を付けて呟いてください。

2012年12月24日までのつぶやきが有効です。
抽選、当選者への連絡、発送は株式会社ビー・エヌ・エヌ新社様より行われます。
皆様のつぶやき、お待ちしております。

サイト管理者 さんのアバター

投稿者: サイト管理者

Processing 2.0 beta 7 がリリースされました

2012年12月9日 (Processingニュース)

Processing Advent Calendar 2012 12月9日企画

12月7日、Processingの新しいバージョンである 2.0 beta 7 がリリースされました。
今回は、特に注目すべきポイントについてご紹介します。

今回のバージョンから、新たに「EXPERIMENTAL」モードが追加されました。
このモードには、コード上のエラーをリアルタイムに通知してくれる機能や、
ブレークポイントを指定してデバッグできる機能など、
スケッチ制作を強力にサポートしてくれる機能が搭載されています。



エラー箇所を波線で通知してくれたり、コンソール部にエラーの種類や場所を示してくれるようになりました。
複数箇所のエラーもまとめて通知してくれるので、実行と修正を何度も繰り返す手間を省いてくれます。
また、インスペクタでの変数修正にも対応し、ますます使いやすくなりました。
なお、OSによっては動作が異なるものもあるようです。

また、コードのハイライターも変更され、
鮮やかなハイライターでのコーディングが可能となりました。
上の画像でも、「hight」の文字色がピンク色になっているなど、
変更点が見られます。
EXPERIMENTALモードとあわせて、スケッチ制作がさらに快適になりそうです。

さらに、弧を描くための関数「arc」に、弧のモードを選択するための引数を記述できるようになりました。



左から、OPENモード、CHORDモード、PIEモードです。
コードは以下のとおりです。

void setup() {
  size(360, 150);
  smooth();

  noLoop();
}

void draw() {
  int num = 4;
  int rad = 360/num;
  int arc_w = 80;
  int arc_h = 80;

  for (int i = 1;i <= num;i++) {
    if (i % 2 == 0) {
      arc(60, height/2, arc_w, arc_h, radians(rad * (i-1)), radians(rad * i), OPEN);
      arc(180, height/2, arc_w, arc_h, radians(rad * (i-1)), radians(rad * i), CHORD);
      arc(300, height/2, arc_w, arc_h, radians(rad * (i-1)), radians(rad * i), PIE);
    }
  }
}

新しいProcessingで、さらに表現が広がりそうですね。



[追記]
まだまだ解説しますよ

clip()とnoClip()関数が追加されました。
描画領域を矩形に制限/制限解除する機能です。
次のように記述します
clip(x,y,width,height);
noClip();
mouseEntered()とmouseExited()イベントの追加です。
マウスが画面内に入った時、出た時に動くイベントです。

ちなみに、管理人おすすめの使い方は次のコードです。
void mouseEntered() {
  loop();
}
void mouseExited() {
  noLoop();
}
これなら、画面にマウスがあるときだけProcessingを動作させるので、別のウィンドウにカーソルがあれば動かない≒マルチタスクでの作業時に省エネ/省バッテリー

さて、これらを使ったサンプルです。

Processingのサンプル(Examples->Topics->Motion->Bounce)をお借りして変更を加えました。

変更している部分には★を付けました。
  • クリッピング領域の設定&マウスクリックで解除
  • カーソルがキャンバスの外にある時にはProcessingを止める
  • ellipseをarcに変更してarcをPIEモードでパックマンみたいに変更

int rad = 60;        
float xpos, ypos;        

float xspeed = 2.8;  
float yspeed = 2.2;  

int xdirection = 1;  
int ydirection = 1;  

boolean clip = true;//add for clip();//★クリッピングを反転させるためのフラグ値

void setup() 
{
  size(640, 360);
  noStroke();
  frameRate(30);
  ellipseMode(RADIUS);
  
  xpos = width/2;
  ypos = height/2;
  //background(102);//★バックグラウンドを描かないでクリッピングすると初期画面のグレーになるので、正常に表示させるにはこのコメントを外します。
  clip(width/5*1, height/5*1, width/5*3, height/5*3);//★クリップ領域を設定
}
void mousePressed() {//★クリックアクションを追加
  if (clip) {
    noClip();//★クリップ領域を解除
  }
  else {
    clip(width/5*1, height/5*1, width/5*3, height/5*3);//★クリップ領域を設定
  }
  clip = !clip;
}
void mouseEntered() {//★カーソルがキャンバス内にある時
  loop();//draw()を回す
}
void mouseExited() {//★カーソルがキャンバス外に出た時
  noLoop();//draw()を止める
}
void draw() 
{
  background(102);

  xpos = xpos + ( xspeed * xdirection );
  ypos = ypos + ( yspeed * ydirection );

  if (xpos > width-rad || xpos < rad) {
    xdirection *= -1;
  }
  if (ypos > height-rad || ypos < rad) {
    ydirection *= -1;
  }

  arc(xpos, ypos, rad, rad, radians(30), radians(330), PIE);//★最後の引数"PIE"を追加しました。よろしければ"CHORD"などもお試しください、デフォルトは"OPEN"です
}
 

その他、エディタのキーバインドの改善を試みているようです。

サイト管理者 さんのアバター

投稿者: サイト管理者

ProcessingJPオープン

2012年11月30日 (ProcessingJP)

Processing Advent Calendar 2012年 (1日目)

今年も始まりましたProcessingのアドベントカレンダー。
一日目は、イベント発起人である@p5info@reona396が担当致します。

さて、Processingは日本でも教育やメディアアート、その他様々な分野で利用されつつあり、
多くの方々に注目されています。

しかし、Processingはその知名度のわりに、日本における情報サイトの数は少なく、
ポータルサイトや日本コミュニティというものがほとんどありません。

今後、日本でProcessingがより認知されるためには、
Processingコミュニティの成熟が欠かせなくなってくると思います。
こうした思いのもとに、「ProcessingJP」は誕生しました。

このサイトは
・Processing界の大きな流れをお伝えするニュース(このコンテンツのことです)
・質問、発表、ディスカッション、交流の場としてのフォーラム
からなります。

今後、「ProcessingといえばProcessingJP」というような、
日本Processing界の柱となるべく、
サイトを運営/拡大していきたいと思います。

皆様、ProcessingJPをどうぞよろしくお願いいたします。

より豊かなProcessingライフのために。

ProcessingJP管理人
@p5info
@reona396