Alguns meses atrás eu comecei a estudar o motor de render chamado Papervision3D. É impressionante observar como o Core Team de Papervision3D está desafiando o desempenho do Flash Player. Conhecendo bem este motor de renderização em 3D, e pode fazer um monte de coisas legais e inovadoras, você pode criar back-ends tridimensionais dinâmicos. Isso é uma inovação muito interessante. Eu já comecei a explorar Papervision3D.
Coloco a sua disposição os meus primeiros experimentos realizados.
- Construção de um triângulo 3D.

Neste experimento, aprendi a criar um TriangleMesh3D, o processo é simples, cada ponto no espaço é uma instância da classe Vertex3D, e as faces são baseadas nestes pontos. A maneira de fazer um mapeamento correto, vou explicar-lo em outro post.
Visualizar. Código fonte.
- Meu próximo passo foi a criação de um plano,
com a união de dois triângulos. Em Papervision3D já existe na classe primitiva que faiz planos, mas eu decidi fazê-lo manualmente, com o objetivo de aprender como construir instâncias de TriangleMesh3D.
Visualizar. Código Fonte.
- Depois, comecei a experimentar com criaçao de um simples, mais muito simple jogo 3D,
utilizei a clase Particles para criar partículas em cada vertice do plano, que vai girando em torno do seu eixo. As restrições que encontrei foi um framerate muito baixo, é necessário otimizar o código, mas para uma primeira experiência foi muito gratificante. Para girar e mover a cámera, você pode usar seu mouse e as setas do teclado.
Visualizar. Código Fonte.
- Meu próximo experimento consistiu na construção de superfícies algébricas instanciando a classe TriangleMesh3D,
e fiz a minha primeira integração de Tweener com Papervision3D neste experimento.
Para girar e mover, você pode usar seu mouse e setas. E pressione a tecla de espaço para mudar de assunto.
Visualizar. Código Fonte.
- O experimento acima citado, simplesmente brinca com a profundidade do componente do eixo z das instancias Vertex3D, fiz uma pequena modificação para que os componentes x e y possam seguir um patrão sinusoidal.
Algums objetos são feios, algums deles bem raros, mas dá uma idéia do que pode ser feito com cuidadoso estudo matemático de superfícies.
Visualizar. Código Fuente.
- Existem várias classes de criar materiais em Papervision3D, os testes básicos utilizam os seguintes tipos de materiais:
flatShadedMaterial
gouraundMaterial
phongMaterial
cellMaterial
envMapMaterial
Para ver os tipos de materiais listados acima, você deve voltar a compilar o código fonte você debe habilitar, um de cada vez, as linhas de código que aparecem como comentários.
Visualizar. Codigo Fonte. - Eu estava interessado em fazer uma pequena integração de som com materiais en Papervision3D.
- Este exemplo de cubos e esferas em Papervision3D foi muito legal,
e muito fácil de realizar, porque somente utiliza objetos primitivos.
Visualizar. Código Fonte.
Este é o meu primeiro post sobre Papervision3D, vou escrever com frequência sobre este tema.



Português
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