lunes, 21 de junio de 2010

Guerrer de Moixent: javascript (3DNP) - I parte

Introducción de elementos tridimensionales en la web sin necesidad de aplicaciones externas

Exvoto de bronce que representa un guerrero a caballo. La Bastida de les Alcusses (Moixent, Valencia).
Este trabajo puede consultarse en su ubicación definitiva en la página oficial del Museu de Prehistòria de València.
Puedes manipular el objeto de tres maneras:
  1. A través de los botones de la interfaz gráfica situada en la parte superior.
  2. Con el ratón, moviendo el cursor sobre la imagen (sin necesidad de hacer clic) y utilizando la rueda del ratón para ampliarla o reducirla.
  3. Por medio del teclado con las teclas W (arriba), S (abajo), A (izquierda), D (derecha).

Hugh Laurie
Ficha Técnica:

A) Guerrer de Moixent:
- Modelado, texturizado y composición: Blender 2.5
- Animación y ejecución del script: Blender 2..49b
- Render: Internal de Blender 2.5
- Postproducción: Blender 2.5 y Gimp 2.6.8

B) Modificación del script "3DNP":
- Gedit y Kompozer 0.8
- Análisis de errores mediante "Developer Tools" de Google Chrome y la "Consola de errores" de Firefox.

C) Diseño de la interfaz gráfica:
- Inkscape 0.47 y Gimp 2.6.8

Algunos Detalles:

La integración de contenidos tridimensionales en Internet siempre me ha parecido una cuestión interesante porque puede ayudar a mejorar la experiencia del visitante en una web, al permitirle la interacción directa con objetos virtuales, proporcionando información de una manera muy dinámica y atractiva.

Durante un tiempo he estado investigando sobre distintos recursos que reunieran alguna de estas tres condiciones:
- No ser necesaria la instalación de "plugins" o aplicaciones externas por parte del usuario.
- Ser compatible con la mayoría de navegadores existentes.
- Ser preferiblemente "Open Source" o "Free".

En este sentido, ya hace algún tiempo había  probado soluciones como 'VRML' o 'QTVR' y había visto algunos ejemplos realizados con 'Papervision 3D' en 'Flash'. Sin embargo, ninguno de estos formatos me satisfacía completamente, ya que era necesaria la instalación de aplicaciones de terceros, en la mayoría de los casos con "software propietario". Además, todas estas reticencias se veían aumentadas por los problemas de instalación en múltiples plataformas, así como por el rechazo de la gente a instalar cosas en su ordenador, hecho bastante comprensible si tenemos en cuenta la cantidad de aplicaciones sospechosas que circulan por la Red.

De este modo, dirigí mi vista a la plataforma 'java': la extensión 'java 3D' y la interfaz 'Java 3D API', para la que existe una comunidad de desarrollo que ha realizado estos interesantes ejemplos o estos otros experimentos en Chrome (sin embargo, muchos otros ejemplos no he podido visualizarlos correctamente). Así pues, aunque creo que en un futuro no muy lejano veremos grandes avances en esta dirección, la falta de ejemplos suficientemente "estables" y fáciles de implementar en una web normal, me llevaron a seguir indagando a la búsqueda de algo más sencillo.

Entre los múltiples recursos encontrados, los que más me llamaron la atención fueron:
- Demicron, un programa para publicar contenidos 3d en java y que tiene algunas versiones de prueba.
- 3DNP, un sencillo pero potente visor 'javascript' desarrollado por Thorsten Schlüter. Esta fue mi elección a la hora de realizar este trabajo, por las razones que expongo a continuación:

Este estupendo script reúne muchas de las cualidades que buscaba: no necesita ningún tipo de instalación, es compatible con la mayoría de navegadores y fue desarrollado bajo una licencia GNU pública (GPL), por lo que su uso es libre. Además, permite realizar modificaciones para implementar nuevas funciones, siempre respetando las condiciones de la Licencia. En mi caso, he añadido  y modificado algunas líneas de código para crear un pequeño "zoom in/out" a las imágenes, así como una interfaz básica para poder controlar también el visor mediante botones.

Otro punto a favor de 3DNP, es su integración en Blender mediante un script (de momento sólo funcional en 2.49, si alguien se anima puede adaptarlo a la versión 2.5) que permite crear la secuencia de imágenes que compondrán la visualización en 3D. Posteriormente el 'javascript' se encarga de capturar esas imágenes y componer una matriz que pueda ser visualizada en en nuestro navegador web.

Blender
Blender
Existe un excelente tutorial de Joaquín Herrera (Joaclint Istgud) en el que explica, paso a paso, cómo utilizar 3DNP en una escena con Blender. En principio, no tiene mayor dificultad puesto que se trata de crear tu objeto, importarlo a una escena predefinida que proporciona el propio Thorsten y ajustar distintos parámetros. En mi caso, di un pasito más allá, ya que "bakeé" la animación de la escena para poder ajustar la iluminación, el postprocesado y el render con Blender 2.5.

Blender Sculpt
Blender
En una próxima entrega y para no alargar mucho esta entrada explicaré algo más sobre el proceso y pondré a disposición pública los archivos modificados.
Saludos a tod@s

jueves, 3 de junio de 2010

Hugh Laurie (House M.D)

Ejercicio de modelado con la herramienta "sculpt", shaders y postproducción en Blender donde se ha tomado como referencia a este famoso actor.

Hugh Laurie



House M.D - Hugh Laurie -
Sculpting test in Blender 2.5
de Angel en Vimeo.

Ficha Técnica:

- Duración: 46"; resolución fotogramas: 1280x720; 25 fps
- Modelado, texturizado, animación, composición: Blender 2.5
- Render: Internal de Blender 2.5
- Postproducción: Blender, Gimp y Photoshop
- Montaje y Edición de Vídeo: Blender 2.5
Fotograma HouseFotograma HouseFotograma House
Captura de algunos fotogramas

Detalles sobre el "making of":

En este proyecto he decidido cambiar de aire y de estilo con respecto a mi anterior trabajo para experimentar con algunos aspectos de Blender que tenía más abandonados. El objetivo de la prueba ha sido la herramienta "sculpt" de Blender, así como la profundización en los "shaders" para piel e iluminación interior. Siguiendo con el flujo de trabajo de mis anteriores proyectos, toda la postproducción de la animación ha sido realizada utilizando el sistema de nodos de Blender, aunque he empleado Gimp y Photoshop para retocar la imagen estática de mayor calidad. A continuación, pasaré a detallar algunos detalles:

En cuanto a la herramienta "Sculpt", es cierto que tiene un gran potencial pero también que necesita de un ordenador capaz de trabajar de un modo fluido con elevados niveles de subdivisión de superficie. En este caso alcancé los 4 niveles de subdivision sobre una malla base de un antiguo modelo masculino que ya tenía (Ve: 8544352 | Fa: 8538944).
Sin embargo, creo que el gran problema es que mientras en determinadas zonas se alcanza un nivel de detalle suficiente para trabajar poros y arrugas, en otras habría que seguir subdividiendo el modelo completo para llegar a ese nivel de detalle. Naturalmente, más subdivisiones equivalen a una menor fluidez en el trabajo, lo cual no ayuda mucho a conservar los nervios y nuestra salud mental.

Sin embargo, parece que soplan nuevos aires en el desarrollo del "Sculpt": existe un proyecto de Farsthary para incorporar en Blender ciertas características que posee el programa Sculptris como la subdivisión "on the fly", lo cual ayudaría mucho a mejorar esta herramienta, ya que permitiría subdividir determinadas detalles concretos de la malla sin tener que añadir una nueva subdivisión general. Ahora bien, en el aire quedan algunas incognitas sobre su compatibilidad con el modificador "Subdivision Surface" o si finalmente llegarán a buen puerto y se incorporarán en una versión definitiva.

De momento, como ya se hacen eco en 3dpoder, ya circulan algunas compilaciones de Unlimited Clay para linux 32/64 en GraphicAll.org, así que si alguien quiere ponerse a experimentar con ellas ahora es el momento (yo ahora mismo no puedo, pero en cuanto tenga un hueco lo haré).

Blender Sculpt

Blender Sculpt
Respecto al tema de "shaders" de piel, no es ninguna novedad que la incorporación del SSS (Subsurface Scattering) en Blender supuso un gran avance, lo cual combinado con el propio potencial de los materiales y los nodos te permiten lograr unos resultados bastante decentes. Ahora bien, que nadie espere unos resultados milagrosos, siempre toca jugar con los parámetros del material y pelear bastante en el apartado de iluminación para conseguir algo convincente.

Blender Nodos
El apartado de post-producción como en mis anteriores trabajos ha sido propiedad del sistema de nodos de Blender. En este caso algo de DOF y Glow (ajustado mediante una máscara). Por cierto, por si alguien se lo pregunta, los efectos de "ruido" de TV y la radiografía han sido realizados mediante la animación directa de texturas.

Saludos a tod@s

AddThis