Processing(BETA)0085リサーチ
■授業で教えなきゃいけないのもあって、Processingベータの変更点やら新命令やらをリファレンスを読みながら書き出してます。なるほどけっこう変わってるなあ。いじってて気がついたことは、
- メインループの構成の変更。従来loop()の中に書いていた記述はdraw()に書くようになり、ループするかどうかを選択できるようになった(loop()/noLoop())。redraw()というrepaint相当の命令も用意されて、イベントドリブンなプログラムが想定されてるっぽい。
- 画面更新のパフォーマンスを最適化するような方策が採られている。従来pixels[]でディスプレイ画像のピクセルを操作すると即座に反映されてたけど、updatePixels()を明示的に呼ぶことで画面に反映されるようになった。updatePixels()は領域の指定もできるので、無駄な書き換えを減らせる。ちなみにPImage(従来のBImageから置き換わった)の内容を書き換えたときも同様で、PImage.updatePixels()を呼び出さないと画像を書き換えたことにならない。これは本家のリファレンスにはぜんぜん書いてないので、過去のプログラムをBETAにコンバートするときに注意。
- OpenGLライブラリのサポートに際して、描画や座標変換に関する命令がよりOpenGLライクになった。3D系の命令(座標変換、カメラ、アトリビュート、光源)はOpenGLのAPIにネーミングもほぼ対応しているみたいなので、GLの入門テキストで勉強したほうがよさそう。
といったところ。目玉のライブラリについてはまだあんまり触ってないけど、VideoライブラリはQuickTimeムービークリップを操作する命令が充実しててけっこう楽しそう。期待のOpenGLライブラリはまだけっこうバギーな感じでおっかない。むしろじつはP3D(Processing専用の3D描画ライブラリ)が結構速くてよくできてるっぽい。2DのプログラムでもP3Dを指定するとOutofMemoryが出なくて問題なく動く場合なんかがあった。
このへんの情報はprocessing.dotimpac.toのwikiのほうにまとめているのでご参照ください&更新歓迎。
.objで遊ぶ
■3D系の命令を触ってみるのに、前遊んでた.OBJの3Dモデルデータを描画するルーチンを引っ張り出してきてみた。モデルは洋書の安売りで投げ売られてたのを買ってきた
500 3D-OBJECTS のデータを
Crossroads3D
で.OBJに変換したもの。コードはProcessingのフォーラムで
公開 されてたのをいじってます。
マウスで動かせるようにして描画を半透明にするだけでちょっとしたドローイングツールとしてけっこう楽しい。Processingの真骨頂はこういうとこかな。そういう意味では、aiExportみたいなドローデータとして出力するライブラリの充実が楽しみです。
http://users.design.ucla.edu/%7Etatsuyas/tools/objloader/index.htm
Processingのオフィシャルサイトのlibraryでも紹介されてました。