![]() |
WORKING WITH PROCEDURALS |
|
|
|
Esta imagen no es que sea una escena impresionante, pero tiene una particularidad que la hace especialmente atractiva: Para conseguir ese resultado no se ha usado ni una sola textura de mapa de bits.
En su lugar se han utilizado sólo procedurales evitando además tener que realizar un mapeado UV complejo tal y como hubiese requerido en su versión con mapas de bits.
(El archivo escena está disponible aquí para poder consultar los pequeños detalles que no se hayan descrito en este artículo)
Vamos a aprender cuanto potentes son los procedurales además de algunos conceptos básicos de iluminación/shading.
|
|
|
|
Situaremos primero la luz principal. Es importante no situar la luz frontalmente (a menos que se busque este efecto) ya que las zonas de sombra son tan importantes como las zonas de luz mientras que la luz frontal deja pocos espacios en sombra resultando una imagen demasiado plana.
|
![]() |
|
Ahora haremos una simulación rápida de Iluminación Global usando unas pocas luces Omni en disposición de semi-esfera para cubrir la escena desde todos los ángulos. Es más cómodo usar una luz "maestra" siendo el resto Instancias de dicha luz de modo que modificando el valor de la luz "maestra" el resto se ve actualizado automáticamente. (este sistema se puede consultar con detalle en el archivo escena) El resultado no es tan realista como la IG real, pero es muchísimo más rápido y en muchos casos es más que suficiente.
|
|
|
|
Vamos a empezar con el texturizado. Para ello, en el total de la escena usaremos: -Noise- para crear patrones irregulares de ruido tanto en los colores de los materiales como para las máscaras de especularidad. -Gradient- para crear un falso cielo muy básico. -Fresnel- para filtrar las reflexiones. -Fusion- Para mezclar texturas. -Effects- de donde obtendremos el efecto -Ambient Occlusion- y -Surfaces- (tiles) para el patrón de lineas la base de la escena.
|
|
|
|
|
|
|
|
Para los cables y la base usaremos un ruido procedural para la propiedad color (FBM en este caso) al cual aplicaremos variaciones de color para cada uno de los elementos.
Como el plástico es un material reflectivo activaremos la reflexión, pero en lugar de activarla con un color sólido o un mapa de bits, cargaremos la propiedad -Fresnel-. -Fresnel- es en realidad un efecto físico por el cual las caras más perpendiculares toman valores más altos que las caras paralelas. -Fresnel- es especialmente útil en cristales cargado en la ranura de transparencia para conseguir menos transparencia en los bordes incrementando a su vez la reflexión (lo explicaré con más detalle en otro artículo) pero también en metales y superficies reflectantes en general. El ejemplo quizás más claro sea un objeto plano como el cristal de una ventana. En la vida real podemos ver un cristal de frente y resultar completamente transparente mientras que el mismo cristal visto de lado puede parecer prácticamente un espejo. En el caso de los cables nos servirá para exagerar la reflexión en el borde de los objetos, resultando mucho más realista y dejando además espacio no invadido de reflexión en el cuerpo de los objetos para que la especularidad tenga más area de trabajo.
Además filtraremos la especularidad con otro ruido (Nutous esta vez) utilizando la ranura -specular color- para crear la sensación de irregularidad y envejecimiento en el objeto.
En la base añadiremos además un patrón de líneas en la ranura -bump- el cual encontraremos dentro del menú -Surfaces>Tiles- |
|
|
|
Como los objetos son reflectivos necesitamos un entorno a ser reflejado. Una solución rápida sin necesidad de usar mapas de bits es añadir un objeto cielo y añadirle una textura creada con -Gradient- la cual muestra un suelo básico, un halo atmosférico claro color vainilla y un gradiente azul, que aunque no muy detallado (se podrían haber añadido también varias capas de nubes) será suficiente para mostrar algo en la reflexión de los objetos.
|
![]() |
|
Llega ahora el turno de texturizar el tornillo que es la parte mas interesante de la escena. Creamos un material muy oscuro (ese será el umbral máximo de oscuridad que mostrará el material por lo que si no queremos que el material reflectante resulte demasiado claro el color de base debe ser oscuro) al cual le añadiremos reflexión y un ruido en el canal de bump (Luka en este caso) para crear las imperfecciones del proceso de fabricación más algo de envejecimiento.
|
|
|
|
Aunque no sea muy aparente en algunos casos, la propiedad -Fresnel- contribuye a incrementar el realismo dada la diferencia de grados de reflexión según el ángulo de las caras del objeto tal y como ocurre en la vida real. Utilizando la rampa gradiente de -Fresnel- (negro=0%de reflexión ; blanco=100% de reflexión) podemos conseguir un todo similar a un gris medio (sobre un 50% de reflexión total) como en la versión de la izquierda pero con algunas variaciones: Las dos imágenes son muy similares en cuanto a tono medio, pero podemos ver que en la versión de la derecha los gradientes reflejados en las caras planas del objeto están mucho más contrastados (el mismo principio que se persigue cuando se utilizan imágenes HDRI) llegando incluso a mostrar áreas ligeramente sobre-expuestas y las caras planas de las partes en sombra también han ganado luminosidad, aunque la parte más evidente en este objeto es la rosca del tornillo. Mientras en la imagen de la izquierda la forma de la rosca se pierde en algunas partes llegando a ser casi irreconocible, en la imagen de la derecha podemos ver la rosca perfectamente definida. Insisto en que son detalles muy sutiles, pero no por ello poco importantes.
|
![]() |
|
Ahora vamos a crear una versión completamente oxidada del tornillo, la cual aplicaremos más tarde sólo en algunas zonas del objeto. La primera prueba la realizamos usando un ruido fractal anaranjado (Luka) y sin reflexión ni especularidad ninguna ya que el óxido es mate. El resultado no está mal en principio, aunque al intentar evitar un aspecto demasiado monótono la hemos escalado al 1.000% y aunque el ruido parezca más casual al no mostrar un patrón repetitivo que se identifique facilmente, la apariencia del ruido resulta un poco grande.
|
![]() |
|
Aquí vemos el patrón de ruido en su escala original. No muestra vacios importantes pero muestra un granulado demasiado identificable como para haber sido casual. Por una parte sería conveniente usar esta versión, pero es cierto que también resulta atractiva la versión escalada al 1.000%... resultaría un dilema cual de la dos utilizar?
|
|
|
|
La solución nos llega por parte de un mezclador de imágenes como -Fusion- el cual puede mezclar con un deslizador de 0 a 100 pero también ofrece la posibilidad de usar una máscara en caso de que sea necesario como veremos más adelante. En este caso usamos el deslizador al 50% y con ello obtenemos una mezcla de ambas versiones de óxido con lo mejor de ambas. Para ello sólo hemos tenido que copiar/pegar los materiales originales y mover el deslizador al 50%.
|
![]() |
|
Ahora llega una de las partes más divertidas del ejercicio. Mezclar las texturas sobre el propio objeto. Para ello tomamos el material de óxido obtenido en el paso anterior y en el canal -Alpha- aplicaremos el Efecto -Ambient Occlusion- el cual se utiliza normalmente para eso, para mostrar una oclusión ambiente pero que en este caso nos sirve estupendamente para crear la máscara del material óxido ya que mostrará que el óxido se ha acumulado más en las partes donde hay menos evaporación, o sea en las juntas y recovecos. Para ello tenemos que arrastrar la textura sobre el objeto que tiene ya otra textura aplicada (sobre el objeto y no sobre el icono de la otra textura ya que en este caso sólo reemplazaríamos una textura por otra) de modo que en el -Object Manager- deberíamos ver las dos texturas aplicadas sobre el objeto simultáneamente. No es necesario activar -mix textures- ya que el canal alpha es el responsable de enmascarar/descubrir los diferentes materiales. Por el contrario la opción -mix textures- fundiría ambas texturas al 50% con lo que no conseguiríamos el efecto deseado. El resultado se muestra bastante interesante aunque es verdad que la oxidación no actua de una forma tan matemática ya que hay mucho otros factores a tener en cuenta. Nos falta oxidación aleatoria en otras partes aparte de las juntas y recovecos.
|
![]() |
|
Creamos otra textura basada en la versión del óxido pero en este caso la máscara en el canal alpha no dependerá de -ambient occlusion- sino de otro ruido procedural. Después de realizar varias pruebas la capa de óxido aleatorio resultaba demasiado suavizada con lo que no se conseguía dejar zonas totalmente cromadas y zonas totalmente oxidadas sino un tono demasiado homogéneo, lo cual se puede solucionar otra vez con -Fusion-. Tomando el mismo ruido que resultaba demasiado suave, lo pegamos dentro de -Fusion- dejando el canal de base vacío ya que lo que nos interesa es aplicar una máscara contrastada para éste ruido. Al usar una versión muy contrastada en el canal máscara de -Fusion- el resultado es un material que resulta 100% opaco en algunas zonas y semi-trasparente en otras, el cual se ciñe mucho más al efecto buscado. Ahora el resultado es mucho más creible.
Si además añadimos una versión de la textura de óxido para las juntas al objeto base (el de las lineas) éste mostrará una oclusión ambiente cerca del tornillo y los cables de color anaranjado, como si el tornillo y los cables hubiesen arrojado óxido o suciedad acumulada debajo de ellos tal y como se ve en la imagen que encabeza el artículo, completando aun más si cable la ilusión de que el tiempo ha pasado por la escena.
|
|
|
|
Llegamos al final con la conclusión de que este ejercicio es sólo una de tantas aplicaciones de los procedurales. Podríamos haberlo realizado de muchas maneras distintas para mostrar más o menos cantidad de oxidación, añadir bump fino al óxido para mostrar algo de corrosión e incluso crear variaciones tonales para simular otros tipos de metales como en este ejemplo donde podemos ver también una versión en bronce.
Todo es cuestión de echarle imaginación ;)
|
|
Carles Piles 2006 |
|
|