Era un viernes lluvioso de otoño. Las hojas mojadas de los árboles arremetían contra la ventana en silencio. Desde su mesa, el diseñador podía ver cómo las arrastraba el viento entre remolinos infinitos, hasta estamparlas contra su cristal. Entretenido, quizá por deformación profesional, trazaba espirales en su mente que pudieran describir tan caprichosas trayectorias, hasta que su imaginación topó con el reloj de la pared. Ya era muy tarde, apenas las farolas de la calle iluminaban el interior del estudio. Por fin, tocaba descansar. El diseñador, comenzó a recoger sus trastos ...
De repente, un sonido conocido atrajo su atención hacia la pantalla, donde un sobre amarillo pollo simulaba abrirse. Mensaje entrante:
¿!Columnas jónicas y corintias?! ¿!En un videojuego para móvil?! Deben de estar bromeando. Cuanto mayor es el detalle que se exige de un modelo, mayor es el número de polígonos necesarios para representar dicho modelo. No obstante, cuantos más polígonos, mayor es la potencia computacional requerida para que se renderice.
Este tema es especialmente delicado en el mundo de los videojuegos. Debido a que un videojuego se ejecuta a tiempo real, sus escenas se renderizan aproximadamente 60 veces por segundo. Es decir, en un único segundo, la máquina donde se ejecuta ha de reconvertir la escena 3D en 2D, evaluar su geometría, luces y materiales al menos 60 veces. ¡Y se dice pronto! O sino, nos desesperaremos porque tendremos la típica pero no por ello menos desagradable sensación de que "la máquina no tira". Por tanto, nuestro desarrollador...
Necesitaría columnas de alto detalle realizadas con el menor número de polígonos posible ...

El diseñador volvió a tomar asiento. La lluvia había por fin cesado. La noche, cubría ahora las calles tranquila. Invitaba a soñar. El diseñador se rindió ante el espectáculo. La luna había vuelto a asomar, y su luz revelaba callejones y recovecos que hacía un momento permanecían ocultos. Las sombras bailaban entre los claros, pero se antojaban cansadas. Se proyectaban en todos los sentidos, según la posición del foco que las creaba. Y aún, en las zonas más escondidas, predominaban sobre la luz.
Entonces el diseñador alzó la vista como si hubiera comprendido. Y volvió a analizar la escena que se erigía ante sus ojos. Pero esta vez, usando la lente de un diseñador, no la de un soñador. Ya no veía farolas, casas o coches.
Veía mallas de polígonos. Y veía sus normales, o lo que es lo mismo, el vector que se se proyecta de manera perpendicular a la cara del polígono. Y veía, ¡claro que veía! todos aquellos polígonos en los que los rayos de luz incidían de manera paralela a sus normales. Y por supuesto, los polígonos cuyas normales , por el contrario, se encontraban perpendiculares a la luz, se escondían bajo la oscuridad. Entre medio,
todo un baile de sombras y luces (derivados del rango de ángulos entre las normales de los polígonos y los rayos de luz) que permitían al ojo humano crear un sinfín de detalles sobre la escena.
¡Ya lo tenía!
¡Había solucionado el problema de las dichosas columnas corintias! Si el ángulo de incidencia de la luz sobre un objeto de alta resolución podía emular los detalles del mismo:
- 1. Esculpiría las columnas con un nivel de detalle hiperrealista
- 2. Crearía un segundo modelo de baja resolución de las columnas (pocos polígonos)
- 3. Generaría un mapa de colores en función del ángulo de incidencia de las normales del modelo 1 y 2 (mapa de normales)
- 4. Proyectaría sobre el modelo de baja resolución dicho mapa de normales, para crear un modelo ligero de baja resolución con apariencia de alta resolución.
De este modo, podría representar objetos con un alto nivel de detalle, sin requerir apenas potencia computacional para su manejo, puesto que los modelos estarían compuestos por muy pocos polígonos. ¡Perfecto para un videojuego!
¡El diseñador había descubierto los NORMAL MAPS!
"Y es que a veces, soñar es la luz que nos permite ver el diseño que siempre tuvimos delante, en una noche lluviosa de otoño"