NyAR4psg/1.2.0

NyAR4psg/1.2.0をリリースしました。

http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=8920

 

 

基本ライブラリをNyARToolkiy/4.0.1へ更新しました。1.2.0では、近距離の頂点トラッキング等の機能により、従来と比較して良好な結果が得られます。

 

新しいAPI

新しいAPIとしては、MultiMarker#addARMarker関数があります。

この関数は、Processingの画像をそのままマーカとして使用するための関数です。適当なPNGファイル等を読み込んで、そのままマーカに使うことが出来ます。

example

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);
  nya.addARMarker(loadImage("hiro.png"),16,25,80);
}

このAPIはカラーのマーカも扱うことが出来ますが、撮影画像とPNG画像の色値はかなりのズレがあるため、出来ればグレースケールのマーカで使ってください。

 

NyAR4psg/1.1.7リリース

NyAR4psg/1.1.7をリリースしました。変更内容は、1個の関数追加です。

追加した関数

public PVector marker2ScreenCoordSystem(
int i_id,
double i_x,
double i_y,
double i_z)

この関数は、ID i_id番のマーカ座標上の点を、スクリーン座標の点に変換することが出来ます。例えば、次のコードは、マーカ0の中心点のスクリーン座標を得ます。

marker2ScreenCoordSystem(0,0,0,0);

記事紹介:Augmented Reality with Processing [Tutorial, Processing]

NyARToolkit for processingのデモ動画がありました。

詳しいサンプルコードもありましたので、紹介をしたいと思います。

http://www.creativeapplications.net/processing/augmented-reality-with-processing-tutorial-processing/

このデモは、複数のマーカを、NyARToolkit for processingで取り扱うチュトリアルになっていました。環境の構築から解説されており、大変親切です。

NyAR4Psg/1.1.4リリース

NyAR4Psgの機能追加です。

従来のNyAR4psgでは、Frustumのfarクリップとnearクリップが反映されない&設定できない問題がありました。この問題に対応しています。
http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=8920

問題の原因は、processingのimage()関数の特性と背景描画手法によるものでしたので、この2点を補う関数を実装しました。

-setARClipping関数で、Frustumのfar/nearの指定ができます。
-drawBackground関数で、Frustumを考慮した背景描画ができます。
-setbackgroundOrtho関数で、背景描画に適した正射影行列をセットできます。

これに伴い、setARPerspective関数が、設定前のProjectionMatrixを返却しなくなりました。古いProjectionMatrixの保存が必要な時には、((PGraphics3D)(PApplet.g)).projectionの「コピー」を作成して、保存するようにして下さい。

NyAR4Psg/1.0.3リリース

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%ではありません。

使用頻度の低いメンバ変数が無くなったり、コンストラクタの引数個数が変わったりしているので、適時修正をして下さい。