NyARToolkitでARマーカに画像を重畳したい。
なのでARマーカに合わせてCGで正方形を描画し、任意の画像をテクスチャとして貼ってみる。
下記のコードで動いた。
import processing.video.*; import jp.nyatla.nyar4psg.*; Capture cam; MultiMarker nya; // image setting PImage t_image; // texture image int t_image_l = 160; // marker and texture size // display setting int DISPLAY_W = 640; // display width int DISPLAY_H = 480; // display height void setup() { size(DISPLAY_W, DISPLAY_H, P3D); // Setup for NyARToolkit. colorMode(RGB, 100); println(MultiMarker.VERSION); cam=new Capture(this, DISPLAY_W, DISPLAY_H); nya=new MultiMarker(this, width, height, "camera_para.dat", NyAR4PsgConfig.CONFIG_PSG); nya.addARMarker("patt.hiro", t_image_l); // Setup texture t_image = loadImage("hoge.jpg"); } void draw() { if (cam.available() !=true) { return; } cam.read(); nya.detect(cam); background(0); nya.drawBackground(cam);//frustumを考慮した背景描画 if((!nya.isExistMarker(0))){ return; } nya.beginTransform(0); beginShape(); texture(t_image); vertex(t_image_l/2*(-1), t_image_l/2*(-1), 0, t_image_l); vertex(t_image_l/2, t_image_l/2*(-1), t_image_l, t_image_l); vertex(t_image_l/2, t_image_l/2, t_image_l, 0); vertex(t_image_l/2*(-1), t_image_l/2, 0, 0); endShape(); nya.endTransform(); }
vertexで指定している、4つの引数が謎。
1番目はx座標、2番目がy座標であることはわかるが、3番目と4番目はなんだろう・・・?
テクスチャの幅・高さだろうか。