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
- 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.
- 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 - 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.
- 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.
- 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();
}
}
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.
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 🙂
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!
listo gracias Emilio…
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.
😀
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?
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 😀
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!
agregado 🙂
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.
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!!!
Mri es la librería para importar 3ds.
http://www.pixelnerve.com/v/2009/01/01/3ds-loader-for-javaprocessing/
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!!!!
Ya no te preocupes se resolvio todo, me descargue una libreria mala, ahora va todo bien
GRACIAS!!!
jejeje Lo bueno es que lo hallaste tu sólo. Eso demuestra tus ganas de aprender.
Adelante! 🙂
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!!!!
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!
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!!!!
Qué raro… mandame un email con tu sketch. Mi correo está al lado derecho de mi blog.
Saludos!
Ya te lo envie a tu mail
gracias por tu ayuda y apoyo!!!
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
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.
Tienes mucha razon, por motivos de seguridad se restringen priviligios a los applets, y para esto debemos firmarlos digitalmente, para esto podemos usar el mismo JDK, aca algo que puede ayudar
http://monillo007.blogspot.com/2009/03/como-y-por-que-firmar-los-applets-java.html
explica como se debe hacer esto y no tener problemas de restriccion de nuetro applet
seguire investigando y en contacto con vos!!!
Es un buena alternativa. No había escuchado eso de firmar los applets. Me pondré a investigar. Gracias por el dato!
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!
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!
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!
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
Es raro. Igual seguiré investigando.
Saludos!
Vale si encuentras algo me avisas
Atte
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
Genial!!!! 😀 sigue practicando! Te ayudaré cuando quieras 😀
* 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.
Hola Kinoii. Gracias por visitar mi blog.
Para mostrarte un poco como usar incorporar elementos 3d hechos en blender (texturas incluídas) te paso un video de mi conferencia en donde expliqué como hacer eso. http://diariowm.wordpress.com/2010/12/04/mi-exposicion-en-blendercamp/
hola emilio
como o con que programa hago mis propios marcadores
Hola Juan en un breve post lo voy a explicar. Te avisaré por correo. Saludos!
Saludos
Existe alguna forma de asignarle tamano al objeto 3DS, desde processing o ya viene asignado desde el 3d max
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!
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
Hola Diego… puedes explicarme un poco más que es lo que necesitas. No termino de entenderte. Saludos
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
Hola Juan. Lo que pasa es que tienes que incluír la librería. Te recomiendo que trabajes con otros ejemplos básicos, así como el tutorial inicial.
Este link tambíen te servirá: http://diariowm.wordpress.com/2011/03/13/processing-nociones-para-trabajar-con-ar/
Saludos
Hola estoy probando el ejemplo que has dado, pero me sale el error:
VerifyError: (class: jp/nytla/nyar4psg/singleMarkerBaseClass, method: update Transmat signature
Hola Gerrit. Puedes mandarme un print! Para poder observarlo.
Gracias!
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();
}
}
Todo el código parece andar bien. Lo que puedo deducir que no haz integrado la librería nyartoolkit de forma correcta.
Aca puedes guiarte. Saludos
http://diariowm.wordpress.com/2011/03/13/processing-nociones-para-trabajar-con-ar/
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
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! 🙂
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..
Hola Jose! EL windows xp corre normal con processing. Yo tengo xp tb 🙂
Aqui está el link de nyartoolkit para processing http://nyatla.jp/nyartoolkit/wiki/index.php?NyAR4psg.en
Aqui te dejo un link de como agregar la libreria a tu sketch http://diariowm.wordpress.com/2011/03/13/processing-nociones-para-trabajar-con-ar/
Tambien te dejo el tutorial basico de realidad aumentada con processing http://diariowm.wordpress.com/2010/04/13/tutorial-realidad-aumentada-processing/
Saludos
ok muchas Gracias Emilio por el dato.. me sirvio ahora ya veo el cubo en la cam.. pero ahora debo darle rotacion.. en uno de tus tutoriales vi que lo hacias con un logo de blender hecho en la misma aplicacion blender.. me gustaria saber si me facilitarias esas lineas de codigo para mi proyecto.. te estaria agradecido..
gracias nuevamente
el código para rotacion es fácil. incluyelo despues de nombrar el objeto en la parte de void draw y es: rotation = 8.
buscalo en códigos que dejo posteado en mi blog. allí encontraras varios rotation y te ayudaran a entender mejor.
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
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
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)
Hola Diego.
Por lo general esa función si te sale error debe ser por la textura. Has usado alguna?
Comentame más
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…
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?
oye tambien funciona con camaras externas usb?? no he podido que me sirva aun.
Sí, claro, funciona cámaras externas
si no es mucha molestia me gustaría saber donde se puede descargar las librerias de opengl?, de ante mano muchas gracias 😉
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