
Meses atrás, escribí un post sobre el multimarker con nyartoolkit. A raíz de este tutorial, me han llovido preguntas sobre cómo se inserta con objetos 3d (obj/3ds)
Presentaré otra alternativa más intuita y usada por muchos programadores. Por cosas de simplicidad, aquí lo llamaremos: M-nyar. Hice un pequeño sondeo entre 10 personas expertas en temas de modelado en 3d y processing; y 7 de ellos usan M-nyar.
Si más preambulos aquí les va la explicación:
- Instala la librería para Multimarker
- Importar librerías
import processing.core.*;
import processing.opengl.*;
import processing.video.*;
import jp.nyatla.nyar4psg.*;
import javax.media.opengl.*;
import mri.*;
- Llamar librerías
Capture cam;
NyARMultiBoard nya;
V3dsScene vscene;
V3dsScene vscene2;
- Usamos public void para llamar a las instancias de la clase
public void setup() {
size(640,480,OPENGL);
colorMode(RGB, 100);
- Agregamos la cámara y los string para usar distintos marcadores y características
cam=new Capture(this,width,height,24);
String[] patts = {
«patt.hiro», «patt.e»
};
double[] widths = {
80,80
};
nya=new NyARMultiBoard(this,width,height,»camera_para.dat»,patts,widths);
print(nya.VERSION);
nya.gsThreshold=120;
nya.cfThreshold=0.4;
- Es momento de agregar los objetos 3d
try
{
vscene = new V3dsScene (this, «ARCHIVO.3ds»);
vscene.useMaterial( true );
vscene2 = new V3dsScene (this, «ARCHIVO.3ds»);
vscene2.useMaterial( true );
}
catch( Exception e )
{
println( e );
System.exit( 0 );
}
}
- Nuevamente usamos un public, en esta ocasión es:
public void draw() {
background(200);
if (cam.available() ) {
cam.read();
}
- Luego le agregamos las cosas esenciales de nyartoolkit
background(255);
hint(DISABLE_DEPTH_TEST);
image(cam,0,0);
hint(ENABLE_DEPTH_TEST);
if (nya.detect(cam))
{
hint(ENABLE_DEPTH_TEST);
PGraphicsOpenGL pgl = (PGraphicsOpenGL) g;
for (int i=0; i < nya.markers.length; i++)
{
if (nya.markers[i].detected)
{
nya.markers[i].beginTransform(pgl);
- Finalmente cerramos las llamadas de los objetos 3d
if (i == 0)
{
vscene.draw();
}
else
{
vscene2.draw();
}
nya.markers[i].endTransform();
}
}
}
}
[youtube=http://www.youtube.com/watch?v=EDsaxRf6bgE]



Deja un comentario