NormalMaps, Part I

Este tutorial pretende ofrecer un truco/principio para realizar un buen normalMap, especialmente orientado a modelos inorgánicos. Así que trabajaremos con un dado. Para ello deberiamos tener los siguientes elementos:

La idea de un normalMap es transferir información del modelo HP al LP, codificada en una textura para no tener que aumentar el recuento de triángulos del modelo LP para que éste luzca más parecido al HP. Se puede resumir así:
El modelo LP sigue teniendo 44 tri pero, gracias al normalMap, las aristas parecen redondeadas e incluso los puntos del dado quieren hacernos creer que tienen profundidad

En el flujo de trabajo habitual, la costumbre es empezar por un modelo muy parecido al LP, la forma básica, e ir añadiéndole detalle (redondeos en las aristas, suavizado subdivisión poligonal p.ej.) hasta conseguir el HP deseado. Es casi inevitable por tanto, que la superposición de los modelos HP y LP queden así:
Entonces el modelo LP queda alineado o ligeramente por fuera del HP. Las aristas son un claro ejemplo que se puede observar en el detalle A. Si a partir de estos modelos generamos el normalMap, el resultado será el siguiente:
En principio parece correcto. Las agujeros, sobretodo, quedan de la mejor manera que pueden quedar gracias a un normalMap. Pero si nos fijamos en las aristas se puede observar un error en la iluminación:

La forma para evitar estas discontinuidades de la iluminación por normalMap radica en la ubicación de las caras/aristas del modelo LP respecto al HP. El truco es hacer que las aristas del LP coincidan con la superficie del modelo HP:
Reitero: las aristas del modelo LP justo en la superficie del HP. Hay una forma muy sencilla para conseguirlo: aplicar un operador push sobre cualquiera de los dos modelos; el HP lo haríamos crecer, por el contrario el LP decrecer hasta que las aristas del modelo LP coincidan con la superficie del modelo HP:

De esta manera, el normalMap nos ofrecerá el mejor resultado posible



No hay comentarios:

Publicar un comentario