
En gráficos por computadora 3D , el mapeo normal , o mapeo de relieve Dot3 , es una técnica de mapeo de texturas que se utiliza para simular la iluminación de relieves y hendiduras, una implementación del mapeo de relieve . Se utiliza para agregar detalles sin usar más polígonos . [ 1 ] Un uso común de esta técnica es mejorar enormemente la apariencia y los detalles de un modelo de bajo poligonaje mediante la generación de un mapa normal a partir de un modelo de alto poligonaje o mapa de altura .
Los mapas normales se almacenan comúnmente como imágenes RGB regulares donde los componentes RGB corresponden a las coordenadas X, Y y Z, respectivamente, de la normal de la superficie .
Historia
En 1978, Jim Blinn describió cómo se podían perturbar las normales de una superficie para hacer que las caras geométricamente planas tuvieran una apariencia detallada. [ 2 ] La idea de tomar detalles geométricos de un modelo de polígonos altos se introdujo en "Ajuste de superficies suaves a mallas de polígonos densas" por Krishnamurthy y Levoy, Proc. SIGGRAPH 1996, [ 3 ] donde este enfoque se utilizó para crear mapas de desplazamiento sobre NURBS . En 1998, se presentaron dos artículos con ideas clave para transferir detalles con mapas normales de mallas de polígonos altos a bajos: "Simplificación que preserva la apariencia", por Cohen et al. SIGGRAPH 1998, [ 4 ] y "Un método general para preservar los valores de los atributos en mallas simplificadas" por Cignoni et al. IEEE Visualization '98. [ 5 ] El primero introdujo la idea de almacenar las normales de superficie directamente en una textura, en lugar de los desplazamientos, aunque requería que el modelo de bajo detalle se generara mediante un algoritmo de simplificación restringido específico. El segundo presentó un enfoque más simple que desacopla la malla poligonal de alta y baja resolución y permite recrear cualquier atributo del modelo de alta resolución (color, coordenadas de textura , desplazamientos , etc.) de una manera que no depende de cómo se creó el modelo de baja resolución. La combinación de almacenar las normales en una textura, con el proceso de creación más general, sigue siendo utilizada por la mayoría de las herramientas disponibles actualmente.
Espacios
La orientación de los ejes de coordenadas difiere según el espacio en el que se codificó el mapa de normales. Una implementación sencilla codifica las normales en el espacio del objeto, de modo que los componentes rojo, verde y azul se corresponden directamente con las coordenadas X, Y y Z. En el espacio del objeto, el sistema de coordenadas es constante.
Sin embargo, los mapas de normales en el espacio de objetos no se pueden reutilizar fácilmente en varios modelos, ya que la orientación de las superficies difiere. Dado que los mapas de texturas de color se pueden reutilizar libremente y los mapas de normales tienden a corresponderse con un mapa de texturas específico, es deseable que los mapas de normales tengan la misma propiedad.

La reutilización de mapas normales es posible gracias a la codificación de mapas en el espacio tangente . El espacio tangente es un espacio vectorial tangente a la superficie del modelo. El sistema de coordenadas varía suavemente (en función de las derivadas de la posición con respecto a las coordenadas de textura) a lo largo de la superficie.

Los mapas normales del espacio tangente se pueden identificar por su color púrpura dominante, que corresponde a un vector que apunta directamente hacia afuera de la superficie. Ver Cálculo .
Cálculo de espacios tangentes
Las normales de superficie se utilizan en gráficos por computadora principalmente para fines de iluminación, imitando un fenómeno llamado reflexión especular . Dado que la imagen visible de un objeto es la luz que rebota en su superficie, la información de luz obtenida de cada punto de la superficie se puede calcular en su espacio tangente en ese punto.

Para cada espacio tangente de una superficie en el espacio tridimensional, existen dos vectores perpendiculares a cada vector del espacio tangente. Estos vectores se denominan vectores normales , y la elección entre estos dos vectores proporciona una descripción de cómo está orientada la superficie en ese punto, ya que la información de la luz depende del ángulo de incidencia entre el rayo.y el vector normaly la luz solo será visible siEn tal caso, la reflexióndel rayo con direccióna lo largo del vector normales dado por
donde la proyección del rayo sobre la normal es.
Intuitivamente, esto significa que solo se puede ver la cara externa de un objeto si se mira desde fuera, y solo se puede ver la cara interna si se mira desde dentro. Cabe destacar que la información lumínica es local, por lo que la superficie no necesariamente tiene que ser orientable en su conjunto. Por eso, aunque espacios como la cinta de Möbius y la botella de Klein no sean orientables, aún es posible visualizarlos.

Las normales se pueden especificar con diversos sistemas de coordenadas. En gráficos por computadora, es útil calcular las normales con respecto al plano tangente de la superficie. Esto es útil porque las superficies en las aplicaciones experimentan diversas transformaciones, como durante el proceso de renderizado o en animaciones esqueléticas, por lo que es importante que la información del vector normal se conserve durante estas transformaciones. Ejemplos de dichas transformaciones incluyen la transformación, la rotación, el cizallamiento y el escalado, la proyección en perspectiva [ 6 ] o las animaciones esqueléticas en un personaje con gran detalle.
En gráficos por computadora, la representación más común de una superficie es una triangulación . Como resultado, el plano tangente en un punto se puede obtener mediante la interpolación entre los planos que contienen los triángulos que intersecan dicho punto. De manera similar, para superficies paramétricas con espacios tangentes, las parametrizaciones generan derivadas parciales, las cuales pueden utilizarse como base de los espacios tangentes en cada punto .
Para encontrar la perturbación en la normal, el espacio tangente debe calcularse correctamente. [ 7 ] La mayoría de las veces, la normal se perturba en un sombreador de fragmentos después de aplicar las matrices de modelo y vista . Típicamente, la geometría proporciona una normal y una tangente. La tangente es parte del plano tangente y se puede transformar simplemente con la parte lineal de la matriz (el 3x3 superior). Sin embargo, la normal necesita ser transformada por la transpuesta inversa . La mayoría de las aplicaciones querrán que la bitangente coincida con la geometría transformada (y las UV asociadas). Por lo tanto, en lugar de forzar que la bitangente sea perpendicular a la tangente, generalmente es preferible transformar la bitangente igual que la tangente. Seaser tangente,ser bitangente,sé normal,sea la parte lineal de la matriz del modelo 3x3, ysea la parte lineal de la matriz de vista de 3x3.

Cálculo

Para calcular la iluminación lambertiana (difusa) de una superficie, se multiplica el vector unitario normal a dicha superficie por el vector unitario que va desde el punto de sombreado hasta la fuente de luz , obteniendo así la intensidad de la luz sobre esa superficie. Imaginemos un modelo poligonal de una esfera: solo podemos aproximar la forma de la superficie. Mediante el uso de un mapa de bits de 3 canales aplicado al modelo, se puede codificar información más detallada sobre los vectores normales. Cada canal del mapa de bits corresponde a una dimensión espacial (X, Y y Z). Estas dimensiones espaciales son relativas a un sistema de coordenadas constante para los mapas normales en el espacio del objeto, o a un sistema de coordenadas que varía suavemente (basado en las derivadas de la posición con respecto a las coordenadas de textura) en el caso de los mapas normales en el espacio tangente. Esto añade mucho más detalle a la superficie de un modelo, especialmente en combinación con técnicas de iluminación avanzadas.
Los vectores normales unitarios correspondientes a las coordenadas de textura u,v se mapean en mapas normales. Solo están presentes los vectores que apuntan hacia el observador (z: de 0 a -1 para la orientación para zurdos ), ya que los vectores en geometrías que apuntan en dirección opuesta al observador nunca se muestran. El mapeo es el siguiente:
X: -1 a +1 : Rojo: 0 a 255 Y: -1 a +1 : Verde: 0 a 255 Z: 0 a -1 : Azul: 128 a 255
verde claro amarillo claro cian oscuro azul claro rojo claro azul oscuro magenta oscuro
- Una normal que apunta directamente hacia el observador (0,0,-1) se mapea a (128,128,255). Por lo tanto, las partes del objeto que están directamente frente al observador son de color azul claro. Este es el color más común en un mapa de normales.
- Una normal que apunta a la esquina superior derecha de la textura (1,1,0) se mapea a (255,255,128). Por lo tanto, la esquina superior derecha de un objeto suele ser de color amarillo claro. La parte más brillante de un mapa de color.
- Una normal que apunta a la derecha de la textura (1,0,0) se mapea a (255,128,128). Por lo tanto, el borde derecho de un objeto suele ser de color rojo claro.
- Una normal que apunta a la parte superior de la textura (0,1,0) se mapea a (128,255,128). Por lo tanto, el borde superior de un objeto suele ser de color verde claro.
- Una normal que apunta a la izquierda de la textura (-1,0,0) se mapea a (0,128,128). Por lo tanto, el borde izquierdo de un objeto suele ser de color cian oscuro.
- Una normal que apunta a la parte inferior de la textura (0,-1,0) se mapea a (128,0,128). Por lo tanto, el borde inferior de un objeto suele ser de color magenta oscuro.
- Una normal que apunta a la esquina inferior izquierda de la textura (-1,-1,0) se mapea a (0,0,128). Por lo tanto, la esquina inferior izquierda de un objeto suele ser azul oscuro. La parte más oscura de un mapa de color.
Dado que se utilizará una normal en el cálculo del producto escalar para el cálculo de la iluminación difusa, podemos ver que los valores {0, 0, –1} se reasignarían a los valores {128, 128, 255}, lo que da ese tipo de color azul cielo que se ve en los mapas normales (la coordenada azul (z) es la coordenada de perspectiva (profundidad) y las coordenadas planas RG-xy en la pantalla). Los valores {0.3, 0.4, –0.866} se reasignarían a los valores ({0.3, 0.4, –0.866}/2+{0.5, 0.5, 0.5})*255={0.15+0.5, 0.2+0.5, -0.433+0.5}*255={0.65, 0.7, 0.067}*255={166, 179, 17} (El signo de la coordenada z (canal azul) debe invertirse para que el vector normal del mapa de normales coincida con el del ojo (el punto de vista o la cámara) o el vector de luz. Dado que los valores negativos de z significan que el vértice está delante de la cámara (en lugar de detrás de ella), esta convención garantiza que la superficie brille con la máxima intensidad precisamente cuando el vector de luz y el vector normal coinciden. [ 8 ]
Mapeo normal en videojuegos
La renderización interactiva de mapas normales originalmente solo era posible en PixelFlow , una máquina de renderización paralela construida en la Universidad de Carolina del Norte en Chapel Hill . Posteriormente, fue posible realizar mapeo normal en estaciones de trabajo SGI de gama alta utilizando renderización de múltiples pasadas y operaciones de framebuffer [ 9 ] o en hardware de PC de gama baja con algunos trucos utilizando texturas con paleta. Sin embargo, con la llegada de los sombreadores en computadoras personales y consolas de juegos, el mapeo normal se generalizó a principios de la década de 2000, siendo algunos de los primeros juegos en implementarlo Evolva (2000), Giants: Citizen Kabuto y Virtua Fighter 4 (2001). [ 10 ] [ 11 ] La popularidad del mapeo normal para la renderización en tiempo real se debe a su buena relación calidad-requisitos de procesamiento en comparación con otros métodos para producir efectos similares. Gran parte de esta eficiencia es posible gracias al escalado de detalle indexado por distancia , una técnica que disminuye selectivamente el detalle del mapa normal de una textura dada (cf. mipmapping ), lo que significa que las superficies más distantes requieren una simulación de iluminación menos compleja. Muchos procesos de creación de contenido utilizan modelos de alta resolución integrados en modelos de juego de baja/media resolución, a los que se les añaden mapas normales.
El mapeo normal básico se puede implementar en cualquier hardware que admita texturas paletizadas. La primera consola de juegos en tener hardware especializado para mapeo normal fue la Sega Dreamcast . Sin embargo, la Xbox de Microsoft fue la primera consola en usar ampliamente el efecto en juegos comerciales. De las consolas de sexta generación , solo la GPU de PlayStation 2 carece de soporte integrado para mapeo normal, aunque se puede simular usando las unidades vectoriales del hardware de PlayStation 2. Los juegos para Xbox 360 y PlayStation 3 dependen en gran medida del mapeo normal y fueron la primera generación de consolas de juegos en hacer uso del mapeo de paralaje . Se ha demostrado que Nintendo 3DS admite el mapeo normal, como lo demuestran Resident Evil: Revelations y Metal Gear Solid 3: Snake Eater .
Véase también
Referencias
- ↑ "LearnOpenGL - Normal Mapping" . learnopengl.com . Consultado el 21 de mayo de 2024 .
- ↑ Blinn. Simulación de superficies arrugadas , Siggraph 1978
- ↑ Krishnamurthy y Levoy, Ajuste de superficies lisas a mallas poligonales densas , SIGGRAPH 1996
- ↑ Cohen et al., Simplificación que preserva la apariencia, archivado el 24/02/2021 en Wayback Machine , SIGGRAPH 1998 (PDF)
- ↑ Cignoni et al., Un método general para preservar los valores de los atributos en mallas simplificadas. Archivado el 7 de marzo de 2021 en Wayback Machine , IEEE Visualization 1998 (PDF).
- ↑ Akenine-Möller, Tomas; Haines, Eric; Hoffman, Naty; Pesce, Ángel; Iwanicki, Michał; Hillaire, Sébastien (2018). Representación en tiempo real, cuarta edición (4 ed.). Boca Ratón, FL, Estados Unidos: AK Peters/CRC Press. pag. 57.ISBN 978-1-13862-700-0Consultado el 2 de agosto de 2024 .
- ↑ Mikkelsen, Simulación de superficies arrugadas revisada, archivado el 26 de mayo de 2019 en Wayback Machine , 2008 (PDF)
- ↑ "LearnOpenGL - Normal Mapping" . learnopengl.com . Consultado el 19 de octubre de 2021 .
- ↑ Heidrich y Seidel, Realistic, Hardware-accelerated Shading and Lighting Archived 2005-01-29 at the Wayback Machine , SIGGRAPH 1999 ( PDF )
- ↑ "Virtua Fighter 4" . Sega Retro . 30-11-2023 . Consultado el 03-03-2024 .
- ↑ «Tecnologías gráficas en los juegos» . Meristación (en español). 2012-04-18 . Consultado el 3 de marzo de 2024 .
Enlaces externos
- Tutorial de mapas normales: Lógica por píxel detrás del mapeo normal de Dot3
- Generador gratuito de mapas normales en línea dentro del navegador
- Mapeo normal en sunandblackcat.com
- Mapeo normal de Blender
- Mapeo normal con texturas con paleta de colores utilizando extensiones antiguas de OpenGL.
- Fotografía de mapas normales Creación manual de mapas normales mediante la superposición de fotografías digitales
- Explicación del mapeo normal
- Generador de mapas normales de código abierto Simple Normal Mapper
- Mapeo de texturas
- Realidad virtual