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();

}
}

84 COMMENTS

  1. 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

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

  2. 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?

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

  3. 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!

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

  4. 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

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

      • 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!! :))

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

          😀

  5. 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?

  6. 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!

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

  7. 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)

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

  8. 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!!!

  9. 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!!!!

  10. 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!!!!

  11. 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!!!!

  12. 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!!!!

    • 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

  13. 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!!!!

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

  14. 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.

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

  15. 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

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

      Saludos!

  16. 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

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

  17. 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

  18. 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

  19. * 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.

    • 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

      • Hola Rene.

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

        Saludos!

  20. 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

  21. 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

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

      • 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();

        }
        }

  23. 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

    • 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

  24. 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 );
    }

    • 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! 🙂

  25. 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..

  26. 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

    • 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

  27. 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?

    • 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

      • 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

  28. 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)

  29. 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…

  30. 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?

  31. 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

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.