Inicio > Programación > Agua animada con Blender y Java 3D (parte 1)

Agua animada con Blender y Java 3D (parte 1)

Bueno, en uno de mis proyectos de la U me tocó representar agua en Java 3D. Buscando entre unos ejemplos (muy buenos) disponibles aquí encontré uno sobre transformar una figura tridimensional en otra. Empecé a estudiar el ejemplo y vi que es posible cargar archivos de tipo .obj (archivos de texto con coordenadas tridimensionales que representan objetos) desde Java 3D. Entonces pensé en crear distintas mallas de agua ligeramente diferentes y transformar una en otra para simular las ondulaciones del agua.

Lo difícil era entonces crear esas mallas. Y aquí entra Blender. Es posible exportar figuras como archivos .obj. Y mejor aún, existe una manera muy simple de crear estas mallas en minutos. Eso sí, las simulaciones de superficies de agua hechas con Blender que se encuentran en internet suelen valerse de texturas, que no se exportan adecuadamente porque la sintaxis de los archivos .obj de Blender no es soportada por completo por Java 3D, entonces lo mejor es usar una malla (grid) "moldeada" como una superficie de agua. Pero en serio, es muy fácil.

Lo primero es obvio, eliminar el cubo que viene por defecto en el archivo nuevo de Blender. Sugiero tener cuidado de no mover el cursor para que todo lo que se cree aparezca en el centro. Y luego se agrega un objeto "Grid" (la malla que se va a moldear).

También se deben eliminar la cámara y el foco que vienen en el archivo nuevo. De verdad, no son necesarios en Java 3D, pues tiene su propia forma de lidiar con la vista y la iluminación.

Para la malla se va al menú Add > Mesh > Grid. Luego Blender solicita las dimensiones, sugiero que ambas sean menores a 100, alrededor de 50 funciona bien. Éste es el resultado, con la vista "Top" (por defecto).

Luego se cambia a cualquier vista que permita ver a la malla horizontalmente. Yo uso la frontal.

La razón es que es mucho más fácil lograr un desplazamiento únicamente vertical para las siguientes transformaciones que hay que hacer. También recomiendo aumentar el zoom para que la malla ocupe casi todo el ancho de la ventana. Esto permite ver las líneas de medición que proporciona Blender y permite calcular mejor el desplazamiento necesario.

 

Lo siguiente es cambiar el modo de la vista de "Object Mode" a "Edit Mode". Eso se puede hacer con la tecla Tab. Posteriormente se deselecciona todo, con la tecla A. Habiendo hecho esto se va al menú Select > Random… Recomiendo usar el 50% que está por defecto.

Esto selecciona la mitad de los puntos que componen la malla al azar. Lo que resta es tomar la flecha de la selección que apunta hacia arriba (flecha z) y arrastrarla hacia arriba o abajo. Ojo, no mucho. Luego se deselecciona todo de nuevo con A y se vuelven a seleccionar la mitad de los puntos al azar. Luego se toma de nuevo la flecha de z, pero se mueve en la dirección opuesta a la anterior.

El resultado es una bonita superficie aleatoria que, si no somos muy exigentes, pasa por agua.

 

 

 

 

La renderizada no es necesaria, lo que sigue es exportar la malla.

Para exportar se va al menú File > Export > Wavefront (.obj)… Luego se selecciona la ubicación y nombre del archivo (es un poco confuso) y hecho esto, recomiendo deseleccionar todas las opciones que aparecen. De nuevo, esto se debe a la sintaxis del archivo que se genera. Sería necesario hacerle cambios para que funcione en Java 3D si se exportara cualquier otra cosa.

 

Todo el proceso se repite dos veces más, de modo que el resultado final son tres archivos .obj. Para facilitar su uso con Java todos deben tener el mismo nombre, seguido de un número. Los números deben ser correlativos (lo mejor es usar 0, 1 y 2, por ejemplo Agua0.obj, Agua1.obj y Agua2.obj).

En la siguiente parte explicaré a grandes rasgos la utilización de estos archivos y cómo transformarlos para hacer la animación del agua.

Anuncios
Categorías:Programación
  1. Talo
    17 octubre, 2008 en 11:29

    Vos disculpa sera que no tenes la segunda parte

  2. Talo
    17 octubre, 2008 en 11:31

    Por cierto gracias por la guia esta muy buena

  3. Jorge Raúl
    19 octubre, 2008 en 14:15

    Gracias, espero que te haya servido. El ejemplo terminado está aquí.
    Cuando pueda publico la segunda parte con más detalles.

  4. Sigifredo
    15 febrero, 2009 en 05:39

    Muchas gracias por la información. Esta muy bueno el articulo.

  1. 20 diciembre, 2010 en 11:18

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: