Hace unos meses comenzé a utilizar Papervision3D. Es impresionante como el Core Team de Papervision3D está desafiando el rendimiento del Flash Player. Conociendo bien este motor de renderizado 3D, es posible hacer una infinidad de cosas, es posible crear back-ends tridimensionales dinámicos, es una innovación muy interesante. Ya he comenzado a estudiar Papervision3D.
Pongo a vuestra disposición los primeros experimentos que realizé.
- Construcción de un triángulo.
En este experimento aprendí a crear un TriangleMesh3D, el proceso es simple, cada punto en el espacio es una instancia de la clase Vertex3D, y las faces están basadas en estos puntos. La forma de mapear correctamente las faces lo explicaré más adelante.
Ver - Código Fuente - Mi siguiente paso fue crear un plano uniendo dos triángulos.
En Papervision3D ya existe la clase Plane, pero decidí hacerlo manualmente, con el objetivo de aprender a construir instancias de TriangleMesh3D.
Código Fuente - Luego empezé a experimentar para crear juegos 3D,
utilicé la clase Particles, para crear partículas, en cada vértice del plano que va girando sobre su propio eje. Las limitaciones que posee es el framerate muy bajo, es necesario optimizar el código, pero para una primera experiencia fue muy gratificante. Para rotar y moverse, puedes utilizar el mouse y las flechas del teclado.
Ver - Código Fuente - Mi siguiente experimento consistió en la construcción de superficies algebraicas, instanciando la clase TriangleMesh3D, y realizé mi primera integración de Tweener con Papervision3D en este experimento.
Para rotar y moverse, puedes utilizar el mouse y las flechas del teclado. Y presiona la tecla espacio para cambiar de objeto.
Ver - Código Fuente. - El experimento citado arriba simplemente juega con la profundidad del eje z, realizé una pequeña modificación de forma a que los componenetes x e y sigan una curva senoidal, y el componente z de cada punto realize la transición.
Algunos objetos son feos, otros raros, pero da una idea de lo que se puede hacer con un cuidadoso estudio matemático de las superficies a crear.
Código Fuente - Hay numerosas clases para crear materiales en Papervision3D, las pruebas basicas que he realizado con materiales utilizan los siguientes tipos de materiales:
flatShadedMaterial
gouraundMaterial
phongMaterial
cellMaterial
envMapMaterial
Para visualizar los tipos de materiales citados arriba, debes volver a compilar el código fuente debes habilitar los códigos que están como comentarios.
Código Fuente - Me resultó interesante realizar una pequeña integración de sonido con materiales.
Código Fuente - Este último ejemplo de cubos y esferas en Papervision3D fué muy facil de realizar, pues simplemente utiliza objetos primitivos.
Código Fuente
Este es mi primer post sobre Papervision3D, escribiré con bastante frecuencia sobre esta temática.



Español
17 March 2009 at 9:59
Hola!!!
Está demás decirte que tu blog está simplemente G E N I A L!!!!
Te felicito por tan lindo e interesante emprendimiento. Estuve leyendo algo de tu trabajo…está súper bueno, aunque entienda casi nada al respecto jejeje, pero bueno eso se puede aprender
Éxitos!!
6 July 2009 at 17:44
exelente trabajo, felicidades!
24 September 2009 at 2:38
Nice site!
12 July 2010 at 22:37
Hola, saludos desde México, estan muy interesante tus artículos sobre PaperVision….. algún tutorial que recomiendes y creas que es conveniente para empezar =).
Saludos!
13 July 2010 at 5:06
Hola, muchas gracias!
Para empezar, podrías leerte este post
http://www.david5.com/interfaces-tridimensionales-en-los-navegadores-de-internet-papervision3d/
y también ver los ejemplos de código del sitio http://pv3d.org/ , allí hay muchos ejemplos interesantes.
Un saludo.
27 July 2010 at 20:14
Muy bueno esta tu blog David! te felicito por el emprendimiento. Creo que ambos tenemos la misma idea, jajajajaja (vos me entendes):P
12 August 2010 at 22:16
Hola David, como estas? Mi nombre es Rodolfo Vegas, Licenciado en Computación, de Valencia - VENEZUELA. Actualmente estoy haciendo mi tesis doctoral que consiste en una aplicación web hecha en flex que lea unos archivos de extensión c3d y a partir de los datos que consiga de ese archivo hacer una simulación en 3d.
Te explico, en algunos hospitales existen laboratorios de marcha, en esos laboratorios van pacientes con enfermedades neuro musculares, los doctores les colocan una serie de sensores alrededor de su cuerpo y la persona va caminando con esos sensores en su cuerpo, hay un sistema que recibe esa señal y va almacenandolo en los archivos que son los c3d.
Mi sistema fuyncionaría así: un médico registrado en el sistema escoge un archivo c3d, el sistema le proporcionara unos datos y nas graficas y a parte la simulacion en 3d de una personas con los sensores caminando sobre el plano y eso es lo que yo quisiera hacer en papervision, las coordenadas y el tiempo que va una persona caminando ya los tengo pero lo que no se hacer es la simulación y se que papervision es una aplicación para hacer aplicaciones en 3d, de verdad te agradecería que me ayudaras en esto, como te dije antes soy nuevo en esto y no tengo experiencia, lo mio es java, c++, opengl pero bueno me toco hacerlo web y en flex. Gracias!!!!
15 August 2010 at 7:58
@laura: Gracias Lau! Espero que los ejemplos te sean útiles. Un saludo!
@Rodolfo: Tu tema de tesis está buenísimo. Si, se puede integrar flex con papervision3D, aqui encontraràs una pequeña integración de ambos:
http://www.david5.com/rigid-spheres-with-jigliflash-and-papervision3d/
Lògicamente, en tu trabajo la integración será mucho más compleja, pero dicho link te podría servir como punto de partida en dicha integración.
Con tu experiencia en java, c++ y opengl avanzarás muy rápido en este nuevo entorno. Podrías usar java del lado del servidor (con blazeDS por ejemplo), y si tienes código o bibliotecas en C o C++ que son de interés para tu proyecto podrías reutilizarlos ejecutándolos directamente en la máquina virtual Flash player gracias a Alchemy. Y el aprendizaje de PV3D será sencillo si conoces opengl. Para el proceso de aprendizaje de las herramientas que necesitas, te recomiendo iniciarte en AS3, luego pasas a PV3D, luego pasas a Flex y allí lo vas integrando con tu lenguaje del lado del servidor (java por ejemplo), y finalmente Alchemy, si es necesario.
Te recuerdo que PV3D tiene aceleración 3D por software, no por hardware como opengl, por lo tanto, podrás renderizar hasta 3000 o 5000 triángulos a la vez, dependiendo principalmente de que materiales y shaders utilizes. Siempre Alchemy y PixelBender serán tus aliados en caso de que necesitas cálculos que tengan un alto costo computacional para tu simulación, pero creo que tendrías que preparar las bibliotecas complementarias que necesites para esos casos. Si necesitas algo realmente potente te recomiendo utilizar Unity3D. Lo bueno de PV3D es la ubicuidad del Flash Player, en ese punto Unity3D falla.
Los archivos c3d los manipularías con los paquetes COLLADA de PV3D. Sería bueno que investigues si soporta dicho formato.
Hace un buen tiempo me tocó hacer una simulación de fluidos en PV3D,
http://forum.papervision3d.org/viewtopic.php?f=9&t=590
no lo terminé por falta de tiempo, pero por la experiencia que tuve en dicho experimento, podría decirte de que si es posible hacer simulaciones 3D via web con Flash/Flex, el desafío estará siempre en la optimización de tu código.
Suerte con el proyecto! Un saludo.
4 January 2012 at 14:26
Wow, great post! Well-written, informative and eye-opening. Will definitely be checking out your blog more in the future