Jorge
Jorge Autor de Aprende Unreal Engine 4.

Noise en materiales

Noise en materiales

Vamos a explorar las posibilidades que ofrecen UE4 para generar ruido y la usaremos para crear materiales realmente interesantes.

Random

El mayor de los ruidos, la aleatoriedad. Para generar números aleatorios en un shader (o material) una aproximación podría ser:

La idea detrás de la fórmula anterior es tomar la muy predecible función seno de y multiplicarla por una constante suficientemente grande. Si tomamos la parte fraccional de dicho valor, obtendremos una función bastante caótica, justo lo que queremos: un valor pseudoaleatorio.

Sería interesante tener una función que tome un vector y devuelva un valor pseudoaleatorio. La idea sería convertir el vector en un escalar y usar la función aleatoria anterior. ¿Cómo convertir un vector en un escalar? Podríamos usar el producto escalar frente a un vector predefinido.

Podemos implementar esta función en un Material Function en mi caso lo he llamado MF_Random:

New Material Function

Usando la idea anterior:

New Material Function

Y usando la función en un material:

Random Test Material

En vez de pasarla las coordenadas UV tal cuál a la función MF_Random, podríamos multiplicar y tomar la parte entera para hacer tiling:

Tiling

Ahora tenemos una máscara pseudo-aleatorio realmente interesante para usar en muchos efectos. Por ejemplo, podríamos usarlo para hacer aparecer y desaparecer objetos:

Appear code

Bastaría con conectar al opacity mask:

Appear code

Noise

En la naturaleza no se observa esa aleatoriedad pura si no más bien una suerte de aleatoriedad “contínua”. Es decir, si ésto es aleatoriedad pura:

Random

Aquí una aleatoriedad “contínua”, más propia de como aparece en la naturaleza:

Perlin

Podríamos obtener este ruido (llamado Perlin noise) a partir de la función random. La idea sería interpolar valores vecinos de ese modo conseguimos esa “continuidad”. Sin embargo, UE4 nos hace la vida más fácil porque dispone de nodos específicos para ruido:

Noise nodes

Material con noise

Vamos a usar los nodos Noise para generar otra máscara interesante.

En primer lugar conectamos al nodo Noise las coordenadas UV. Vamos a añadir una tercera coordenada, en concreto la variable tiempo, así tendrás una animación en el ruido:

Noise setup

El nodo ruido está con los siguientes valores:

Noise setting

La máscara animada queda:

Animated noise

Usando esta nueva máscara se puede hacer efectos como éste:

Appear noise

comments powered by Disqus