Discusión general en español sobre Maxwell Render.
#81334
CONCEPTO Y APLICACION DE NORMAL MAP

Hola a todos!!!Como bien sabeis si soleis pasaros por la seccion en ingles del foro, la release de Maxwell incluirá un parámetro completamente nuevo denominad: Normal Map (mapa normal). Para todos los que desconozcais en que consiste ese mapa, aqui va una breve explicacion de que es y como conseguirlo con la ayuda de software externo. Es traduccion de distintas páginas que he ido encontrando por ahi ( al final pondre las referencias), asi que perdonadme si me traduccion ingles español no es perfecta :wink: .

Antes de ponernos a hablar de los normal maps específicamente, es importante dar un repaso general del proceso de iluminación de un modelo 3D con el fin de poseer una buena base sobre el comportamiento de los normal maps. Es una explicación sencilla.

Asi que vamos allá, como trabaja la luz?? Como determinamos la oscuridad o luminosidad para que cada punto de la pantalla se parezca al resultado del modelo que estamos iluminando en la escena? Lo primero es conocer la direcion qeu cada punto en la superficie esta haciendo frente. La direccion que un punto esta haciendo frente en un superficie se denomina normal. Podemos imaginar una normal como una linea que se extiende desde un punto de la superficie. La linea es perpendicular a la superficie. A continuación necesitamos conocer donde se localiza la luz en nuestra escena. Nosotros creamos una linea desde un punto de la superficie hasta el la posicion de la luz, esta linea se denomina vector luz (un vector es la interpretacion en terminos matematicos de una linea). Asi que tenemos dos vectores saliendo de nuestro punto de superficie, el vector luz y el vector normal. Si medimos el angulo entre las doslineas entonces sabremos como iluminar dicho punto
Image
Si el angulo es pequeño ( los dos vectores estan señalando en una posicion similar), sabremos entonces que el punto de la superficie necesita ser brillante porque esta mirando casi directamente a la luz (asumiendo que solo hay una fuente de luz). Si el angulo es grande sabemos que el punto necesita ser oscuro porque esta haciendo frente muy lejos de la luz
Image Image
La expresion matemática para la luz es del tipo:
brillo=NdotL
N es igual a la direccion a la que la superficie esta mirando ( la superficie normal) y L la linea que dibujamos desde el punto de la superficie hsta la fuente de luz (el vector luz). Dot es la manera en la que medimos el angulo entre las dos lineas. Es un producto proporcional de los dos vectores..Pero como se aplican a los modelos en tiempo real??

INTRODUCCION AL MAPA NORMAL
Pero como se aplica en modelos en tiempo real?
Hasta hace poco tiempo, la mayoria de los video juegos en tiempo real habian sido creados usando el shading Gouraud (sistema utilizado en graficos computerizados para simular los diferentes efectos de luz y color a lo largo de la superficie de un objetom. en la practica, Gouraud shading es usado para almacenar luz suavizada en superficies de baja poligonizacion evitando los altos requisitos de la computadora en el calculo de la luz en cada pixel. Esta tecnica fue presentada en principio por Henri Gouraud en el año 1971). Basicamente consiste en calcular solo los vertices con la formula de LdotN ( es decir solo los vertices de los poligonos) y el resto de los pixeles de los poligonos son calculados por interpolacion. Es decir si mi poligono tiene un vertice brillante y otro oscuro, el piwel intermendio deberia ser el resultado del gradiente entre los dos
Image
Es una manera abreviada qeu permite al hardware hacer menos calculos poruqe solo aplica la formula a unos pocos vetices y no a todos ellos. Entonces se llevaa cabo una estimacion de como deberia ser calculada la superficie entre los vertices. Este metodo trabaja muy bien, pero no resulta tan exacto como el calculo de la iluminacion de cada pixel.
Image
La imagen de arriba muestra el problema con el shading Gouraud, Esta esfera de baja poligonizacion, es calculada por vertice usando Gouraud shading. Es obvio que la interpolacion lineal no es lo suficientemente buena como para hacer convincente la luz. En ciertas ocasiones se consigue la iluminacion deseada pero a veces aparecen extraños artefactos. Si los triangulos en el modelo son largos la luz parecera realemten pobre. Solo es posible introducir detalle en el modelo usando mas poligonos.
Cual es la solucion de esos problemas? el calculo de la luz por pixel!!! Comenzando desde la tarjeta grafica Geforce2, el hardware graficoa hora tiene la habilidad de calcular la formula de la luz NdotL de todos los pixeles en vez de unos cuantos. Esto evita el problema observado por el Gourand shading y abre el camino para soluciones mas realistas.
Image
Esta esfera de baja poligonizacion es calculada por pixel. Incluso aunque es una esfera de bjaa poligonizacion, su shading es correcto y suave, prouqe el calculo luminico se ha realizado para cada pixel.

El calculo de luz por pixel usa una textura RGB para codificar los datos necesarios para crear las normales de superficie en un mapa de textura regular,Los canales rojo, verde y azul del mapa normal representan los valores X Y y Z del vector normal. Este es el ejemplo de un mapa normal:
Image
Recordais cuando dijimos que la normal de superficie siempre va perpendicular a dicha superficie? Eso no es necesariamente cierto. Cuando usamos mapas normales, puedes establecer que la normal de cada pixel vaya en la direccion que tu quieras. En la imagen de arriba observamos que los pixeles de luz azules (R127,G127,B255) representa las normales que son dirigidas directamente fuera de la pantalla. Los pixeles rosas representan las normales que son ajustadas a la derecha. Los pixeles verdes represetnan las normales que son ajustadas superiormente. Los pixeles purpuras representasn los pixeles que son ajustados inferiormente y los pixeles azul oscuro/verdes son las normales que se ajustan a la izquierda.

Se puede observar que la superficie posee muchos bumps extras o hendiduras, o incluso cualquier otro tipo de detalles superficial simplemente editando la normal de cada pixel asi haremos que la superficie aparezca en direcciones que no son las reales. El estrechamiento de las normales engaña al ojo haciendole ver que la superficie tiene mas detalles que los que teine en realidad debido a la reaccion de la luz con la normal de cada pixel. Si alguna vez alguien ha pintado un mapa bump para un modelo que no es en tiempo real, es facilmente comprensible este principio. Se pueden utilizar los mapas normales para archivar el resultado exacto que los mapas bump-solo en tiempo real. De hecho es sencillo construirnos nuestro mapa bump y convertirlo en en un mapa normal. Despues aplicaremos el mapa normal a nuestro modelo y tu tendras el mapa bump en teimpo real. La primera parte del tutorial mostrará como hacerlo.
Image Image Image

Tambien es un uso frecuente de los mapas normales para hacer que un modelo de bjaa poligonizacion parezca de alta. Este tipo de mapas normales son generados por ordenadores envez de ser pintados como los mapas bump. Aqui esta como fucnionan: Primero se crea dos versiones del modelo- una version de alta poligonizacion ( que contendra el detalle que uno quiera) una vesion de baja poligonizacion que actualmente se empleara para juegos. entonces se alinea los dos modelos para que ocupen el mismo espacio y se solapan ambos. Entonces se arranca un programa especial para generar el mapa normal, El progrmaa pone un mapa de textura completo en la superficie del modelo de bjaa resolucion. Para cada pixel de ese mapa de textura completo, el programa moldea un rayo (dibuja una linea) a lo largo de la superficie del modelo de bja resolucion hacia el modelo de alta resolucion. En el sitio donde el rayo se intersecta con la superficie del modelo de alta resolucion, el programa encuentra la normal del modelo alta resolucion.
Image

CREACION DE MAPAS NORMALES A PARTIR DE MAPAS BUMP.
El metodo mas sencillo de crear nuestros modelos como muy detallados es usar un mapa normal a partir de un mapa bump. En este metodo, el mapa normal proporiona, en tiempo real, la misma funcionalidad exacta que el mapa bump. El principio basico es el siguiente:
1. Creamos un modelo en tiempo real
Image
2. Dibujamos un mapa bump con photoshop u otro progrmaa de pintura
Image
3. convertimos el mapa bump en un mapa normal con el plugin para photoshpo de Nvidia, Tambien se pueden usar otros programas. Ver al final los enlaces y paginas de descargas.
Image
4. Aplicamos el mapa normal al modelo y renderizamos.
Image
Este proceso es probablemente muy simple de comprender asi que a continuacion explicare: como convertir un mapa bump a un mapa normal.
Esta conversion esta hecha con el plugin Nvidia para photoshop. Pagina de descarga al final. Una vez que hayamos descargado, lo intalaremos. Lo siguiente sera seguir los pasos que a continuacion se señalan:
1. Se abre el mapa bump en photoshop. Asegurate que es imagen del tipo (64x64,128x128 o 256x256) y que los pixeles mas blancos coloreados representan los detalles levantados de la superficie ylos mas oscuros los que stan hundidos.
2. Elegimos guardar como desde el menu ARCHIVO. Elegimos un nombre y elegimos el formato DDS (Direct Draw Surface) Es un formato de imagen que es usado de manera nativa por DirectX, No te preocupes si DDS no es el formato final que deseamos. Siempre se puede abrir esta imagen denuevo y guardarlo con el formato que deseemos una vez convertido
Image
3. Cuando pulsemos el boton de salvar, el siguiente cuadro dialogo aparecera y te permitira especificar todos los parametros para salvar la imagen
Image
4. Pulsamos en Normal Map Settings... para acceder a las opciones de conversion a mapa normal. Se abrira la siguiente ventana:
Image
5. Pulsamos Convert to Tangent Space Normal Map. Establecer Filter Type en 4 sample y Scale en 4. Ponemos Height Source en Average RGB ( una vez que hayamos convertido nuestro mapa bump en un mapa normal, podremos igualmente acceder a este cuadro dialogo para archivar otros resultados. Por ejemplo, el Scale Value hará que nuestro bump aparezca en mayor o menor grado en la superficie), cuando todo este correcto, pulsamos el boton de OK.
6. Volveremos a la ventana de opciones del formato DDS, pulsamos salvar. Esto convertira tu imagen en un mapa normal y habras salvado en formato DDS. Cierra la imagen y vuelve a abrirla para ver el mapa normal que has creado.

Hay muchisima informacion ela web sobre la creacion de mapas normales usando multiples tecnicas y diferentes paquetes de software. He recopilado los que he creido mas convenientes y utiles:
Crear mapas normales:
http://developer.nvidia.com/object/nv_t ... tools.html
Plugin de Nvidia para photoshop
http://www.pixolator.com/zbc-bin/ultima ... =011260&p=
Mucha informacion acerca de como crear mapas normales con Zbrush
http://www.drone.org/tutorials/normal_maps.html
Como crear mapas normales con Maya
http://www.pinwire.com/article82.html
Metodo de como crear mapas normales para superficies planas para cualquier programa 3D
http://members.shaw.ca/jimht03/normal.html
Crear mapas normales usando Cinema4D
http://www.ati.com/developer/tools.html
Creacion de mapas normales con un programa generador de ATI
http://www.soclab.bth.se/practices/orb.html
Generador de mapas normales parecido al anterior para modelos de alta y baja resolucion.

Espero como siempre que sea útil. :D

mane162
Last edited by mane162 on Tue Nov 22, 2005 6:10 pm, edited 3 times in total.
User avatar
By iker
#81358
Heyyy, muchas gracias mane! .. de gran ayuda si señor :wink:
By mane162
#81387
iker wrote:Heyyy, muchas gracias mane! .. de gran ayuda si señor :wink:
Gracias Iker :wink:

mane162
By mane162
#81398
Maximus3D wrote:Muy bien explicado acerca de los trabajo de normalmapping de manera mane162.

Arrepentido, pero utilicé a un traductor en línea para escribir esto. Espere que sea entendible (hehe) :)

/ Max
Hello Maximus!!we are glad you to visit spanish threads, you are always wellcome :wink: ,btw your spanish explanation is perfect. Really thanks :D

mane162
User avatar
By Maximus3D
#81403
Hehe thanks mane :D i usually drop by in here too from time to time to check what's happening even tho i can't understand a word Spanish.

It's perfect ? lol that's so funny you say that. This must be a really good translator i found then.

I used this one http://ets.freetranslation.com/

..and the above now in Spanish... :)

La melena de Hehe Gracias que dejo generalmente caer por aquí dentro también de vez en cuando verificar lo que sucede aún aunque yo no pueda entender una palabra español.

Es perfecto? lol que es tan chistoso que usted dice eso. Esto debe ser un traductor realmente bueno que encontré entonces.

Utilicé éste http://ets.freetranslation.com/

/ Max
User avatar
By alexmax3d
#81450
Hi Maximus3d, this link is a good translator.
Regards.
http://www.elmundo.es/traductor/
User avatar
By jomaga
#81669
Gracias, Mane!
No tenia mucha idea de normal maps, ahora me queda mucho mas claro
Experimentaremos con la 1.0
By mane162
#81749
Maximus3D wrote:LOL :) i'm sorry mane for going a bit offtopic in your thread.
Doesn´t matter Maximus, don´t worry :wink:

Jose: gracias jose :D

mane162
User avatar
By tom
#81801
Thank you for precise and detailed information Mane! 8)
User avatar
By def4d
#81894
¡ Todavía un sujeto que me gustaría leer english!!
By mane162
#81937
Devista: Gracias tio. Que no estoy quemado?quien dice eso?? :lol: :lol: . Es broma, lo que intento hacer en mis ratos libres es mirar cosas que tarde o temprano tendre que investigar con la release.. :wink:

Tom: muchas gracias!!!.
Translation: really thanks my dear friend!!!

Un saludo a todos

mane162
Sketchup 2024 Released

I would like to add my voice to this annual reques[…]