NyARToolkit for Processingを更新しました。
元々は某はしもとさんからのバグ修正依頼だったのですが、気が付いたらほぼ作り直し&色々便利に。後悔はしていない。
http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=8920
機能の紹介
さて、どんな事ができるかと言いますと…。
こんな感じでNyIdマーカとARマーカが混在して使えちゃったりします。
他にも、
マーカの平面の画像を引っ剥がしたり、マーカ平面の座標を取得したりなんて事が、ちょこっと書くだけで出来ます。
技術的な面では、全てProcessingのコアAPIだけで動作するようになったので、P3Dレンダラでも問題無く動作するようになりました。これにより、以前のようなライブラリ同士の相性問題が発生しにくくなっています。(もちろん、OpenGLレンダラも使えます。)
また、左手系/右手系両方の座標系をサポートしているので、好きな座標系を利用することができます。ARToolKitシリーズ標準の右手系だと、Processingの描画結果が反転するので、左手系がお勧めです。)
サンプル
今回はExampleが沢山あります。例えばSimpleLiteはこんな感じです。
import processing.video.*; import processing.core.*; import jp.nyatla.nyar4psg.*; //(1) Capture cam; MultiMarker nya;//(2) PFont font=createFont("FFScala", 32); void setup() { size(640,480,P3D); colorMode(RGB, 100); println(MultiMarker.VERSION); cam=new Capture(this,640,480); nya=new MultiMarker(this,width,height,"camera_para.dat",NyAR4PsgConfig.CONFIG_PSG);//(3) nya.addARMarker("patt.hiro",80);//(4) } void draw() { if (cam.available() !=true) { return; } cam.read(); nya.detect(cam);//(5) hint(DISABLE_DEPTH_TEST); image(cam,0,0); hint(ENABLE_DEPTH_TEST); if((!nya.isExistMarker(0))){//(6) return; } nya.beginTransform(0);//(7) fill(0,0,255); translate(0,0,20); box(40); nya.endTransform();//(8) }
少し長いですが、AR化するためのコードは8行しかありません。JavaやC言語と比べて、おまじないが圧倒的に少なくなっています。
過去のプログラムの移植について
新しいNyAR4Psgは、過去のAPIもサポートしていますが、互換性は100%ではありません。
使用頻度の低いメンバ変数が無くなったり、コンストラクタの引数個数が変わったりしているので、適時修正をして下さい。