REALIDAD AUMENTADA EN EL LABORATORIO DEL ESPACIO MUTANTE – Primera Instalación

Imagen

 

Para nuestra primera instalación y acercamiento a la Realidad Aumentada decidimos crear un código que al leer cuatro marcadores en orden ascendente proyecta en pantalla, y a la escala de las personas, cuatro de las variaciones del logo del Laboratorio del espacio mutante. Las imágenes de la instalación las pueden encontrar en nuestra página de facebook:

http://www.facebook.com/media/set/?set=a.423500464363922.90836.415881598459142&type=1&l=6f5240b6bd

>>El código se configuró a partir de los ejemplos expuestos por Amnon Owed en la CREATIVE APPLICATIONS NETWORK y que pueden encontrar junto a las librerías en el siguiente link:

Augmented Reality with Processing [Tutorial, Processing]

>> Las librerías complementarias, los marcadores y los modelos los pueden encontrar aquí:

Librería OBJloader: http://code.google.com/p/saitoobjloader/

Marcadores y modelos: http://d01.megashares.com/dl/u151Wgp/Markers and models.zip

————- // código para processing //

import java.io.*; // for the loadPatternFilenames() function
import processing.opengl.*; // for OPENGL rendering
import jp.nyatla.nyar4psg.*; // the NyARToolkit Processing library
import codeanticode.gsvideo.*; // the GSVideo libraryç
import processing.core.*;
import saito.objloader.*;// for Object loader library – 3D models

MultiMarker nya;
GSCapture cam;
OBJModel model; //the laboratory logo
OBJModel modelt; //the chair
OBJModel modela; //the lamp
OBJModel modelc; //the photocamera model

BoundingBox bbox;

// the full path to the camera_para.dat file
String camPara = “camera_para.dat”;

// the dimensions at which the AR will take place. with the current library 1280×720 is about the highest possible resolution.
int arWidth = 640;
int arHeight = 360;
float mS = 0.2;

void setup() {
size(1280, 720, OPENGL); // the sketch will resize correctly, so for example setting it to 1920 x 1080 will work as well
cam = new GSCapture(this, 1280, 720); // initialize the webcam capture at a specific resolution (correct and/or possible settings depend on YOUR webcam)
cam.start(); // start capturing
// initialize the MultiMarker at a specific resolution (make sure to input images for detection EXACTLY at this resolution)
nya = new MultiMarker(this, arWidth, arHeight, camPara, NyAR4PsgConfig.CONFIG_DEFAULT);
// set the delay after which a lost marker is no longer displayed. by default set to something higher, but here manually set to immediate.
nya.setLostDelay(2);
// load the pattern filenames (markers)
// add the marker for detection
nya.addARMarker(“lampara.pat”, 80); //ID 0
nya.addARMarker(“silla.pat”, 80); //ID 1
nya.addARMarker(“camara.pat”, 80); //ID 2
nya.addARMarker(“logolab.pat”, 80); // ID 3

//Logo model

model = new OBJModel(this, “logofrontal.obj”, “relative”, QUADS);
model.enableDebug();

model.scale(3.8);
model.translateToCenter();

bbox = new BoundingBox(this, model);
noStroke();

//the chair model

modelt = new OBJModel(this, “sillabonita.obj”, “relative”, QUADS);
modelt.enableDebug();

modelt.scale(2.8);
modelt.translateToCenter();

bbox = new BoundingBox(this, modelt);
noStroke();

//the lamp model

modela = new OBJModel(this, “lamparafrontal.obj”, “relative”, QUADS);
modela.enableDebug();

modela.scale(2.8);
modela.translateToCenter();

bbox = new BoundingBox(this, modela);
noStroke();

//the photocamera model

modelc = new OBJModel(this, “fotocamarafrontal.obj”, “relative”, QUADS);
modelc.enableDebug();

modelc.scale(4.5);
modelc.translateToCenter();

bbox = new BoundingBox(this, modelc);
noStroke();

}

void draw() {
// if there is a cam image coming in…
if (cam.available()) {
cam.read(); // read the cam image
background(cam); // a background call is needed for correct display of the marker results
image(cam, 0, 0, width, height); // display the image at the width and height of the sketch window
// create a copy of the cam image at the resolution of the AR detection (otherwise nya.detect will throw an assertion error!)
PImage cSmall = cam.get();
cSmall.resize(arWidth, arHeight);
nya.detect(cSmall); // detect markers in the image
// set the AR perspective uniformly, this general point-of-view is the same for all markers
nya.setARPerspective();

// When the marker detection starts draw:
//for the marker ID 3
for(int i=3;i<4;i++){
//When there’s no marker don’t draw
if((!nya.isExistMarker(i))){
continue;

}{
//where to draw
translate((width/2)+20, (height/2)-20, 320);
rotateY(radians(frameCount)*20);
pushMatrix();
//draw the logo model
model.draw();
popMatrix();
//the bounding box
noFill();
noStroke();
bbox.draw();
noStroke();
}

}

// When the marker detection starts draw:
//for the marker ID 2
for(int i=2;i<3;i++){
//When there’s no marker don’t draw
if((!nya.isExistMarker(i))){
continue;

}{
//where to draw
translate(width/2, (height/2)-20, 320);
rotateY(radians(frameCount)*40);
pushMatrix();
//draw the photocamera model
modelc.draw();
popMatrix();

//the bounding box
noFill();
noStroke();
bbox.draw();
noStroke();

}

}
// When the marker detection starts draw:
//for the marker ID 1
for(int i=1;i<2;i++){
//When there’s no marker don’t draw
if((!nya.isExistMarker(i))){
continue;

}{

translate((width/2)+20, (height/2)-20, 320);
rotateY(radians(frameCount)*40);
pushMatrix();
//Draw the chair
modelt.draw();
popMatrix();
//the bounding box
noFill();
noStroke();
bbox.draw();
noStroke();
}
}
// When the marker detection starts draw:
//for the marker ID 1
for(int i=0;i<1;i++){
if((!nya.isExistMarker(i))){
continue;
}{
translate((width/2)+20, (height/2)-20, 320);
rotateY(radians(frameCount)*40);
pushMatrix();
//draw the lamp
modela.draw();
popMatrix();

noFill();
noStroke();
bbox.draw();
noStroke();
}
}
}
};

Anuncios

Publicado por

Mutante.Lab

El Mutante.Lab es un espacio de investigación, creación y promoción de las artes electrónicas en Bogotá Colombia.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s