|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Processingは電子メディアより実現されるコンセプチュアルな空間を作り出す環境である。 Processingは電子的な芸術作品を作成する過程を通じてコンピュータプログラミングの基礎を学ぶための環境であり、 またアイディアを描き試すためのスケッチブックでもある。 Processingはインタラクティブな画像マルチメディアのプログラミング環境として有名なJAVAを使用している。 システムはブラウザに埋め込まれたJAVAアプレットのようにWEB上で動作する作品を出力することができる。 また、このシステムは、本来のJAVAと教育を目的としたグラフィックプログラミング環境とのギャップを埋める架け橋となるべく設計されており、 ProcessingはJAVA等の練習台としても使用できる。www.Proce55ing.net このチュートリアルの目標はProcessingという環境をMacromedia FlashとDirectorの利用者に紹介することである。 Macromedia社の製品より得た知識は、Processingに必要なものに応じて分割すれば簡単に真似ることが出来るはずであると考える。 その際ユーザはMacromedia製品に関する基本的な理解が必要となる。 しかしこのチュートリアルを読み終えるころには自らが作成するProcessing(またはJAVA)の作品を創造できるようになるだろう。 また、シリアルポートやBX-24 chipを用いた通信も可能となるだろう。 索引 Introduction Obtaining the Processing Software A tour of the interface Lower Level Media Manipulation Syntax Structure Static 2D Drawing Time and Motion Mouse & Keyboard Presentation / Exporting Drawing Image Files 3D Form Pixels Typography Serial The Future |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
コンピュータによるインタラクティブデザインの教材としてFlashやDirectorが既に多く用いられている。 学生は幾何学的かつ動的な要素を含むデザインを又複雑なアルゴリズムを用いて作成するようになった。 以前ITPのある教室にて次のような実験が行われた。 DirectorLingoに取り組んでいる際一週間JAVAに関する講義を行った。 Lingo以外の言語に触れさせ、新しい言語やシステムの異なる点や見方について学ばせた。 基本となるテンプレートと簡単なリファレンスを学生らに与えプログラムを変更させた。 この一週間に及ぶJAVAの講義の後、何人かの学生はJAVAを学ぶことに関心を抱いていた。 しかし、本来大学におけるJAVAの講義はテキストコンソールを用いており、 グラフィックアプレットを対象としていない。 以下のレッスンを通してProcessingがプログラムとグラフィックデザイン間の差を乗り越える手助けとなることを期待している。 これは決してJAVAの講義の代役として学ぶことを意味してはいない。 ProcessingはJAVAの深いニュアンスを伝える以前の段階を学ぶ上でのサプリメントとして使用してもらいたい。 また、ProcessingとJAVAはMacromediaの製品ほど高レベルでは無いが、他の低レベルなシステムよりはよいプログラミングと実行環境を提供してくれる。 柔軟な考えをもつインストラクターが居れば、JAVAの講義を受講している者が提出物を作成する際にProcessingを使用できるかもしれない。 このチュートリアルはCasey ReasとBen Fryの作成したProce55inのサイトより得られた情報を筆者独自の観点よりまとめたものである。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Processingは現在開発段階ではあるが無料で配布されており、完成した後も無料配布が予定されている。 このソフトウェアは現在開発・改良の必要なALPHA段階にある。バグは直され、新たな機能が追加されている。 開発テストの協力者、又ダウンロードを希望する者は一度開発者にメールで問い合わせてもらいたい。 将来的にはProcessing websiteにてダウンロードを予定している。 またα版のテスト協力者間のメッセージボードが存在する。参加は登録制であるが、 そのコミュニティーに参加することは質問や疑問を解決する最もよい方法であるといえる。 ここでは他のユーザを含め製作者側にも直接声を投げかけることが出来る。 方法としてはProcessingのサイトにてDiscourseを選び登録してもらいたい. Processingとそのサイトは定期的に更新されている。Referenceにて更新機能を確認してもらいたい。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Processingに関する他の環境や命令についてはProcessing Environment reference参照。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Directorでは, キャスト(cast)にメディアの読込み又は作成を行い、 次にステージ(stage) と呼ばれる画面部にスプライト(sprite)を生成・配置する。 Flashではライブラリ(library)にメディアの読込み又は作成を行い、 Directorと同じようなステージにムービークリップ(movieclips)としてインスタンス化する。 一方のProcessing(そしてJAVA)においてメディアの読み込みはコードにより既に終了しており、 これはHTMLの働きと似ている。さらにどのようなメディアであれ(ベクターシステム, DNAデータ, フィルムからのカラーサンプル, Fargo)JAVA言語の一部として埋め込まれている。 その結果外部からの画像や音等を1つのファイルにまとめることが何の制限も無しに実現できる。 何故なら画像のピクセルもプログラムコードの一部として変換され、 音データも巨大なデータ配列として格納されるためである。 ライブラリやキャストをもつことの利点としてフォーマット時の制御の良さ、 順序良くディスク(メモリ)の空き領域に保存できる等が挙げられる。 またスプライトやムービークリップを持つ利点として視覚的であること、 スクリーン上に見える物体であるため簡単にボタン、ゲームのキャラクタ、 独立したグラフィック素材を作成することが可能であること、視覚的に制御可能かつ明確な空間上の素材等が挙げられる。 Processingでは複雑なレイヤーは実現されておらず、基本的な描画ルーチンとマウス、キーボード、 シリアルポート接続によるイベントのみを提供している。 入力と時間の調整により、ある1シーンを繰り返し描画することもできる。 問題としては自らが個々のスプライトやムービークリップを描かなくてはならないが、 Processingでは必要とされていない。 他の方法を発明することはアーティストとして便利なものを作ることになる。 更によくスポットを当てるMacromedia社の関連物に対して芸術的に深い変化を生じる機会を与える。 この先のセクションではまずスクリーンに画像を描画する方法を、 次に時間とアニメーションについて、最後にマウス、キーボード、シリアルポートを用いたインタラクションについて紹介していく。 世の中にはユーザの行う作業を順に創造してくれるを高度なソフトウェアがあるが、 それらの作業を自らが組み立てていくことを頭におけば、JAVAを用いて作業することもすぐに受け入れることができるだろう。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
またJAVAの変数については次に示す。
Flashユーザへ:Processingには変数(var)という概念が無い。
条件分岐における比較部分の記述方法がLingoと若干異なる。Processingのプログラムは一つの''=''を変数の値を代入する際に使用する。 また、二つの''==''を双方の値を比較して同じ値か否かを調べる際に使用する。このとき同じ値ではないという記号は ''''ではなく''!=''と記載されることに注意してほしい。その他の比較記号('''',''='')の使用方法 はLingoと同様である。比較条件に関する詳細情報は consult the authorityを参照すること。
Lingoユーザへ:このプログラムは''repeat with i = 0 to 4''と同じ意味を持つ。 ()の中身は三つの特別な構文がセミコロンで分けられて並んでいる。一つ目の構文は一時的な変数を作成。 二つ目の構文は何度繰り返し処理を行うかの状態を定める。変数iが5を超えた大きな数値となった後に繰り返し処理が終了する。三つ目の構文はiの変化量を定めることができる。''i++''は''i = i + 1''の省略した形である。 JAVAを提供するSunならば 繰り返し文に関するさらに多くの知識を与えてくれる。
If you are この現象について興味のある者はJAVAチュートリアル内に記述されている the part about flow-controlについてを参照するとよい。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
次にこのコードを行ごとにわけて解説していく。
次に組み立て式の形を紹介する。
triangle関数 は三つの頂点を持つ図形を描く。これには六つのパラメータがあり、 パラメータ1,2は一番目の頂点のx-y座標、パラメータ3,4は二番目の頂点のx-y座標、 パラメータ5,6は三番目の頂点のx-y座標を示す。
noFill関数を使用すれば図形の中を塗りつぶさない線分のみのアウトライン図形を描くことが出来る。 また、これと同様にstrokeにもnoStroke関数が存在する。noStroke関数は図形のアウトラインを無くした状態の図形を描画できる。
凸面多角形の作品例またそれらのプログラムはサイト内に展示してあるものを見てもらいたい。
beginShape(LINE_LOOP); |
vertex(30, 20, -50); vertex(85, 20, 0); vertex(85, 75, -80); vertex(30, 75, 0); endShape( );
|
|
beginShape(TRIANGLES); |
vertex(30, 75); vertex(40, 20); vertex(50, 75); vertex(60, 20); vertex(70, 75); vertex(80, 20); vertex(90, 75); endShape( );
|
|
beginShape(TRIANGLE_STRIP); |
vertex(30, 75); vertex(40, 20); vertex(50, 75); vertex(60, 20); vertex(70, 75); vertex(80, 20); vertex(90, 75); endShape( );
|
|
noFill( ); |
beginShape(TRIANGLE_STRIP); vertex(30, 75); vertex(40, 20); vertex(50, 75); vertex(60, 20); vertex(70, 75); vertex(80, 20); vertex(90, 75); endShape( );
|
|
noStroke( ); |
fill(153, 153, 153); beginShape(TRIANGLE_STRIP); vertex(30, 75); vertex(40, 20); vertex(50, 75); vertex(60, 20); vertex(70, 75); vertex(80, 20); vertex(90, 75); endShape( );
|
|
noStroke( ); |
fill(102); beginShape(POLYGON); vertex(38, 23); vertex(46, 23); vertex(46, 31); vertex(54, 31); vertex(54, 38); vertex(61, 38); vertex(61, 46); vertex(69, 46); vertex(69, 54); vertex(61, 54); vertex(61, 61); vertex(54, 61); vertex(54, 69); vertex(46, 69); vertex(46, 77); vertex(38, 77); endShape( );
|
|
beginShape(LINE_STRIP); |
curveVertex(84, 91); curveVertex(68, 19); curveVertex(21, 17); curveVertex(32, 100); endShape( );
|
|
beginShape(LINE_STRIP); |
curveVertex(84, 91); curveVertex(84, 91); curveVertex(68, 19); curveVertex(21, 17); curveVertex(32, 100); curveVertex(32, 100); endShape( );
|
|
beginShape(LINE_STRIP); |
bezierVertex(30, 20); bezierVertex(80, 0); bezierVertex(80, 75); bezierVertex(30, 75); endShape( );
|
|
|
int x = 0; |
この例では白い長方形が左から右へ一度だけ移動する。 この動作をアニメーションGIFにしたものを右に示す。 |
void loop( ){ |
ここにあるサンプルはProcessingの下方のウインドウ上に現在の日付けと時間を出力するものである。 |
void loop( ) { |
この単純なサンプルではマウスの動きに追従する様に白い正方形が描かれている。 また、クリックしたときに正方形が黒色に変わる。 |
void loop( ) { |
この単純なサンプルではキーボード上のキーが押されたときに四角形の色が濃いオレンジに 変化する。 |
int x = 50; |
このサンプルでは指定されたキーを押すと画面上の正方形が移動する。 |
|
|
他のイメージをProcessing上に表示するのは簡単である。JAVAはjpg又はgif形式の画像のみを受け付ける ため、他の形式の場合はこの何れかに加工する必要がある。 ファイルシステムと数行のコードを使用することにより、他の画像を簡単にsketch上に表示できる。 はじめにsketchを保存する。そしてProcessingのプログラムフォルダの中を見ていくとsketchbook と名付けられたファイルがある。そのフォルダの中にはexampleフォルダともう一つdefaultフォルダが ある。このdefaultフォルダの中に先ほど名前を受けて保存したsketchと同じフォルダが存在する。 簡単に画像を利用するためにはこの中のdataフォルダに外部より持ち込む画像を入れる必要がある。 実例としては以下のファイルとなる:
Processing Folder/
sketchbook/
default/
your_sketch_name/
data/
your_imagefile.gif
例えばimage_example_1というsketchがあるとする。これに外部より持ち込む画像としてtwombly.jpg(Twombly作)が存在する。
ユーザがtwombly.jpgを以下の場所にコピー終えるとコードを打ち込む準備が出来る。:
Processing Folder/
sketchbook/
default/
image_example_1/
data/
twombly.jpg
次に以下のコードを記述する。
size(150,150); |
Bimageは事項されているファイルを描き終わるまで保持するオブジェクトである。 bはこの画像につけた適当な名前である。そしてimage関数が実際に画像をスクリーンに描画する。
image(BImage, x, y, width, height);
画像のサイズを決める高さと横幅については省略することも可能である。省略した場合は元の画像のサイズが適用される。
直に画像ファイルをフォルダの下に置く以外の方法としてURLの利用も可能である。
既存の外部ファイルを読込む場合に関する詳細についてはLoading_and_Displayingを参照すること。 より多くの知識を得たい場合にsequencial images (video footage)を参考にすることもできる。 更なる情報源としてProcessing Image Examplesを参考にするのもよい。
3Dが固有の2D環境へと取り入れられる過程には多くの論争を巻き起こしていた。 Flashにおいては多くの外部ツールが開発され、Derectorの場合は近年3DVectorGraphicSpriteが改良された。 システムとしてはとても複雑でその難しさ故に学び始めることすら難しい状態である。 そのため、現段階のProcessingにおいて3Dとはz軸を追加しただけものと考える。 |
translate(58, 48, 0); |
||
noFill( ); translate(58, 48, 0); rotateY(0.5); box(40); |
||
lights( ); translate(58, 48, 0); rotateY(0.5); box(40); |
||
noStroke( ); lights( ); translate(58, 48, 0); rotateY(0.5); box(40); |
||
noStroke( ); lights( ); translate(58, 48, 0); sphere(28); |
int width = 100; |
size(200,100); |
エラーはBondni-Italic.vwl.gzが見つからないと言うはずである。なぜならまだフォントのファイルを データフォルダ上に移動させていないためである。好きなフォントを 選んだ後にProcessing内の fontsフォルダを開いてもらいたい。選んだフォントをスケッチのデータフォルダにcopyすれば プログラムは正常に動作するはずである。
hint(SMOOTH_IMAGES); 文字の描画を少しぼかして表示。
BFont f = loadFont( "Bodoni-Italic.vlw.gz" );フォントファイルを変数fに格納。
setFont(f, size); テキストの種類とその大きさを指定、テキストを描画する前に宣言。
text("handglove", x, y);テキストを指定位置に描画。
この例は回転と簡単なfor文により作成される。
size(200,100); |
文字を描くのが嫌いなユーザにはもっと簡単に事を運ぶ方法も存在することを示しておく。 Processingではテキストボックスを設けそれを用いて文字を入力することも予定している。 実際にProcessingを用いて文字をモチーフに描かれた作品を挙げておく-Processing typography examples-。
sub main() |
ここにつまみの回転角度をPCに返すプログラムがある。 これはチップにダウンロードするためのものであり、BasicXのデバッグモニターにて数値を見れば どのような変化が生じているかを理解できる。 |
String buff = ""; |
|
Processingは進化し続ける全く新しい環境であり、前述したサイトの更新を継続して確認する ことが大切である。新バージョンは簡単にインストール可能であり、また以前のバージョンで作成されていた sketchbookやdefaultフォルダはどのバージョンでもコピー後継続して使用することが出来る。 著者がこのドキュメントを作成している時点のProcessingのバージョンはALPHA0050である。 また、ここだけの話ではあるがProcessingを5を抜いたprocessingへバージョン名を変更することや、 basic, standard, advancedモードの名前の変更等もあり得る。 グラフィックエンジンはアンチエイリアスレンダリングを利用することにより、アルファ値の変化や 多角形の塗りつぶし効果にも進化が見られるだろう。 C言語を用いて作成されているFlashやDirectorとは異なり、Processingはユーザが入力する言語と 同じもの(JAVA)により作成されている。将来的には音源の再生や作成をプログラムにより行うことが期待される。 またto-do Listとしてインターネット上で皆とコミュニケーションをとる際にも有効となるであろう。 新たにダウンロードする必要が出てくるかもしれないがTCP/IPを用いてtelnet、FTP、更にはFlashやDirectorの プログラムとも通信できるかもしれない。 完成された環境開発における精神を持ちProcessingはカラーピッカー、ベジエ加工等 更に多くの内部組み込みツールを追加していくことが期待される。 ソフトに関する追記としてCaseyとBenはコミュニティーが広がることを期待している。 集められたコードは中枢ディレクトリとして確立し、Processing言語において 便利なものとなっていくだろう。 Processingはソースを公開している。そのため誰にでもProcessingを生成するプログラムを ダウンロード、加工、コンパイルし、Processing新バージョン製作に貢献できる。
この方針より、Processingはユーザが既に習得、又は勉強中のMacromedia製品を使用する際の 便利な機能を持つソフトとして利用されれば幸いである。 そして作成されたProcessingのサンプルから製作側が何かを学ぶこともあるため 是非出版、もしくは製作側にプログラムを送付してもらいたい。 またオンライン上のProcessingサイトにあるコミュニティーでの談話に参加することも 忘れないでおいてほしい。 それでは、良きクリエイションを!
Happy creating!
Josh Nimoy is a graduate student in the Interactive Telecommunications Program at New York University's Tisch School of the Arts. He creates and exhibits interactive media work concerned with vernacular digital interactivity, nature, and experimental typography systems. Nimoy values the effects of good teaching, good communication, and honest work. He holds a BA in Design and Media Arts from UCLA School of Arts and Architecture, specializing in digital cultures and technologies. Josh was a visiting undergraduate researcher at the MIT Media Laboratory in 1999 in the Aesthetics and Computation Group, led by John Maeda, where he worked with Ben Fry and Casey Reas. website |
Benjamin Fry is a doctoral candidate at the MIT Media Laboratory. His research focuses on methods of visualizing large amounts of data from dynamic information sources. The work uses ideas from distributed and adaptive systems to form organic representations that react and respond to the input data. This work is currently directed towards Genomic Cartography which is a study into new methods to represent the data found in the human genome. At MIT, he is a member of the Aesthetics and Computation Group, led by John Maeda. Ben received an undergraduate degree from the School of Design at Carnegie Mellon University, with a major in Graphic Design and a minor in Computer Science. website |
Casey Reas is an Associate Professor at the newly established Interaction Design Institute Ivrea in northern Italy. His work explores abstractions of biological and natural systems through diverse digital media including software art, digital prints, and responsive installations. In 2001, Casey received his M.S. degree in Media Arts and Sciences from the MIT Media Laboratory, where he was a member of John Maeda's Aesthetics and Computation Group (ACG). Casey has lectured and exhibited in Europe, Asia, and the United States. His work has recently been shown at the American Museum of the Moving Image, Ars Electronica, Interaction01 in Ogaki, New York Digital Salon, Museum of Modern Art, P.S.1, and Siggraph2000. website |