Version 2 (modified by obina, 6 years ago) (diff) |
---|
注
このページの記述は Processing 2 の話なので、バージョン 3 では不要。例えば Processing 3.3 と NyARToolkit 5.0.5 で AR の練習 などに分かりやすく書いてある。
自分で読み込んだ画像を表示:3次元の場合
3次元ファイル形式のなかで、Wavefront Obj 形式を表示するために、saitoobjloaderを使う
- Download ページから OBJLoader.zip version 0.23b をダウンロード
- NyARToolkitと同様に、Document\Processing\libraries\OBJLoader に展開
- Processingを再起動し、OBJLoaderが Library のところに表示されていることを確認
- sketchを名前をつけて保存しなおす。今回は sketch_140807d とした
- Documents\Processing\libraries\OBJLoader\examples\OBJLoader_Multi_Models_MATTD\data にある cassini.obj, cassini.mtl をスケッチのdataフォルダへコピーして、以下のコードを入力。
import processing.video.*; import jp.nyatla.nyar4psg.*; import saito.objloader.*; Capture cam; MultiMarker nya; PImage img_jin, img_poni; OBJModel model; void setup() { size(640, 480, P3D); // setup camera String[] cameras = Capture.list(); cam = new Capture(this, cameras[0]); // select cam 0 // load AR marker information nya = new MultiMarker(this,width,height,"camera_para.dat",NyAR4PsgConfig.CONFIG_PSG); nya.addARMarker("patt.hiro", 80); nya.addARMarker("patt.kanji", 80); // load 2D image file img_jin = loadImage("data/jin01t.gif"); img_poni = loadImage("data/poni01t.gif"); // load 3D object model model = new OBJModel(this); model.load("data/cassini.obj"); model.scale(3.0); model.translateToCenter(); cam.start(); // start camera } void draw() { if (cam.available() != true) { return; } background(0); // clear (black) backgound cam.read(); // read camera image nya.detect(cam); // detect marker nya.drawBackground(cam); // draw background camera image if (nya.isExistMarker(0)) { nya.beginTransform(0); model.draw(); // show 3D Obj(Cassini) nya.endTransform(); } if (nya.isExistMarker(1)) { nya.beginTransform(1); scale(0.25); rotateX(radians(-90)); translate(-200,-400,0); image(img_poni, 0, 0); // show Poni nya.endTransform(); } }