stringtranslate.com

Mapeo normal

Se utiliza el mapeo normal para volver a detallar mallas simplificadas. El mapeo normal (a) se crea a partir del modelo de triángulos 78.642 (b) sobre el modelo de triángulos 768 (c). Esto da como resultado una representación del modelo de triángulos 768 (d).

En gráficos por computadora en 3D , el mapeo normal o mapeo de protuberancias Dot3 es una técnica de mapeo de texturas que se utiliza para simular la iluminación de protuberancias y abolladuras, una implementación del mapeo de protuberancias . Se utiliza para agregar detalles sin usar más polígonos . [1] Un uso común de esta técnica es mejorar en gran medida la apariencia y los detalles de un modelo de polígonos bajos al generar un mapa normal a partir de un modelo de polígonos altos o un mapa de altura .

Los mapas normales comúnmente se almacenan 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 las normales de una superficie podrían ser perturbadas para hacer que las caras geométricamente planas tengan una apariencia detallada. [2] La idea de tomar detalles geométricos de un modelo de alto polígono fue introducida en "Fitting Smooth Surfaces to Dense Polygon Meshes" 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 alto a bajo polígono: "Appearance Preserving Simplification", por Cohen et al. SIGGRAPH 1998, [4] y "A general method for preserving attribute values ​​on simplifyes" por Cignoni et al. IEEE Visualization '98. [5] El primero introdujo la idea de almacenar normales de superficie directamente en una textura, en lugar de desplazamientos, aunque requería que el modelo de bajo detalle fuera generado por un algoritmo de simplificación restringido particular. Este último presentó un enfoque más simple que desacopla la malla poligonal alta y baja y permite la recreación de cualquier atributo del modelo de alto detalle (color, coordenadas de textura , desplazamientos , etc.) de una manera que no depende de cómo se creó el modelo de bajo detalle. La combinación de almacenar normales en una textura, con el proceso de creación más general, todavía se utiliza en 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 normal. Una implementación sencilla codifica las normales en el espacio de objetos de modo que los componentes rojo, verde y azul se correspondan directamente con las coordenadas X, Y y Z. En el espacio de objetos, el sistema de coordenadas es constante.

Sin embargo, los mapas normales del 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 textura de color se pueden reutilizar libremente y los mapas normales tienden a corresponderse con un mapa de textura particular, es deseable para los artistas que los mapas normales tengan la misma propiedad.

Un mapa de textura (izquierda). El mapa normal correspondiente en el espacio tangente (centro). El mapa normal aplicado a una esfera en el espacio de objetos (derecha).

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

Una representación gráfica del espacio tangente de un solo punto en una esfera.

Las funciones normales del espacio tangente se pueden identificar por su color violeta dominante, que corresponde a un vector que mira directamente hacia afuera desde la superficie. Ver Cálculo.

Cálculo de espacios tangentes

Las normales de superficie se utilizan en gráficos de computadora principalmente con fines de iluminación, mediante la imitación de 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.

Un gráfico que representa cómo el vector normal determina la reflexión de un rayo.

Para cada espacio tangente de una superficie en el espacio tridimensional, hay dos vectores que son 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 normal y la luz solo será visible si . En tal caso, la reflexión del rayo con dirección a lo largo del vector normal viene dada por

Intuitivamente, esto significa que solo se puede ver la cara exterior de un objeto si se mira desde fuera, y solo se puede ver la cara interior si se mira desde dentro. Hay que tener en cuenta que la información luminosa es local, por lo que la superficie no tiene por qué ser orientable en su conjunto. Por eso, aunque espacios como la banda de Möbius y la botella de Klein no sean orientables, es posible visualizarlos.

Las normales se pueden especificar con una variedad de sistemas de coordenadas. En gráficos de computadora, es útil calcular las normales en relación con el plano tangente de la superficie. Esto es útil porque las superficies en las aplicaciones experimentan una variedad de transformaciones, como en el proceso de renderización o en animaciones esqueléticas, y por lo tanto es importante que la información del vector normal se conserve bajo estas transformaciones. Algunos ejemplos de tales transformaciones incluyen transformación, rotación, corte y escala, proyección en perspectiva [6] o las animaciones esqueléticas en un personaje con detalles finos.

Para fines de gráficos de computadora, la representación más común de una superficie es una triangulación y, 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 ese punto. De manera similar, para superficies paramétricas con espacios tangentes, las parametrizaciones producirán derivadas parciales, y estas derivadas se pueden usar 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 [ cita requerida ] . Normalmente, 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 debe transformarse mediante la transposición inversa . La mayoría de las aplicaciones querrán que la bitangente coincida con la geometría transformada (y las UV asociadas). Entonces, en lugar de forzar que la bitangente sea perpendicular a la tangente, generalmente es preferible transformar la bitangente como la tangente. Sea t tangente, b bitangente, n normal, M 3x3 la parte lineal de la matriz del modelo y V 3x3 la parte lineal de la matriz de vista.

Representación con la técnica de mapeo normal. A la izquierda, varias mallas sólidas. A la derecha, una superficie plana con el mapa normal calculado a partir de las mallas de la izquierda.

Cálculo

Ejemplo de un mapa normal (centro) con la escena a partir de la cual se calculó (izquierda) y el resultado cuando se aplicó a una superficie plana (derecha). Este mapa está codificado en el espacio tangente.

Para calcular la iluminación lambertiana (difusa) de una superficie, el vector unitario desde el punto de sombreado hasta la fuente de luz se puntea con el vector unitario normal a esa superficie, y el resultado es la intensidad de la luz en esa superficie. Imagine un modelo poligonal de una esfera: solo puede aproximarse a la forma de la superficie. Al utilizar un mapa de bits de 3 canales texturizado a lo largo del modelo, se puede codificar información de vector normal más detallada. Cada canal en el 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 mapas normales del espacio de objetos, o a un sistema de coordenadas que varía suavemente (basado en las derivadas de la posición con respecto a las coordenadas de la textura) en el caso de mapas normales del espacio tangente. Esto agrega mucho más detalle a la superficie de un modelo, especialmente junto con técnicas de iluminación avanzadas.

Los vectores de la unidad normal correspondientes a las coordenadas de textura u,v se asignan a mapas normales. Solo están presentes los vectores que apuntan hacia el observador (z: 0 a -1 para la orientación para zurdos ), ya que los vectores de las geometrías que apuntan en dirección contraria al observador nunca se muestran. La asignación es la 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

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 {0, 0, –1} se reasignaría 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). {0,3, 0,4, –0,866} se reasignaría 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 coincida con el vector normal del mapa normal con el del ojo (el punto de vista o la cámara) o el vector de luz. Dado que los valores z negativos 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 representación interactiva de mapas normales originalmente solo era posible en PixelFlow, una máquina de representación paralela construida en la Universidad de Carolina del Norte en Chapel Hill . [ cita requerida ] Más tarde fue posible realizar el mapeo normal en estaciones de trabajo SGI de alta gama utilizando operaciones de renderizado de múltiples pasadas y 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 las computadoras personales y las consolas de juegos, el mapeo normal se generalizó a principios de la década de 2000, y algunos de los primeros juegos en implementarlo fueron 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 detalles indexado por distancia , una técnica que disminuye selectivamente el detalle del mapa normal de una textura determinada (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 utilizan modelos de alta resolución integrados en modelos de juego de resolución baja o media aumentados con 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 en mapeo normal fue Sega Dreamcast . Sin embargo, la Xbox de Microsoft fue la primera consola en usar ampliamente el efecto en juegos minoristas. De las consolas de sexta generación [ cita requerida ] , solo la GPU de PlayStation 2 carece de soporte de mapeo normal incorporado, aunque se puede simular utilizando 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

  1. ^ "LearnOpenGL - Mapeo normal". learnopengl.com . Consultado el 21 de mayo de 2024 .
  2. ^ Blinn. Simulación de superficies arrugadas , Siggraph 1978
  3. ^ Krishnamurthy y Levoy, Ajuste de superficies suaves a mallas poligonales densas , SIGGRAPH 1996
  4. ^ Cohen et al., Simplificación que preserva la apariencia, SIGGRAPH 1998 (PDF)
  5. ^ Cignoni et al., Un método general para preservar los valores de los atributos en mallas simplificadas, IEEE Visualization 1998 (PDF)
  6. ^ 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-0. Recuperado el 2 de agosto de 2024 .
  7. ^ Mikkelsen, Simulación de superficies arrugadas revisitada, 2008 (PDF)
  8. ^ "LearnOpenGL - Mapeo normal". learnopengl.com . Consultado el 19 de octubre de 2021 .
  9. ^ Heidrich y Seidel, Sombreado e iluminación realistas acelerados por hardware Archivado el 29 de enero de 2005 en Wayback Machine , SIGGRAPH 1999 ( PDF )
  10. ^ "Virtua Fighter 4". Sega Retro . 2023-11-30 . Consultado el 2024-03-03 .
  11. ^ "Tecnologías gráficas en los juegos". Meristación (en español). 2012-04-18 . Consultado el 3 de marzo de 2024 .

Enlaces externos