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]
Genial, muy buen trabajo y bien documentado, felicitaciones.
Gracias Copernico 🙂
Felicidades por el artículo.
Nuevas alternativas para la Realidad Aumentada, siempre es bienvenido.
felicitaciones.
Gracias Ademar!!! 🙂
ok he llegado dandole vueltas hasta aqui…
y ahora no me encuentra los patts…
cam=new Capture(this,width,height,24);
String[] patts = {
“patt.hiro”, “patt.kanji”
no puede seeer!! ajj
isn’t this library the same one from the older post?
Hey Rui! Yes is the same library but with other process.
ok. nice. i’ve been looking for nyarpsg documentation (in english) but i can’t find anything. do you know where i would be able to find it?
also, i’m having a problem in this code line:
(…)
if (nya.detect(cam))
(…)
the camera works but nya.detect(cam) always returns false. do you know why this is happening?
thanks 🙂
About this library, you have to see to cbotha page http://cpbotha.net/2010/06/05/processing-nyartoolkit-multiple-marker-tracking/
Gracias!
Al fin conseguí hacer el multimarker…
funciona genial !
esto es fantástico…
lo único q no me sale.. aunque retocar el código se ve fácil…
poner más de 3 markers .. se puede?
Claro es cuestión de modificar algunas sintaxis.
Te paso un link con mi blog…
hay ejemplos de lo que he hecho 😉
http://starbusker.blogspot.com/
tambien la web… aunque solo es de 3d…
http://www.alx3d.com
Como veréis los modeloss tienen sobre la textura un mapa de “occlusion”… que son las ( auto sombras ) de un objeto…
com maya se puede generar un render de una textura en lugar de un render normal de imagen, para después componerla en photoshop sobre la textura del color…
los modelos quedan muy bien con este truquillo 😉
Me gusta tu página y he visto el ejemplo que pones donde tu hermano está practicando realidad aumentada. Si tienes fotos de algo de realidad aumentada en la que hayas aprendido aquí, me gustaría verlo.
Saludos!
bueno lo que estoy intentando ahora es triplicar
los muñequitos esos q se ven abajo de la foto de mi hermano ( jejej )…
Se ven bonito.. pero si tubiera más de uno podría hacer… un juego de damas x ejemplo
el caso, es que retoco el código
añadiendo V3dsScene; etc…
pero me salta un error
hola, tengo un problema al correr cualquier programa utilizando esta libreria no se donde tengo que guardarla o bajo que nobre si me pueden ayudar gracias
jeje estoy haciendo progresos… genial!
ya vereis…
lo único q al importar el objeto 3ds en processing , no viene con la animacón…
y el objeto 3ds la tiene! por que lo vuelvo a abrir en max y está animado … que raro?
Es que no se importa las animaciones en processing. Al menos con 3ds no
Hola, oye, tengo una gran duda… en donde pondria los comandos para que cuando presione una tecla, suceda algo y mas especifico que se mueva de posicon?
saludos
Hola tengo una consulta, como se pueden rotar los elementos 3ds, yo los exporto desde 3d max como 3ds pero al momento de visualizar en processing quedan de lados
En primer lugar agradecer tus tutoriales, son fantásticos. Trabajocon processing en mac osx y el código ejemplo me funciona perfectamente, pero necesito crear mis propios marcadores y el programa flash web que indicas: http://flash.tarotaro.org/blog/2008/12/14/artoolkit-marker-generator-online-released/
me crea un .pat que processing no reconoce tan bien como el patt.hiro. Sabes cuál es el problema? puedo generar un patt.?
TE AGRADECERÍA MUCHÍSIMO TU RESPUESTA porque llevo casi una semana intentandolo
Hola Manuel disculpa que no te haya respondido tan rápido. El problema de que no se visualice tanto es posiblemente por el dibujo del marcador. Debe ser cuadrada y en el medio tener, si deseas, un distintivo.
Saludos
Primero que nada muchas gracias por los tutoriales y el apoyo con tu blog, gracias a tu blog, pase en una semana de nunca haber tocado un codigo, a saberme manejar(un poco pero ya me defiendo haha) en un entorno de programacion, por cierto investigando, encontre este loader de kmz/dae:
http://wiki.enterpriselab.ch/el/doku.php?id=projects:colladaloader:colladaloader
voy a intentar integrarlo a nyartoolkit a ver como resulta
Muchas gracias 😀
Hola Mike que buen dato lo de el colladaloader! Es una buen solución.
Si haces algo, no dudes en enviarmelo en mi correo quizá lo lanzo como un post con todo los créditos posibles jejeje
Yo tb voy a investigar sobre ese tema!
Saludos!
Hola Emilio, el objimport tiene su propio ejemplo, lo ejecuto y funciona OK. Ahora hice un pequeño cubito, lo deforme un poquito y lo puse en el ejemplo PERO:
Loaded OBJ from file ‘D:DOCUMENTOSProcessingobjimportexamplesloadobjdatacubito.obj’
129 vertices.
0 normals.
0 textures coordinates.
Exception in thread “Animation Thread” java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at objimp.ObjImpScene.draw(ObjImpScene.java:301)
A que crees que se deba, ojo que todo está en su sitio, la exportación se hizo como indicas en tu video.
GRACIAS DESDE YA…
SOLUCIONADO: Resulta que al momento de exportar desde blender hay que marcar también la opción “normals” y listo…
BLENDER 2.57b
Me olvidaba, para trabajar con “animaciones intrinsecas” osea hechas con el mismo blender, cual es la mejor exportación: OBJ, COLLADE, MD2, 3DS ???
Gracias nuevamente.
Hola de nuevo, como podemos hacer esto: http://www.youtube.com/watch?v=m3SJo2u7tQo&feature=player_detailpage#t=226s
Todo en blender y exportamos como obj???
lo alucinante es el efecto de luz…
miren a partir del minuto 2.34
ALUCINANTE!!!!
Hola Jesus! Que bueno que hayas resuelto tu problema! Creo que para hacer eso es la escena en 3d que ya viene con la inclusión de la luz y el efecto de la sombra. Prueba yo creo que si funcionaría 😀
Que necesitamos para hacer esto:
[youtube http://www.youtube.com/watch?v=SKq_NM2UNA4&hl=es_ES&feature=player_embedded&version=3%5D