Metaverso, Realidad Aumentada, Realidad Virtual

Integrar objetos externos a Realidad Aumentada

Este post será más que todo teórico pues creo que es necesario enseñar no sólo código para que puedan usarlo y modificarlo, sino también bases y nociones para que ustedes puedan realizar sus propios proyectos.

«El conocimiento debe seguir fluyendo y no estancarse en un sólo individuo» es quizá un principio de contribución que a lo largo de mi poco experiencia con processing aprendí de las personas que me han ayudado y apoyado.

*Es una mini guía para integrar librerías 3d y otros, no es necesario seguir estos pasos sin son objetos simples (cuadrados, esferas)
* Antes de realizar todos estos pasos debes haber practicado con el tutorial inicial

  1. Para integrar cualquier librería es necesario seguir un orden establecido para que todo funcione a la perfección. No se puede agregar los códigos en cualquier linea.
  2. Hay que tener en cuenta que debemos saber que la composición del código es básicamente:import library
    llamar las clases
    void setup
    void draw
  3. Si tenemos dos sketch que queremos fusionar no es necesario repetir la misma librería ni tampoco el void setup ni el void draw. Basta con mencionarlos una vez.
  4. Tenemos que ordenar entre similares, es decir, las librerias con las librerias y los códigos que hayan sido de void setup y void draw entre ellos.
  5. Limpiar el código inncesario, pues algunas funciones o comandos pueden crear conflicto.

Ahora pongamos un ejemplo:

Tenemos el código para importar 3ds u obj y lo queremos fusionar con realidad aumentada (nyartoolkit)

  • Importamos las librerías

import processing.video.*;
import jp.nyatla.nyar4psg.*;
import processing.opengl.*;
import javax.media.opengl.*;
import mri.*;

  • Llamar a las clases

Capture cam;
NyARBoard mark;
V3dsScene vscene;

  • Incorporar los códigos que van dentro de void setup

void setup() {
size(640,480,OPENGL);
cam=new Capture(this,width,height);

mark1=new NyARBoard(this,width,height,»camera_para.dat»,»patt.hiro»,80);

mark1.gsThreshold=120;
mark1.cfThreshold=0.4;

try
{
vscene = new V3dsScene( this,»PT22Low.3ds» );
vscene.useMaterial( true );

} catch( Exception e )
{
println( e );
System.exit( 0 );
}
}

  • Incorporar los códigos que van dentro de void draw

void draw() {
background(200);
if (cam.available() !=true) {
return;
}
cam.read();

hint(DISABLE_DEPTH_TEST);
image(cam,0,0);
hint(ENABLE_DEPTH_TEST);

if(mark1.detect(cam)){

PGraphicsOpenGL pgl = (PGraphicsOpenGL) g;
mark1.beginTransform(pgl);

vscene.draw();

mark1.endTransform();

}
}

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.

84 thoughts on “Integrar objetos externos a Realidad Aumentada

  • NELSON BRIJALDO

    LA VERDAD ME GUSTARIA SABER MAS SOBRE ESTE TEMA YA QUE ME ENCUENTRO REALIZANDO UN PROYECTO SOBRE REALIDAD AUMENTADA PARA MI TESIS DE GRADO EN LA UNIVERSIDAD Y QUIERO ENFOCAR MIS CONOCIMIENTOS EN ESTA AREA YA QUE ME PARECE DEMACIADA ATRACTIVA, SI ME PUEDEN HACER EL FAVOR DE ENVIARME, PROGRAMAS, PROCEDIMIENTOS, COMO INVOCO LA IMAGEN, COMO HAGO QUE LA RECONOSCA Y SALGA LA IMAGEN, AUNQUE UD MUESTRA UNAS DEMOSTRACIONES AUN NO ME SON MUY CLARAS, A SU VEZ ME GUSTARIA SABER SI LA IMAGEN QUE SE MANEJA COMO DE RECONOCIMIENTO PUEDE SER CUALQUIER IMAGEN O MANEJA UNAS CARACTERISTICAS ESPECIALES, SI ES ASI LE AGRADECIRIA LA INFORMACION PERTINENTE PARA DESARROLLAR ESTE MECANISMO

    Reply
    • emilio vegas ubillus

      Hola! Claro en mi blog está una guía de como hacer realidad aumentada con processing. Busca los tutoriales y cualquier cosa o duda mandame un email.

      Reply
  • Daniel

    Hola Emilio, gracias por poner estos tutoriales. Cuanto es lo máximo en polígonos que has podido montar con Processing + NYA con archivos 3ds u obj?

    Reply
    • emilio vegas ubillus

      Es una buena pregunta. La verdad que no estoy muy seguro de la respuesta. Pero he probado con blender hacer cosas básicas y he trabajado con un diseñador 3d para que me ayude hacer modelos. Voy a preguntarle 🙂

      Reply
  • Daniel

    hello de nuevo… una pregunta de principiante… como roto o muevo un objeto 3DS o Obj aquí en processing? a ke método o propiedad tengo que accesar… rotate, y todas sus variantes nada ke ver… estaba haciendolo directo con el vscene pero ya casi me rindo…

    Gracias!

    Reply
    • emilio vegas ubillus

      Hola daniel. Si es con rotate pero tienes que hacer algunos códigos antes. Luego de marcador.beginTransform(pgl); tienes que poner esto

      float time = millis() * 0.01;
      translate(0,0,50);
      rotateZ(radians(10*time));

      Antes de esta linea de código: objeto.draw();

      Saludos!

      Reply
      • Daniel

        listo gracias Emilio…

        Reply
  • Daniel

    Ultima pregunta espero no molestarte más … jejeje El programita que hice en Processing corre perfecto dentro de processing, pero ni el applet ni la aplicación para windows me corren,

    El applet me da el error : class not found : arcar

    (arcar es el nombre de mi aplicación)

    y la aplicación windows corre, enciende la cámara pero se queda en blanco…

    Ni idea de que puede ser, en java normal hay que importar librerías java para esto… pero se supone que processing hace todo esto por uno… incluido lo de crear la clase con el nombre de aplicación…

    Te ha pasado el error? cómo se puede solucionar? ¿es porke estoy usando windows vista?

    Gracias nuevamente, disculpa la molestia

    Dan

    Reply
    • emilio vegas ubillus

      Hola. Lo bueno es que ya sé tu nombre verdadero. Dan, es un error común y no es culpa tuya.

      No puedes ver tu aplicacion de realidad aumentada porque tu applet, precisamente java, no permite que se proyecte la cámara web. Son cuestiones de seguridad. No hay solución en ese aspecto.

      Lo segundo es que al crear tu aplicación, luego debes pegar tu carpeta «data»

      La verdad que me has dado una idea para un post. Aclarando esto 🙂

      Gracias por la idea y espero haberto ayudado.

      Saludos!

      Reply
      • Daniel

        mmm listo la aplicación…

        Estás 100% seguro que no se puede ver de ninguna manera el applet? 🙁

        Estoy seguro ke he visto applets usando webcam, hasta justamente por motivos de seguridad, mostrando imagenes de cámaras en vivo en algún local o algo así…

        Bueno gracias… ke tengas buenas noches!! :))

        Reply
        • emilio vegas ubillus

          si, 100 % quizá usan otro derivado de java que es como web start java o algo asi. Y con eso si se puede, pero no lo he intentado hacer.

          😀

          Reply
  • Daniel

    Hola Emilio… por aquí ando… ya viste lo que hice jejeje ahora que tienes en mente aparte de tener dos markers o tres markers para mostrar los diferentes sectores?

    Reply
    • emilio vegas ubillus

      Tengo en mente usar varios marcadores para distintas areas…http://diariowm.wordpress.com/2010/07/03/tutorial-multimaker-nyartoolkit/
      Creo que con eso se podrá montar 3 distintos diseños en 3d que se irán mostrando al tiempo que se muestran los marcadores.

      Luego quizá se podrá hacer presionando botones para aparezca las distintas areas.

      Me alegra que te haya servido mis enseñanzas 😀

      Reply
  • Daniel

    Yeah :)) aunque lo del multimarker no lo saqué de tu blog sino de una página donde mostraban unas mejoras a la librería que trae el nyar… nuevamente gracias de verdad por tu buen blog!!!

    El vídeo que viste ya tiene implementado el multimarker por eso se abre el techo… jejejeje me falta el piso 1… pero tengo que modelarlo por dentro 🙂

    Todo basado en este vídeo de youtube http://www.youtube.com/watch?v=LHWww8hUp5s que ni idea con que lo hicieron a lo mejor es una librería propia, o del libro de realidad aumentada que trae un sdk que ya no tiene más soporte… yo lo que necesitaba era un motor gráfico más robusto que el papervision para flash, ya que estos mismos modelos en papervision no se ven para nada parecido jejeje (se come demasiadas caras) y bueno obviamente usar una tarjeta de vídeo 3D hace «magia» jejeje

    Bueno ahí vamos… gracias por tu ayuda en estos días de carreras… jejeje

    Dan!

    Reply
    • emilio vegas ubillus

      Jajaja tienes razón. No he probado como será con flash, pero processing tiene más estabilidad para estas cosas. Y además te falta una parte de la casa para mostrar todo tu infrestuctura.

      En la parte superior derecha de mi blog. Está mi gmail. Agrégame para conversar 😀

      Saludos!

      Reply
  • Hola Emilio!!!
    Verdaderamante muy bueno, pero me sale el siguiente error, quisiera que me dijeras que es:
    processing.app.debug.RunnerException: unexpected char: »
    at processing.app.Sketch.preprocess(Sketch.java:1352)
    at processing.app.Sketch.preprocess(Sketch.java:1205)
    at processing.app.Sketch.build(Sketch.java:1568)
    at processing.app.Sketch.build(Sketch.java:1553)
    at processing.app.Editor$DefaultRunHandler.run(Editor.java:1485)
    at java.lang.Thread.run(Thread.java:619)

    Reply
    • emilio vegas ubillus

      Hola rené, ese es un problema común. Has escrito algo mal en tu código. Quizá borrando las comillas o esto:
      se solucione.

      Reply
  • disculpa si soy molesto, tambien quisiera saber que libreria usas para manejar los objetos en 3D
    por que creo tener problema con el import mri.*;
    muchas gracias de antemano!!!

    Reply
  • Muchas gracias por tu pronta respuesta, pues si era un error de sintaxis y me faltaba esa libreria, pero ahora me sale esto:
    (cannot find a class or type named «V3dsScene»)

    Gracias por tu ayuda!!!!

    Reply
  • Ya no te preocupes se resolvio todo, me descargue una libreria mala, ahora va todo bien
    GRACIAS!!!

    Reply
    • emilio vegas ubillus

      jejeje Lo bueno es que lo hallaste tu sólo. Eso demuestra tus ganas de aprender.

      Adelante! 🙂

      Reply
  • Hola Emilio!!!!

    Tengo una pregunta que hacerte.
    alguna vez exportaste un proyecto de realidad aumentada con objetos 3D, a un applet para subirlo a una pagina web. pues resulta que yo lo hice y cuando ejecuto el archivo index.html en el explorador, pareciera que todo va bien y que se cargan todos los archivos pero de repente me aparece un error en la pantalla.
    «Error: Class not found: realidad3D»
    realidad3d es el nombre de mi proyecto.
    Sera que exporte mal o hay que modificar algo despues de esto?????
    Por que el programa ejecutado en processing corre normal, el applet es el inconveniente

    Saludos y Muchas gracias nuevamente!!!!

    Reply
    • emilio vegas ubillus

      Si he exportado y si ha salido bien.

      Me puedes pasar el link de la página para ver que puede ser el error.

      Saludos!

      Reply
  • lo que pasa es que el index.html es el que me genera automaticamente dentro la carpeta applet al exportar, en realidad lo unico que hice fue el ejercicio que tu pones de ejemplo en este blog, en el que aparece un aeroplano y todo salio bien, lo que no esta bien es el applet que se genera.
    no se donde esta el error!!!
    gracias!!!!

    Reply
    • emilio vegas ubillus

      Qué raro… mandame un email con tu sketch. Mi correo está al lado derecho de mi blog.

      Saludos!

      Reply
  • Ya te lo envie a tu mail
    gracias por tu ayuda y apoyo!!!

    Reply
  • hola Emilio!!!!

    testeando un poco me da error en le segmento de codigo del index.html, en donde dice:

    y no me esta encontrando la clase

    Saludos!!!!

    Reply
    • emilio vegas ubillus

      Hola rené, la razón por la que no te he respondido aún es porque no encuentro la solucion del problema. Tambien me aparece el mismo error que el tuyo.

      Seguré investigando

      Reply
  • hola Emilio, investigando por internet, necontre problemas parecidos al que encontramos y una solucion muy probable es subir el applet a la web y si tendria que funcionar.
    Esto va en funcion al resultado que me da la consola de java en la ejecucion del applet en el navegador en estas lineas:
    network: No se ha encontrado entrada de caché

    [URL: file:/C:/3D/_3D/applet/_3D.jar,versión: null]

    y asi en todas las demas, y parece q subiendola a la web caraga el applet sin problemas.
    jejeje lo malo es que yo nunca subi un applet a la web, por lo que si tu lo pudieras hacer con la experiencia que tienes, veriamos si mi esta hipotesis es real

    Saludos!!!!

    Reply
    • emilio vegas ubillus

      Si puede resultar aunque no le aguro buenos resultados jejeje. Es que algo que tienes que tomar en cuenta es que los applet no visualizan la cámara web por motivos de seguridad. Aún usando sólo applets con archivos 3d arroja el mismo error.

      De todas maneras probaré y te aviso!

      Saludos y gracias por mantener el contacto.

      Reply
    • emilio vegas ubillus

      Es un buena alternativa. No había escuchado eso de firmar los applets. Me pondré a investigar. Gracias por el dato!

      Reply
  • Carlos Andres

    Hola, te pregunto tengo un problema al tratar de ingresar un modelo 3ds

    En la línea:

    mark1=new NyARBoard(this,width,height,”camera_para.dat”,”patt.hiro”,80);

    me sigue saliendo el error : » unexpected char: » »

    podrias ayudarme con eso, muchas gracias.

    Reply
    • emilio vegas ubillus

      Hola Carlos. Se puede notar que el error es de sintaxis. No es ”camera_para.dat”,”patt.hiro”.
      Se escribe así: «camera_para.dat»,»patt.hiro»

      Saludos!

      Reply
  • Emilio, que tal, un saludo desde Guadalajara.

    Tengo algunos meses usando processing, sin hacer nada complicado, simples animaciones de palitos y bolitas. Antes ya había insertado un archivo .jar en el blog para que se pudiera ver la animación y nunca había tenido problemas.

    Hoy aprendí (jejeje es que soy bien principiante) a ponerle música al proyecto. Lo terminé y todo sale bien, realicé la exportación para tener el archivo .jar y montarlo como siempre y esta vez me aparece un error, al parecer no encuentra un archivo .class; me supongo que todo se debe a que usé una librería (minim) y por eso no se puede cargar ¿es así? ¿hay forma de hacerlo?

    El blog donde los pongo es: http://ellibrodemanuel.blogspot.com/

    Hasta abajo podrás encontrar la animación que no puede correr «Maripusy» e inmediatamente abajo una que sí lo hace «Nubes».

    Ojalá pudieras ayudarme. También puedes descartar el archivo jar que no funciona desde esta liga: https://sites.google.com/site/lapoliticaenjalisco/Home/marip.jar

    Reply
    • emilio vegas ubillus

      Hola José… para poder ver cual es el problema me puedes mandar tu sktech completo a mi correo que está en el sidebar.

      Saludos!

      Reply
  • Lucas

    Hola Emilio

    Te agradesco estos post de realidad aumentada e estado siguiendolos ya que me interesaron bastante, e seguido los pasos para realizar realidad aumentada con processing aunque resolvi varios problemas aun me aparece uno, el cual dice lo siguiente:
    NoSuchMethodError: You may be using a library that´s incompatible with this version of Processing.

    Si supieras como solucionarlo te estaria muy agradecido.

    Atte.

    Lucas

    Reply
    • emilio vegas ubillus

      Lucas. Como estas? Gracias por visitar mi blog.
      Nunca he visto ese error. Pero dime en que que version de processing tienes y que librería quieres usar.
      Voy a investigar el problema!

      Reply
  • Lucas

    Bueno Emilio Estoy usando la versión 1.1 y la 1.2 y me aparece el mismo error, estoy usando las librerias mri, mri3ds, NyAR2, NyARtoolkit.

    he intentado varias cosas incluso reemplazando la version de las librerias pero nada, realmente nose que más hacer.

    si logras encontrar algo, me cuentas a ver si se puede resolver este problema.

    Además yo uso windows 7 no se si esto produsca algún problema.

    Atte

    Lucas

    Reply
    • emilio vegas ubillus

      Es raro. Igual seguiré investigando.

      Saludos!

      Reply
  • Lucas

    Vale si encuentras algo me avisas

    Atte

    Lucas

    Reply
  • Lucas

    Hola Emilio te comento que hace algunos minutos he logrado hacer funcionar el proyecto de realidad aumentada que no funcionaba, estube averiguando y descubri que tenia que agregar unas librerias en la carpeta code del proyecto.

    Así que gracias por tu ayuda y sigue publicando nuevos tutoriales de realidad aumentada son de mucha ayuda para los novatos en este tema como yo.

    Atte

    Lucas

    Reply
    • emilio vegas ubillus

      Genial!!!! 😀 sigue practicando! Te ayudaré cuando quieras 😀

      Reply
  • kinoii

    * Importamos las librerías

    import processing.video.*;
    import jp.nyatla.nyar4psg.*;
    import processing.opengl.*;
    import javax.media.opengl.*;
    import mri.*;

    * Llamar a las clases

    Capture cam;
    NyARBoard mark;
    V3dsScene vscene;

    * Incorporar los códigos que van dentro de void setup

    void setup() {
    size(640,480,OPENGL);
    cam=new Capture(this,width,height);

    mark1=new NyARBoard(this,width,height,”camera_para.dat”,”patt.hiro”,80);

    mark1.gsThreshold=120;
    mark1.cfThreshold=0.4;

    try
    {
    vscene = new V3dsScene( this,”PT22Low.3ds” );
    vscene.useMaterial( true );

    } catch( Exception e )
    {
    println( e );
    System.exit( 0 );
    }
    }

    * Incorporar los códigos que van dentro de void draw

    void draw() {
    background(200);
    if (cam.available() !=true) {
    return;
    }
    cam.read();

    hint(DISABLE_DEPTH_TEST);
    image(cam,0,0);
    hint(ENABLE_DEPTH_TEST);

    if(mark1.detect(cam)){

    PGraphicsOpenGL pgl = (PGraphicsOpenGL) g;
    mark1.beginTransform(pgl);

    vscene.draw();

    mark1.endTransform();

    }
    }
    Hice un objeto en blender pero no me muestra las texturas, fue este mismo ejemplo solo que en ves del modelo que esta aqui agregue el mio pero no me muestra el objeto y si hago un cuadro en 3D si me lo muestra es raro podria mostrarme o decirme como importo un objeto en blender con texturas por favor.

    Reply
  • hola emilio

    como o con que programa hago mis propios marcadores

    Reply
    • emilio vegas ubillus

      Hola Juan en un breve post lo voy a explicar. Te avisaré por correo. Saludos!

      Reply
  • Saludos
    Existe alguna forma de asignarle tamano al objeto 3DS, desde processing o ya viene asignado desde el 3d max

    Reply
    • bueno ya encontre la solucion es con el comando scale(); si quisiera volverlo mas pequeno le doy valores como 0.4 o 0.2 y si lo hiciera mas grande valores como 3,4 o lo que sea mejor

      Reply
      • emilio vegas ubillus

        Hola Rene.

        Siento responderte tarde, pero si efectivamente yalo resolviste. Tu lo has logrado y eso es lo importante del blog!

        Saludos!

        Reply
  • diego fernando arenas c

    Buens dias acurro a ustedes ya que apesar de gran investigacion que he relaidado no he podido encontrar la informacion necesaria
    para dar movimiento a solo una parte del archivo dae, es decir el onbeto es un brazo robotico, y necesito mover solo la muñeca o las pinzas, espero me puedan ayudar gracias

    Reply
    • emilio vegas ubillus

      Hola Diego… puedes explicarme un poco más que es lo que necesitas. No termino de entenderte. Saludos

      Reply
  • me sale este eroor
    No library found for jp.nyatla.nyar4psg
    As of release 1.0, libraries must be installed in a folder named ‘libraries’ inside the ‘sketchbook’ folder.

    estoy trabajando con la version portable de processing en windows 7
    y baje las la version 3.0.0 del NyARToolkit es lo un zip no hay instalador al igual que processing
    me podrias ayudar

    Reply
  • Hola estoy probando el ejemplo que has dado, pero me sale el error:
    VerifyError: (class: jp/nytla/nyar4psg/singleMarkerBaseClass, method: update Transmat signature

    Reply
    • emilio vegas ubillus

      Hola Gerrit. Puedes mandarme un print! Para poder observarlo.

      Gracias!

      Reply
      • processing.video.*;
        import jp.nyatla.nyar4psg.*;
        import processing.opengl.*;
        import javax.media.opengl.*;
        import mri.*;
        import processing.core.*;
        //* Llamar a las clases

        Capture cam;
        NyARBoard mark1;
        V3dsScene vscene;

        //* Incorporar los códigos que van dentro de void setup

        void setup() {
        size(640,480,OPENGL);

        cam=new Capture(this,width,height);
        mark1=new NyARBoard(this,width,height,»camera_para.dat»,»patt.hiro»,80);
        mark1.setARClipping(100,1000);
        mark1.gsThreshold=120;
        mark1.cfThreshold=0.4;

        try
        {
        vscene = new V3dsScene( this,»PT22Low.3ds»);
        vscene.useMaterial( true );

        } catch( Exception e )
        {
        println( e );
        System.exit( 0 );
        }
        }

        //* Incorporar los códigos que van dentro de void draw

        void draw() {
        background(200);
        if (cam.available() !=true) {
        return;
        }
        cam.read();

        hint(DISABLE_DEPTH_TEST);
        image(cam,0,0);
        hint(ENABLE_DEPTH_TEST);

        if(mark1.detect(cam)){

        PGraphicsOpenGL pgl = (PGraphicsOpenGL) g;
        mark1.beginTransform(pgl);

        vscene.draw();

        mark1.endTransform();

        }
        }

        Reply
  • Hola emilio.
    E practicado algunos de tus tutoriales y me parecen excelente.

    Tengo un problema con este ultimo ejercicio. Logro importar el archivo .3ds pero me sale sin texturas y como si fuera una especie de imagen 2d.
    Ya intente el tutorial de processing + blender y tampoco puedo lograr que los modelos .3ds u obj funcionen en processing tal cual.
    ¿Sabes cual podría ser el problema? (un dato importante es que al reproducir el codigo de este post, processing me marca 0 texture)

    Un saludo

    Reply
    • emilio vegas ubillus

      Hola Daniel. Como estas?
      Las texturas son livianas? Tu modelo 3d pesa mucho?? Recuerda que tiene que ser liviano y simple en los vertex.
      Comentame más al respecto.

      Saludos

      Reply
  • Pude avanzar un poco el codigo, y logre que se vean mas texturas del render .3ds.
    al final processing me marca un error de OpenGL. Como no soy muy bueno en lenguajes de programacion, checa el codigo para que me ayudes a identificar el error 🙂

    import processing.video.*;
    import jp.nyatla.nyar4psg.*;
    import processing.opengl.*;
    import javax.media.opengl.*;
    import mri.*;

    Capture cam;
    NyARBoard mark1;
    V3dsScene vscene;

    void setup() {

    try {
    quicktime.QTSession.open();
    } catch (quicktime.QTException qte) {
    qte.printStackTrace();
    }

    size(640,480,OPENGL);

    cam=new Capture(this,width,height);
    mark1=new NyARBoard(this,width,height,»camera_para.dat»,»patt.hiro»,80);
    mark1.gsThreshold=120;
    mark1.cfThreshold=0.4;
    try
    {
    vscene = new V3dsScene( this,»untitled.3ds» );
    vscene.useMaterial( false );
    } catch( Exception e )
    {
    println( e );
    System.exit( 0 );
    }
    }

    void draw() {

    background(200);
    if (cam.available() !=true) {
    return;
    }
    cam.read();
    hint(DISABLE_DEPTH_TEST);
    image(cam,0,0);
    hint(ENABLE_DEPTH_TEST);
    if(mark1.detect(cam)){
    PGraphicsOpenGL pgl = (PGraphicsOpenGL) g;
    GL _gl = ((PGraphicsOpenGL)g).beginGL();
    setupLight( _gl, new float[]{0, 5, 0}, 1 );

    mark1.beginTransform(pgl);
    vscene.draw();
    mark1.endTransform();
    }
    }

    void setupLight( GL g, float[] pos, float val )
    {
    float[] light_emissive = { 0.0f, 0.0f, 0.0f, 1 };
    float[] light_ambient = { 0.0f, 0.0f, 0.0f, 1 };
    float[] light_diffuse = { 1.0f, 1.0f, 1.0f, 1.0f };
    float[] light_specular = { 1.0f, 1.0f, 1.0f, 1.0f };
    float[] light_position = { pos[0], pos[1], pos[2], val };

    g.glLightfv ( GL.GL_LIGHT1, GL.GL_AMBIENT, light_ambient, 0 );
    g.glLightfv ( GL.GL_LIGHT1, GL.GL_DIFFUSE, light_diffuse, 0 );
    g.glLightfv ( GL.GL_LIGHT1, GL.GL_SPECULAR, light_specular, 0 );
    g.glLightfv ( GL.GL_LIGHT1, GL.GL_POSITION, light_position, 0 );
    g.glEnable( GL.GL_LIGHT1 );
    g.glEnable( GL.GL_LIGHTING );
    g.glEnable( GL.GL_COLOR_MATERIAL );
    }

    Reply
    • emilio vegas ubillus

      Estoy viendo algunos problemas que tienen las personas con el Opengl. Que sistema operativo usas?
      Tu ejemplo no me marca error y puedo ver el trabajo que has hecho con las luces! Muy bueno 😉

      En todo caso mandame tu modelo 3d para chequearlo

      Saludos! 🙂

      Reply
  • Jose Zambrano Ortega

    hola emilio me gusto mucho tu tutorial pero tengo ciertos problemas.. pues veras.. tengo un proyecto de exportar un cubo con animacion q de vueltas de blender a realidad aumentada.. la cosa es q al parecer como lo indicas tu.. debo usar processing.. bueno hice lo que decias.. descargue processing.. y es una especie de protable.. la cosa es que tambien descargue el NyARToolKit y no se donde debo poner nada.. en primera.. nose que version debo descargar de todas las que me salen de NyARToolKit.. y no encuentro el Nyartest.. por ningun lado.. para empezar me gustaria que me ayudes con eso.. ya que e probado otros exmples que vienen en el nyartoolkit y no me han corrido.. me salen varios errores.. uso plataforma windows xp..

    no library found for procesinng.core.
    no library found fot jp.nyatla.nyar4psg

    descargue el nyar4psg-1.1.6 y el procesinng 1.5.1…

    me gustaria que me contestaras pronto porfavor.. es un proyecto de la universidad.. y te lo agradeceria..
    gracias..

    Reply
  • Rudosh

    Disculpe las molestias, Me gustaria Aprender a usar la libreria de Nyartoolkit, pero no encuentro ningun tute que me enseñe desde cero, tengo muchas dudas, como se crea el patron , como se rota los objetos como se carga los poligonos me refiero a los obj 3d, se puede cargar los obj 3d max, me pueden recomendar un buen tute actualizado ya que quiero hacerlo desde java con netbeans, rebizando me di cuenta que hay la version 3 de nyartoolkit gracias por la ayuda

    Reply
    • emilio vegas ubillus

      Hola! Rudosh en mi blog hay tutoriales sobre Nyartoolkit. Busca uno que se llama Tutorial: Nyartoolkit + processing + realidad aumentada

      Es un tutorial super básico. Espero que te sirva.

      Saludos

      Reply
  • Jairo Antonio Caballero

    hola, muy buen tutorial, una pregunta, mi modelo 3D no se crea justo delante del marcador, aparece muy adelante de este, como modifico el codigo para lograr poner mi modelo justo sobre el marcador?

    Reply
    • emilio vegas ubillus

      Es la posición que tiene el 3d en el objeto. Las coordenadas son fáciles de aplica. En estos momentos no estoy en mi computadora pero te recomiendo que entres a http://processing.org, luego entra a learning y allí aprenderas todo lo que es necesario para comprender la interfaz.

      Saludos

      Reply
      • Jairo Antonio Caballero

        muchas gracias por responder, ya he logrado mover mi objeto y ponerlo justo delante del marcador, el problema es que al rotarlo no gira como es debido, como si su punto de rotación se ubicara lejos del objeto, no se si toca modificarle el pivote o algo así, las coordenadas del objeto están en 0, osea en el origen :S muchas gracias de antemano

        Reply
  • Diego

    buenas tardes amirgo le felicito por sus tutoriales
    necesito ayuda estoy practicando con este ejemplp
    y me sale el siguiente error:

    the function useMaterial(boolean) does not exist

    en esta linea de codigo:
    vscene.useMaterial(true)

    Reply
    • emilio vegas ubillus

      Hola Diego.
      Por lo general esa función si te sale error debe ser por la textura. Has usado alguna?
      Comentame más

      Reply
  • Buenas tardes.. Hagame un gran favor… Con que libreria se puede cargar solo una imagen en jpg sobre el marcador… hasta ahora e visto como crear cubos, cuadrados etc y modelos 3D… Por favor ayudeme como cargar una imagen sencilla… de antemano muchas gracias…

    Reply
  • Darkmatterial

    Hola Emilio te queria pedir ayuda,
    Estoy trabajando con un sketch en processing de AR, el problema es que no puedo ligar el modelo 3D con el marker. estoy trabajando con el NyAR2 de cpbotha para manejar varios markers a la vez pero el sketch no me reconoce: beginTransform() ni endTransform(). que puedo hacer?

    Reply
  • diego_r

    oye tambien funciona con camaras externas usb?? no he podido que me sirva aun.

    Reply
    • Emilio VegasPost author

      Sí, claro, funciona cámaras externas

      Reply
  • Victor Saez

    si no es mucha molestia me gustaría saber donde se puede descargar las librerias de opengl?, de ante mano muchas gracias 😉

    Reply
  • Sandro

    Hola, muy interesante esto,
    al verlo quise probarlo pero…
    me arroja el siguiente error
    java.lang.nosuchmethoderror: processing.opengl.PGraphicsOpenGL.beginGL()Ljavax/media/opengl/gl;
    junto con esto
    Exception in thread «AWT-EventQueue-0″ java.lang.NoSuchMethodError: processing.opengl.PGraphicsOpenGL.beginGL()Ljavax/media/opengl/GL;
    at mri.V3dsScene.(V3dsScene.java:161)
    at sketch_3D.setup(sketch_3D.java:87)
    at processing.core.PApplet.handleDraw(PApplet.java:2281)
    at processing.opengl.PJOGL$PGLListener.display(PJOGL.java:799)
    at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:590)
    at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:574)
    at javax.media.opengl.awt.GLCanvas$9.run(GLCanvas.java:1218)
    at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1036)
    at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:911)
    at javax.media.opengl.awt.GLCanvas$10.run(GLCanvas.java:1229)
    at javax.media.opengl.Threading.invoke(Threading.java:193)
    at javax.media.opengl.awt.GLCanvas.display(GLCanvas.java:492)
    at javax.media.opengl.awt.GLCanvas.paint(GLCanvas.java:546)
    at sun.awt.RepaintArea.paintComponent(Unknown Source)
    at sun.awt.RepaintArea.paint(Unknown Source)
    at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    Already called beginDraw()
    java.lang.NullPointerException
    at processing.mode.java.runner.Runner.findException(Runner.java:926)
    at processing.mode.java.runner.Runner.reportException(Runner.java:871)
    at processing.mode.java.runner.Runner.exceptionEvent(Runner.java:797)
    at processing.mode.java.runner.Runner$2.run(Runner.java:686)
    mi codigo es este
    import processing.video.*;
    import jp.nyatla.nyar4psg.*;
    import processing.opengl.*;
    import javax.media.opengl.*;
    import mri.*;
    import processing.core.*;
    //* Llamar a las clases
    Capture cam;
    NyARBoard mark1;
    V3dsScene vscene;
    //* Incorporar los códigos que van dentro de void setup
    void setup() {
    size(640,480,OPENGL);
    cam=new Capture(this,width,height);
    mark1=new NyARBoard(this,width,height,»camera_para.dat»,»patt.hiro»,80);
    mark1.setARClipping(100,1000);
    mark1.gsThreshold=120;
    mark1.cfThreshold=0.4;
    try
    {
    vscene = new V3dsScene( this,»tetera.3DS»);
    vscene.useMaterial( true );
    } catch( Exception e )
    {
    println( e );
    System.exit( 0 );
    }
    }
    //* Incorporar los códigos que van dentro de void draw
    void draw() {
    background(200);
    if (cam.available() !=true) {
    return;
    }
    cam.read();
    hint(DISABLE_DEPTH_TEST);
    image(cam,0,0);
    hint(ENABLE_DEPTH_TEST);
    if(mark1.detect(cam)){
    PGraphicsOpenGL pgl = (PGraphicsOpenGL) g;
    mark1.beginTransform(pgl);
    vscene.draw();
    mark1.endTransform();
    }
    }
    si es posible algun indicio del error porfi,
    por cierto muy buenos tutoriales, me quede pegado en la pagina XD

    Reply

Deja un comentario

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