NyARToolkitV4はたぶんこうなります。

NyARToolkitV4を作ってます。

processing版で導入したAPIが好評だったので、同じように使うための仕組みを実装しています。

こんな感じのコードで複数のマーカが認識できるようになる(はず)です。

package jp.nyatla.nyartoolkit.jogl.sample.sketch;

import javax.media.opengl.*;
import jp.nyatla.nyartoolkit.*;
import jp.nyatla.nyartoolkit.core.param.*;
import jp.nyatla.nyartoolkit.jmf.utils.*;
import jp.nyatla.nyartoolkit.jogl.sample.NyARGlMarkerSystem;
import jp.nyatla.nyartoolkit.jogl.utils.*;



/**
 * JMFからの映像入力からマーカ2種を検出し、そこに立方体を重ねます。
 * ARマーカには、patt.hiro/patt.kanjiを使用して下さい。
 */
public class SimpleLite extends GlSketch
{
  private NyARJmfCamera camera;
  private NyARGlMarkerSystem nyar;
  public void setup(GL gl)throws NyARException
  {
    this.size(640,480);
    NyARParam param=new NyARParam();
    param.loadDefaultParameter();
    param.changeScreenSize(640,480);
    this.camera=new NyARJmfCamera(param,30.0f);//create sensor system
    this.nyar=new NyARGlMarkerSystem(param);   //create MarkerSystem
    this.ids[0]=this.nyar.addARMarker(ARCODE_FILE2,16,25,80);
    this.ids[1]=this.nyar.addARMarker(ARCODE_FILE,16,25,80);
    gl.glMatrixMode(GL.GL_PROJECTION);
    gl.glLoadMatrixd(this.nyar.getGlProjectionMatrix(),0);
    gl.glEnable(GL.GL_DEPTH_TEST);
    this.camera.start();
  }
  private final static String ARCODE_FILE = "../../Data/patt.hiro";
  private final static String ARCODE_FILE2 = "../../Data/patt.kanji";
  private int[] ids=new int[2];
  
  public void draw(GL gl)
  {
    synchronized(this.camera){
      try {
        gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); // Clear the buffers for new frame.
        NyARGLDrawUtil.drawBackGround(gl,this.camera.getSourceImage(), 1.0);        
        this.nyar.update(this.camera);
        if(this.nyar.isExistMarker(this.ids[0])){
          gl.glMatrixMode(GL.GL_MODELVIEW);
          gl.glPushMatrix();
          gl.glLoadMatrixd(this.nyar.getGlMarkerTransMat(this.ids[0]),0);
          NyARGLDrawUtil.drawColorCube(gl,40);
          gl.glPopMatrix();
        }
        if(this.nyar.isExistMarker(this.ids[1])){
          gl.glMatrixMode(GL.GL_MODELVIEW);
          gl.glPushMatrix();
          gl.glLoadMatrixd(this.nyar.getGlMarkerTransMat(this.ids[1]),0);
          NyARGLDrawUtil.drawColorCube(gl,40);
          gl.glPopMatrix();
        }
        Thread.sleep(1);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }  
  public static void main(String[] args)
  {
    try {
      new SimpleLite();
    } catch (Exception e) {
      e.printStackTrace();
    }
    return;
  }
}