読者です 読者をやめる 読者になる 読者になる

元派遣プログラマの自称技術系ブログです。雑記とか自作のオープンソースプロジェクトの話とか。
Javaとか組込とかできます。お仕事ください。

NyARToolkit for processing リリースしました。

NyARToolkit for processing NyAR4psg-0.1.0をリリースします。

日本語NyARToolkit project website is moved.
EnglishNyARToolkit project website is moved.

英語の自信はありません。

とりあえず、今のところは1個の1マーカを検出して、その変換行列を得る機能だけですが、Processingにするとどんな良いことがあるか、紹介したいと思います。

Processing版のイイトコ

準備のためのコードがとても少ない。

本家ARToolkit、他言語のNyARToolkitと違って、ARToolKit機能を利用するための手数がとても少ないです。

SimpleLiteみたいなものでよければ、たったこれだけ。

import processing.video.*;
import jp.nyatla.nyar4psg.*;
import processing.opengl.*;
import javax.media.opengl.*;

Capture cam;
NyARBoard nya;

void setup() {
  size(640,480,OPENGL);
  colorMode(RGB, 100);
  cam=new Capture(this,width,height);
  nya=new NyARBoard(this,width,height,"camera_para.dat","patt.hiro",80);
}

void draw() {
  background(255);
  if (cam.available() ==true) {
    cam.read();
    image(cam,0,0);
    if(nya.detect(cam)){
      PGraphicsOpenGL pgl = (PGraphicsOpenGL) g;
      nya.beginTransform(pgl);
      noFill();
      stroke(255,200,0);
      translate(0,0,20);
      box(40);
      nya.endTransform();
    }
  }
}

32行しかありません。

解析に使う画像が汎用イメージ

nya.detect(cam)の行で渡しているcamは、PImage(Processing内で使う汎用イメージ)オブジェクトです。つまり、この形式を返すあらゆるイメージを解析のソースにすることができます。静止画とか、動画とかもできるかも?

プラットフォーム依存しない(はず)

NyAR4psgはPureJavaなので、Processingが動作すれば、どこでも動きます。


というわけで、ちょっと拡張現実を試したりするにはとても良い環境です。ぜひぜひ使って下さい。APIマニュアルは…年内には書く予定です。

おまけ

jARToolKitベースのsimpleARToolKitと何が違うかの説明。

  1. bryanchung.net
  2. jARToolKit | Free software downloads at SourceForge.net
画像取得


simpleARToolKitは、キャプチャ画像をJNI経由で直接取得して、描画コールバック関数もdraw関数と別のシーケンスで動く。
対してNyAR4psgは、CaptureライブラリでPImageを取得して、それを入力する形。
simpleARToolKitはprocessingに新しいシーケンスを導入しなければいけないけど、NyAR4psgは描画→解析をdraw関数内でprocessingらしく書ける。この辺がこだわり。

ごめん嘘ついた
simpleARToolKitもPimage経由での画像入力に対応をしていますね。なんという勘違い。ただし、中身を少しいじらないといけないみたいですが。

画像入力

simpleARToolKitは、カメラ以外からの映像入力できない。対してNyAR4psgは、PImage形式なら何でも受け付ける。PImageを経由するので、直結より少し遅くなるけど、例えば前処理をしてからNyAR4psgのマーカ検出処理とかをする事もできる。

simpleARToolKitの新バージョンではPImage入力が出来るので、打消し線部分は嘘になります。

背景描画

simpleARToolKitは、カメラ画像を描画するAPIを使う。対してNyAR4psgは、processingの標準命令を使って描画する。ある意味、美しい(?)

PImageを描画するようになったみたいです。

おまけ2(processingライブラリの作り方とか)

processingライブラリ作成には、以下のページを参考にしました。
開発は、まずprocessingでプロトタイプを作って、そこからJavaに落とす方法がお勧めです。

  1. 404 Not Found
  2. processing - An open source programming language and environment for creating images, animation, and interactions - Google Project Hosting
参考書籍

参考になる書籍が有れば教えてください。