31 ago. 2014

Trabajando con el Modificador Ocean en Blender 2.71 / Primera Parte

En este tutorial mostraré cómo simular un océano realista en Blender 2.71. Para ello me basé en los videotutoriales que aparecen al final de este escrito. Los mencionados videotutoriales están muy bien explicados pero mi idea es tener esta información escrita para acceder también a ella de otra forma, quizás más rápida. Pero claro, al resumir los pasos se pierde bastante de información, por lo cual los dos instrumentos se complementan.
El océano será simulado usando el modificador que trae el Blender y que se denomina Ocean. El mismo cuenta con dos opciones que son la de Generate y la de Displace. Las mismas se trabajarán por separado para ver la principal diferencia que es básicamente, haciendo un gran resumen, de tamaño de la malla generada y por consiguiente de diferencias en los tiempos de renderizado y animación.

Océano realista en Blender 2.71

Comienzo del Tutorial

Lo primero que hacemos es seleccionar el cubo por defecto y aplicar el modificador Ocean. El mismo se encuentra en la parte de modificadores, en el cuadrito que muestra una llave:

Aplicando el modificador Ocean con Blender
De esta manera se generará un plano que por defecto tiene las propiedades que se ven a continuación:


Como se aprecia, las dimensiones son de 50 unidades de Blender de lado, por lo cual el plano es de 50 metros cuadrados. Lo primero que podemos hacer antes de modificar las unidades es animar por defecto. Para ello, nos posicionamos en el fotograma 1 e insertamos un Keyframe (presionando i) en la variable Time. Luego avanzamos a determinado fotograma, por ejemplo al 250, y modificamos el valor del tiempo a 6 e insertamos otro Keyframe. Ahora al animar (ALT + A) veremos cómo se mueve el plano como si fuera ya una masa de agua. Depende del valor que le coloquemos el grado de movimiento de la masa acuosa. Si es un valor pequeño se moverá lentamente, como si fuera una gran extensión de agua.
Para que el movimiento sea uniforme nos dirigimos al Graph Editor y le asignamos Interpolación Lineal a la variable animada tiempo:

Animando el modificador Ocean de Blender 2.71

Como se dijo, el modificador se puede aplicar de dos formas, como Generate o como Displace. Primero nos centraremos en la opción Generate. Y a continuación analizaremos las principales variables de las que disponemos.

Trabajando con la opción Generate


Repeat X e Y

Esta opción repite el plano del océano en los dos ejes cartesianos mencionados. Es bueno por un lado para hacer más grande el plano del océano, pero por supuesto el tiempo de renderizado y animación se hacen cada vez mayores si repetimos varios valores en X y en Y. También, la repetición es exacta al movimiento del plano original.

Depth


Este parámetro maneja la profundidad de los movimientos controlados en el Time. Si colocamos un valor de 0 no habrá movimiento de agua. A medida que elevamos el valor se generará más amplitud de movimientos. Es cuestión de experimentarlo. Por defecto trae un valor de 200 metros.

Resolution


Este es el grado de subdivisiones del plano del océano. Cuanto mayor, mejor. Todo dependerá de la velocidad de la pc que tengamos.



Size y Spatial size


Estas dos variables controlan el tamaño del plano base del océano. Se notará que al aumentar los valores, las olas se hacen más espaciadas y con menor profundidad. 

Random Seed


Desde aquí se controla la generación aleatoria de la simulación inicial. Se verá que cada uno tiene un movimiento distinto de la masa de agua. Esto es útil en caso de que tengamos que hacer varias tomas de un océano y necesitemos, claro está, aleatoriedad en el arranque de la simulación.

Ahora vienen quizás los más interesantes

Choppiness


Este parámetro controla el encrespamiento del agua. Si le colocamos un valor cero, no habrá movimiento lateral de la malla. Esta variable se comprenderá mejor mirando desde arriba la malla con pocas subdivisiones (Resolution baja). Notaremos que si colocamos el valor de Choppiness en cero, los cuadros no se deformarán en el plano XY, sólo en el Z. 

Alingnment


Controla la alineación de las olas. Un valor distinto de cero nos permitirá controlar cómo se mueve el agua lateralmente. Por ejemplo, si le ponemos 10, el oleaje se desplazará en una sola dirección aproximadamente.

Direction


Una vez puesto un Alignment distinto de cero, podremos modificar el ángulo de incidencia del oleaje.

Scale


Este valor controla la intensidad de las olas, a mayor valor más amplitud o dureza de las olas. De manera que aquí se puede controlar el doblez o rulo característico que realizan las olas en cercanías de la playa o cuando hay mucho viento. 

Claro que el truco consiste en combinar los parámetros. Si el Scale es demasiado abrupto por así decirlo, lo suavizaremos con el Choppiness, por ejemplo hasta dar con la combinación que nos agrade.

Damping


Esta variable es interesantísima y aporta el rebote del agua sobre sí misma, cuando se encuentran dos sistemas de olas. Nada mejor que experimentarlo en la animación para entenderlo. Un valor cercano a cero sería el característico del mar abierto

Wind Velocity


La velocidad del viento se controla desde este parámetro. Aunque es un poco confuso (al menos para mí) entender cómo funciona. Dado que valores cercanos a cero hacen grandes cambios pero luego ya la variación es imperceptible a partir de quizás 10 o 15. 

Generate Foam


Es para colocar espuma sobre las olas. Se puede apreciar cómo cambia el aspecto seleccionando en Shading, Multitexture, Textured Solid y luego aumentanto o disminuyendo el valor de Coverage:

Agregando espuma al océano creado en Blender

Y hasta aquí la parte de la opción Resolution. Ésta tiene una limitación la cual es que si se quiere hacer un océano grande, mostrando la distancia al horizonte, se deberá subdividir bastrante y si no tenemos una máquina buena el renderizado y la animación se harán muy pesados. Por lo cual viene la segunda parte, que es trabajar con la opción Displace. En ella, todas las variables mencionadas arriba funcionan de igual manera.

Trabajando con la opción Displace

Comenzamos agregando un plano de 2 unidades de lado y aplicamos el modificador Ocean con los valores que trae por defecto. Pero le colocaremos la opción Displace. Notaremos que el plano queda con el tamaño inicial. Aquí podemos escalarlo a la medida deseada. Por ejemplo, a las 50 unidades que aplica el modificador Ocean en la opción Generate. Si luego de escalar queremos fijar la escala en 1, presionamos CTRL + A y seleccionamos Scale. Luego lo subdividimos 10 veces:

Modificador Ocean Displace en Blender 2.71

Antes del modificador Ocean colocamos un Subdivision Surface Simple



Ahora nuevamente fijamos Keyframes para animar el océano. Voy a colocar aquí valores muy similares a los mostrados en los videotutoriales citados. Pero por supuesto que es opcional.

Lo primero que haremos será fijar la cámara en un borde y escalarla hasta un valor grande. Esto se hace para ver cuál es el campo de acción de la cámara y no desperdiciar océano. Cuanto menor sea la superficie del océano más resolución le podremos dar optimizando con la velocidad de nuestro equipo. También, como la visión cercana del océano es la que mejor resolución tiene que tener, allí subdividiremos el plano más que en las cercanías del horizonte.


No hay que olvidar aumentar la visión de la cámara porque de lo contrario no se verá el horizonte.
Para que en el horizonte se vea muy poco oleaje, hay que ampliar la malla longitudinalmente.



Una vez hecho lo anterior, comenzaremos a aumentar las subdivisiones en las cercanías de la cámara:

Subdividiendo la malla para aumentar resolución del modificador Ocean

Ahora ajustamos los parámetros del modificador como mejor nos parezca.


Movimiento de la cámara



Para dar más realismo a la escena marítima se puede mover la cámara aleatoriamente (como lo hacen en uno de los videotutoriales citados). Para ello usamos el Graph Editor y le agregamos ruido (Noise) a las variables rotación y locación por separado.



Esto es todo probar, pero en general son valores pequeños pues el movimiento de la cámara no puede ser demasiado brusco.
Y aquí ya estamos en condiciones de renderizar desde el botón Render Active Viewport para detectar si hay algún error en la animación. Pues luego una vez puestos los materiales y demás se animará muy lento y no queremos perder varias horas de renderizado y notar que se nos pasó algún detalle. Entonces, creamos un subdirectorio y renderizamos:

Vista previa de la malla terminada usando el modificador Ocean de Blender

En el siguiente video se aprecia el resultado de esta primera parte del trabajo:

Video de muestra:




Y hasta aquí llega esta primera parte del tutorial. Para ver la siguiente parte visitar:


Cualquier pregunta o sugerencia serán bienvenidas.

Pf: Mariano Miguel Lanzi

Videotutoriales fuente:
Tutorial Blender modificador océanos
How to simulate an Ocean 1
How to simulate an Ocean 2
Realistic Ocean Tutorial

No hay comentarios: