Técnicas de modelado algorítmico: Texturas basadas en mapa de valores.

Esta vez,  analizaremos una de esas técnicas del modelado paramétrico/generativo que destacan por su sencillez y versatilidad, las texturas basadas en mapa de valores. Aunque se podría considerar una técnica básica por su fácil implementación, merece una categoría especial por el enorme potencial creativo que tiene, especialmente en joyería, aunque no se descarta obviamente su aplicación a otras áreas del diseño o arquitectura (en próximos posts lo mostraremos). Esta metodología basada en herramientas de Rhinoceros y Grasshopper dentro del marco del diseño paramétrico la hemos desarrollado en  SEEDstudio, la valoramos para que forme parte del proyecto ADIT (Advance Design Tools).

¿Te has puesto a pensar en crear texturas basadas en imágenes para tus anillos?, podrías unir tu talento gráfico con la joyería!, da clic aquí y te digo como hacerlo.

¿Mapa de valores?

Existen muchas maneras de crear texturas en nuestros modelos 3d: filtrando propiedades de los píxeles de imágenes, usando presets de pinceles con relieve (en modelado escultórico), modelando la geometría/relieve explícitamente,,, pero la que yo prefiero es usando números! Simple, elegante y poderosa. Para los no iniciados en el modelado algorítmico, esta sería una idea intuitiva: un mapa de valores es una asociación entre una muestra de puntos (posiciones) y una dimensión adicional relativa a cada punto. En nuestro caso, se conoce más concretamente como mapa de alturas. Dada una posición (generalmente en el espacio bidimensional, como un plano o una superficie) tenemos un valor asociado que interpretamos como la elevación perpendicular al espacio en ese punto, es decir: z = F(x,y). La función puede tomar muchísimas formas distintas, como veremos a continuación. Lo importante es que si en una superficie le ponemos puntos ordenados, podemos evaluar cada punto en una función o método para que nos diga cuánto hemos de elevar ese punto en dirección perpendicular a la superficie, y con los puntos movidos reconstruir la superficie creando una textura de relieve. Si el teclado del ordenador fuese una superficie, las teclas puntos y la función de elevación la cantidad de veces que se ha pulsado cada tecla, ¿imaginas que relieve obtendrías?

Texturas parametrizadas

Lo malo de los otros métodos para crear texturas es que, -aunque depende del software-, no se pueden manipular sus parámetros una vez creados, no son texturas parametrizadas. Esto ha dejado bastante apartado esta técnica de modelado, porque es un poco intratable modelar con texturas estáticas, y más si dependen de una imagen que habría que modificar aparte. Desde el modelado algorítmico estos problemas no suelen existir, ya que todo el proceso es editable en cualquier momento, permitiéndonos explorar el espectro de variaciones de nuestro diseño con absoluta facilidad y editabilidad. Esta técnica esta vinculada al uso de mallas en Grasshoper y Rhinoceros (tenemos un curso online sobre este temá específicamente).

Las texturas son un mundo, y a veces al cliente no le gusta porque le hizo falta un poco más o menos de volumen, y claro, hacer todo un anillo solo para esto. Lo mejor es parametrizarlo.

La ecuación anterior z = F(x,y) es una generalización, a la función podríamos hacerla depender de cualquier otro parámetro, no solo de “x” e “y”. Pero por ahora, pensemos en un punto “uv” en coordenadas de superficie normalizadas, es decir, que el dominio de “u” y de “v” va de 0 a 1 (no es el tamaño, sino una representación útil del espacio donde puede situarse un punto), por lo que el punto medio en la superficie tendrá las coordenadas 0.5, 0.5. Crear texturas usando números permite por ejemplo que la función de elevación evalúe la coordenada “u” de manera aislada aplicándole otra función, por ejemplo haciendo que cuanto más cerca esté “u” del valor 0.5 (del medio de la superficie con respecto a la dirección U), más alto sea el resultado, de manera que si la coordenada en “u” es 0.001 o 0.999 nos dará un valor inferior que si es 0.4 o 0.6. Algo similar podríamos hacer para la coordenada “v”, o incluso convertir el punto a coordenadas cartesianas para usar el valor de la coordenada cartesiana “z”. Entonces, podemos combinar estas funciones en nuestra función de elevación, tendría una forma como F(u,v) = ( F1(u) + F2(v) ) * F3(u,v). Si tenemos un conjunto de puntos al que le aplicamos la misma función pero a cada uno con parámetros distintos, resulta en una estética paramétrica (al margen de la intencionalidad del diseño), donde se puede reconocer una misma intención que no produce el mismo resultado (aquí numéricamente hablando) en todas partes. Para el color podemos usar la misma idea, usar los resultados de la función de elevación o crear otra función para este propósito. Esta idea se ilustra en la siguiente imagen, se encuentra una forma bastante interesante solamente creando relaciones entre las coordenadas de los puntos. Veamos ahora qué pasa si añadimos más parámetros a la función de elevación.

ChainReptile

 

Funciones de elevación

Aunque estoy usando expresiones matemáticas para analizar esta técnica de modelado, en la práctica de un modelista 3d usamos sobretodo geometría para conseguir la elevación en cada posición. Uno de los métodos más utilizados es usando atractores, o mejor dicho en este caso, tensores. Aquí un tensor “T” es un objeto con posición que evalúa la distancia que hay entre este y los puntos de la superficie original, es decir, F(u,v, T) = f(T.Posición.DistanciaA(u,v)). Esto implica que la geometría adicional para conseguir el mapa de valores (un punto, una curva, o cualquier otro) es un parámetro más de la función, por lo que si cambiamos la posición de esa geometría cambiará nuestra textura. En el ejemplo siguiente, cada “célula” surge porque en la superficie original se posicionó un punto tensor, y los puntos de la superficie original son evaluados con su tensor más cercano. La función de los tensores es devolver un valor que se hace exponencialmente más grande cuanto más lejos esté el punto-a-evaluar del tensor. Esto genera una forma muy similar al Voronoi. Si lo invirtiésemos, haciendo que cuanto más cerca, mayor sea el resultado, obtendríamos una textura de bultos o granulada.

 

1170751_1381293398553682_204426364287953295_n

Profundizando un poco más, estamos creando geometría de relieve, que depende de la posición de unos puntos. Esto es bastante elegante, si mueves un punto tensor estás moviendo (en este caso) una “célula”; si añades o quitas tensores, añades o quitas células; o si formas un patrón con los tensores la textura tendrá también ese patrón. Es decir, manipulamos geometría compleja (las células) usando geometría simple (los puntos).

Hay muchísimos métodos para la función de elevación. Un método simple sería usando aleatoriedad o ruido, a cada punto se le asigna un valor pseudo-aleatorio o evaluando una función que genera ruido, y que puede o no ser interpolado con los valores de sus puntos vecinos para suavizar el resultado. Otro tipo sería usando fórmulas matemáticas, como la función gaussiana. También existen métodos más complejos utilizando agentes o autómatas que van cambiando el resultado en base a ciertas reglas. Parecido a esto es el siguiente ejemplo, donde se utiliza un método numérico que simula reacciones químicas, conocida como reacción de Beloúsov-Zhabotinski. Imagina que tenemos una rejilla con U columnas y V filas, donde cada posición uv contiene tres valores (que representan la concentración de tres componentes químicos) y que son inicializados con valores aleatorios entre 0 y 1. Entonces iteración a iteración, se evalúa cada punto de la rejilla donde a cada valor (concentración de componente químico) se le aplica una fórmula distinta y dependiente de las demás concentraciones y de los vecinos en esa posición. El siguiente ejemplo muestra este proceso desde la iteración 0 a la 1000 en saltos de 5 iteraciones. Es tan maravilloso como parece, a partir de valores aleatorios se consiguen patrones oscilantes solamente pasándolos por fórmulas una y otra vez!

¿Te llama la atención las matemáticas que están por detrás de las cosas?,  en este post hablamos sobre la joyería y las matemáticas.

Este es un procedimiento numérico, no hay geometría interviniendo ahí. Si queremos aplicarlo a una textura, solamente tenemos que dividir una superficie en una rejilla de U * V puntos y usar el resultado de uno de los componentes químicos como valor de elevación para cada punto. Ahora lo difícil es decidir qué periodo o iteración es estéticamente más interesante.

Anillo_BZ_GIF_LOW

 

Aplicaciones en joyería

Usando estos métodos para crear texturas se pueden conseguir multitud de efectos útiles para joyería, en bajo o en alto relieve. La siguiente imagen muestra una simulación algunas técnicas convencionales de joyería artesanal. Podríamos necesitar estampar un sello de autor o la ley del metal; crear un granulado sobre un borde, evitando así operaciones booleanas; crear surcos o dibujos en relieve para aplicar esmaltado o jugar con pátinas y pulidos; o sencillamente aplicar diseño a superficies lisas para hacer piezas más interesantes.

Muestras texturas joyeria

 

Ventajas e inconvenientes

Esta técnica destaca por tener pocos inconvenientes, pero aun así se deben tener en cuenta para decidir si nos conviene o no para llevar a cabo lo que queremos obtener.

  • Ventajas:
    • Fácil implementación. Siempre es el mismo proceso, solo cambia la función de elevación, que tiene dificultad independiente.
    • Rápida implementación. En comparación con otros métodos que consiguen el mismo resultado, este seguramente lleve menos tiempo.
    • Editabilidad. Al estar fuertemente parametrizadas, permite explorar el diseño para buscar la versión que más nos satisfaga.
    • Versatilidad. Es un procedimiento que admite muchísimos recursos creativos, cualquier forma de relieve que se nos ocurra.
    • Aplicable tanto en superficies como en mallas. Es más eficiente con mallas.
  • Inconvenientes:
    • Dependiente de la resolución. Las formas con demasiados detalles necesitarán realizar demasiados cálculos por lo que puede tardar en ejecutarse.
    • Restringido a formas en relieve. Se pueden crear formas más retorcidas como olas con tubo sacrificando la sencillez del algoritmo.

 

Implementación del algoritmo

Vista la teoría, toca llevarla a la práctica. Hemos preparado una masterclass de 2 horas especializada en este tema dada la importancia que tiene para joyería. El 90% del minicurso tiene una dificultad admisible para cualquier principiante en Grasshopper. Comentaremos todos los detalles de la implementación para que domines esta técnica de modelado, y le añadiremos otro método complementario que permita pegar los bordes de la textura a la superficie original, todo lo necesario para producir diseños con esta técnica. Todo esto enfocado no solo a desarrollar un algoritmo, sino una herramienta personalizada que te permita automatizar la creación de texturas para modelar más rápido y más fácil. Accede al curso desde aquí. Si todavía no formas parte del mundo de la joyería algorítmica, nosotros te introducimos desde este otro curso.

Los algoritmos no son el futuro, son el presente en la joyería

Share your thoughts