Metaverso, Realidad Aumentada, Realidad Virtual

Otra alternativa de Multimaker

 

Un archivo 3ds

 

 

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:

  • 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]

No te pierdes del mejor análisis sobre el mundo XR + AI - En español 🎁

Suscríbete y te compartaré quincenalmente el mejor resumen que puedes encontrar. SIN SPAN, SIN CONTENIDO ABURRIDO. CONTENIDO DIRECTO a A LA VENA !

We don’t spam! Read our privacy policy for more info.

No te pierdes del mejor análisis sobre el mundo XR + AI - En español 🎁

Suscríbete y te compartaré quincenalmente el mejor resumen que puedes encontrar. SIN SPAN, SIN CONTENIDO ABURRIDO. CONTENIDO DIRECTO a A LA VENA !

We don’t spam! Read our privacy policy for more info.

Emiliusvgs - Emilio Vegas

Fundador de Emiliusvgs. Comunicador digital de profesión y programador empírico. Trabajo para fomentar la innovación digital y en mis ratos libres estoy inmerso en marketing.

29 thoughts on “Otra alternativa de Multimaker

  • Copernico

    Genial, muy buen trabajo y bien documentado, felicitaciones.

    Reply
    • emilio vegas ubillus

      Gracias Copernico 🙂

      Reply
  • Ademar

    Felicidades por el artículo.

    Nuevas alternativas para la Realidad Aumentada, siempre es bienvenido.

    felicitaciones.

    Reply
    • emilio vegas ubillus

      Gracias Ademar!!! 🙂

      Reply
  • 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

    Reply
  • Rui Teixeira

    isn’t this library the same one from the older post?

    Reply
    • emilio vegas ubillus

      Hey Rui! Yes is the same library but with other process.

      Reply
  • Rui Teixeira

    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 🙂

    Reply
  • 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?

    Reply
    • emilio vegas ubillus

      Claro es cuestión de modificar algunas sintaxis.

      Reply
  • 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 😉

    Reply
    • emilio vegas ubillus

      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!

      Reply
      • 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

        Reply
  • 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

    Reply
  • 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?

    Reply
    • emilio vegas ubillus

      Es que no se importa las animaciones en processing. Al menos con 3ds no

      Reply
  • 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

    Reply
  • herman gonzalez

    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

    Reply
  • Manuel Jimenez

    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

    Reply
    • emilio vegas ubillus

      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

      Reply
  • 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 😀

    Reply
    • emilio vegas ubillus

      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!

      Reply
  • 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…

    Reply
    • SOLUCIONADO: Resulta que al momento de exportar desde blender hay que marcar también la opción «normals» y listo…
      BLENDER 2.57b

      Reply
  • 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.

    Reply
    • emilio vegas ubillus

      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 😀

      Reply

Deja un comentario

This site uses Akismet to reduce spam. Learn how your comment data is processed.