Tipos de texturas

Texturas 1D

En este caso se mapea un objeto 3D sobre un espacio de textura que tiene una sola dimensión y contiene información sobre color. Este tipo de texturación se suele emplear para representar un gradiente de color sobre el objeto.


Gradiente de color

Un ejemplo es la coloración de un terreno según la altura, como se hace en ciertos mapas. Otro ejemplo sería la simulación de la esfera celeste diurna aplicando un gradiente sobre un objeto que representa el fondo del cielo, haciendo variar el color según la altura sobre el horizonte, o, sencillamente, representar un arcoiris.


Textura 1D, orientada según dirección del máximo gradiente

Texturas 2D

Son las texturas que más se emplean. Pueden ser cuadradas (las más comunes) o rectangulares, y pueden representar un patrón a repetir, como un trozo de pared o de césped, o ser una imagen completa como un cuadro o una ventana.


La aplicación de este tipo de texturas a un objeto 3D para que se adapte correctamente a su forma requiere de unos algoritmos de mapeado que podremos ver dos apartados más adelante.

Texturas 3D

Son mapas de bits que guardan información del color de cada pixel tanto de la superficie de los objetos como de su volumen interior, así podemos ver cómo es el interior de un objeto si lo rompemos o le hacemos un agujero.

Este tipo de texturas son inviables, ya que para almacenar el valor de todos los píxels de un objeto necesitaríamos un espacio en disco enorme, y haría muy pesada su aplicación.

Texturas procedurales

Son imágenes que no se almacenan en el disco duro como mapas de bits (BMP, JPG, EPS, PSD...) sino que se almacena el procedimiento, el algoritmo (matemático) que es capaz de generarlo.

Las texturas procedurales tienen varias ventajas: así como los mapas de bits están definidos de manera discreta (sabemos los colores de puntos en concreto), las texturas procedurales están definidas para todo R en tantas dimensiones como tenga la textura (1, 2 o 3 dimensiones), por lo que podemos aumentar o acercarnos tanto al objeto como queramos, que seguiremos teniendo una buena definición. Además, son texturas infinitas: no tienen porqué repetirse en ningún momento, eso depende del algoritmo que utilicemos para crear la textura (por lo que podemos crear texturas de dimensiones imposibles para un mapa de bits). Y otra gran ventaja es el espacio que ocupan en disco esas texturas: mientras que en los mapas de bits guardamos uno por uno el color de cada punto (pixel) de la imagen, las texturas procedurales sólo ocupan lo que unas cuantas líneas de código. Por eso este tipo de texturas substituyen a los mapas de bits en texturas de gran tamaño o resolución, y en el caso de las llamadas texturas 3D, que antes no era posible su aplicación, ahora sí que podemos crear un algoritmo que nos diga qué textura tiene un objeto en su interior.

Pero no todo en este tipo de texturas son ventajas: las texturas procedurales no se pueden pintar, sino que hay que crear un algoritmo que las pinte por nosotros, cosa que es complicada, y además lo que nos ahorramos de espacio en disco lo gastamos en carga del procesador, puesto que hay que crear esas texturas mediante los algoritmos dados "al vuelo", es decir, mientras vemos la imágen.

Existen diversos tipos de mapas para las texturas procedurales, como los mapas geométricos (en los que se repite un patron, no tienen aleatoriedad), o los mapas aleatorios y fractales (que usan funciones aleatorias). A continuación podremos ver un ejemplo de textura procedural con mapa aleatorio y otro con mapa fractal:


Para las paredes de piedra se empleó un mapa aleatorio.


Ejemplo de mapa fractal.