Publicado en 13 de febrero, 2017
Random normal vs Random Procedural
El uso de generación procedural cada vez empieza agarrar más fama y utilidad en la industria de los videojuegos para generación de contenidos y en este post hablare un poco sobre la diferencia de usar un típico random y un random enfoque procedural.
Si deseamos generar una secuencia de 5 números de manera aleatoria solo entre numero comprendidos entre 0 al 100 de manera normal, cada numero podría ser muy diferente a los otros, donde podríamos obtener como resultado algo como: 40, 13, 83, 50 y 55; donde cada numero generado no toma encuentra nada respecto a los resultados anteriores solo el rango inicial. Mientras si deseamos repetir el mismo ejercicio con un enfoque procedural, solo el primer numero lo generamos entre el rango de 0 al 100 y los siguientes sera entre un rango de -10 a 10 respecto el numero anterior, obtendremos números cercanos entre ellos, algo como: 45, 48, 54, 60 y 55.
Entonces un random procedural toma en cuenta el resultado anterior y es mayor controlado el posible resultado. Donde en números es aburrido pero más fácil de explicar esta parte, pero ahora ¿Que sucede si lo aplicamos a generar una imagen?. Si deseamos generar una imagen aleatoria de 512 * 512 donde se genera un color diferente aleatorio cada pixel vertical de manera normal, donde simplemente cada pixel es un color posible de toda la gama de colores, obtendríamos básicamente una imagen lleno de colores
Mientras si deseamos generar una imagen de manera procedural, necesitamos hacerlo de la siguiente manera, primero necesitamos de un color base, luego al generar un nuevo pixel tener un margen de que canto puede variar en cada capa de color (RGB) por ejemplo no puede variar entre cada pixel más del 0.06% en Rojo, 0.04% en Verde y 0.01% en Azul y no puede alejarse más del 0.05% en cada capa del color base (esto para no irnos a otro color), esto logrando mantenernos cercas, pero variar del color base, donde podríamos obtener el resultado de la imagen de la izquierda, donde obtendremos una imagen que no se aleja del cafe, esto podría ya ser utilizado para asignárselo a una mesa y si tenemos 3 mesas, cada uno tener un poco de diferencia pero no exactamente igual.
En este ejemplo solo use un pixel diferente de manera horizontal, ya si realmente deseamos utilizarlo deberíamos aplicar el mismo principio pero iniciar desde el centro de la imagen y expandirnos de manera circular por la imagen para y si se agregan ciertas manchas de otro tono, tener resultados como el siguiente:
Los resultados ya empieza ser ahora si útiles para asignar como textura para madera y usando el mismo principio pero partiendo de azul podríamos crear nubes, del verde para pastos o arboles, etc.
Notas: Aquí pueden descargar un paquete con el código del ejercicio de las imágenes Descargar y la ultima imagen fue sacado de un proyecto desarrollado por dentedpixel que tiene ejemplos de generar texturas de manera procedural, en un futuro espero publicar mis versiones simplificadas y en español.
Comentarios recientes