stringtranslate.com

Mapeo normal

Mapeo normal utilizado para volver a detallar mallas simplificadas. Este mapa normal está codificado en el espacio de objetos.

En gráficos por computadora 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 utilizar más polígonos . 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 generando un mapa normal a partir de un modelo de polígonos altos o un 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 superficie normal .

Historia

En 1978, Jim Blinn describió cómo se podían alterar las normales de una superficie para hacer que caras geométricamente planas tuvieran una apariencia detallada. [1] 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, [2] donde se utilizó este enfoque 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 poligonales altas a bajas: "Appearance Preserving Simplification", de Cohen et al. SIGGRAPH 1998, [3] y "Un método general para preservar valores de atributos en mallas simplificadas" por Cignoni et al. Visualización IEEE '98. [4] 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 mediante 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 usa el modelo de bajo detalle. Se creó el modelo de detalle. La mayoría de las herramientas disponibles actualmente todavía utilizan la combinación de almacenar normales en una textura con el proceso de creación más general.

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 múltiples modelos, ya que la orientación de las superficies difiere. Dado que los mapas de texturas en 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 codificando mapas en un 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 pictórica del espacio tangente de un solo punto en una esfera.

Los mapas normales del espacio tangente se pueden identificar por su color púrpura dominante, correspondiente a un vector que mira directamente desde la superficie. Ver Cálculo.

Calcular el espacio tangente

Las normales se utilizan en gráficos por computadora principalmente para iluminación. Una normal es un vector que indica la dirección hacia la que mira una superficie. Para saber cómo se debe iluminar una superficie, el software debe saber cómo está orientada, ya que la forma en que se orienta una superficie influye en gran medida en cómo se refleja la luz en ella. Las normales se pueden especificar con una variedad de sistemas de coordenadas. En gráficos por computadora, es útil calcular normales relativas al plano tangente de la superficie. Esto es útil porque las superficies en videojuegos y otras aplicaciones sufren una variedad de transformaciones antes de ser finalmente renderizadas, por lo que se requiere un sistema de coordenadas relativo a cómo se orienta una superficie. La animación esquelética de un personaje finamente detallado es un ejemplo concreto de esto. Si el brazo de un personaje está doblado, los mapas normales deben poder reflejar la nueva orientación sin actualizaciones computacionalmente costosas de los datos de textura en la transformación.


Para encontrar la perturbación en la normal se debe calcular correctamente el espacio tangente. [5] La mayoría de las veces, lo normal se altera en un sombreador de fragmentos después de aplicar el modelo y las matrices de vista. 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 (la superior 3x3). Sin embargo, la normal necesita ser transformada por la transpuesta inversa . La mayoría de las aplicaciones querrán que el bitangente coincida con la geometría transformada (y los UV asociados). Entonces, en lugar de obligar a que la bitangente sea perpendicular a la tangente, generalmente es preferible transformar la bitangente tal como la tangente. Sea t tangente, b bitangente, n normal, M 3x3 sea la parte lineal de la matriz del modelo y V 3x3 sea la parte lineal de la matriz de vista.

Renderizado utilizando 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 un espacio tangente.

Para calcular la iluminación lambertiana (difusa) de una superficie, el vector unitario desde el punto de sombra 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: sólo puede aproximarse a la forma de la superficie. Al utilizar un mapa de bits de 3 canales texturizado en todo el modelo, se puede codificar información vectorial 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 textura) en el caso de mapas normales del espacio tangente. Esto añade muchos más detalles a la superficie de un modelo, especialmente en combinación con técnicas de iluminación avanzadas.

Los vectores unitarios normales correspondientes a las coordenadas de textura u,v se asignan a mapas normales. Solo están presentes los vectores que apuntan hacia el espectador (z: 0 a -1 para Orientación para zurdos ), ya que los vectores en geometrías que apuntan en dirección opuesta al espectador 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

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}, dando ese tipo de azul cielo. color visto en 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 ({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} valores ( ). 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á frente a la cámara (en lugar de detrás de la cámara), esta convención garantiza que la superficie brilla con la máxima fuerza precisamente cuando el vector de luz y el vector normal coinciden. [6]

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 necesaria ] Más tarde fue posible realizar mapeo normal en estaciones de trabajo SGI de alta gama usando renderizado de múltiples pasadas y operaciones de framebuffer [7] o en hardware de PC de gama baja con algunos trucos usando texturas con paleta. Sin embargo, con la llegada de los sombreadores a las 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). . [8] [9] 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 indexados 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/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 que tuvo hardware de mapeo normal especializado fue la Sega Dreamcast . Sin embargo, la Xbox de Microsoft fue la primera consola en utilizar ampliamente el efecto en juegos minoristas. De las consolas de sexta generación [ cita necesaria ] , solo la GPU de PlayStation 2 carece de soporte de mapeo normal incorporado, 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 utilizar el mapeo de paralaje . Se ha demostrado que la Nintendo 3DS admite mapeo normal, como lo demuestran Resident Evil: Revelations y Metal Gear Solid 3: Snake Eater .

Ver también

Referencias

  1. ^ Blinn. Simulación de superficies arrugadas , Siggraph 1978
  2. ^ Krishnamurthy y Levoy, Adaptación de superficies lisas a mallas poligonales densas , SIGGRAPH 1996
  3. ^ Cohen et al., Simplificación para preservar la apariencia, SIGGRAPH 1998 (PDF)
  4. ^ Cignoni et al., Un método general para preservar valores de atributos en mallas simplificadas, IEEE Visualization 1998 (PDF)
  5. ^ Mikkelsen, Revisión de la simulación de superficies arrugadas, 2008 (PDF)
  6. ^ "LearnOpenGL - Mapeo normal". aprenderopengl.com . Consultado el 19 de octubre de 2021 .
  7. ^ Heidrich y Seidel, Iluminación y sombreado realistas acelerados por hardware Archivado el 29 de enero de 2005 en Wayback Machine , SIGGRAPH 1999 ( PDF )
  8. ^ "Virtua luchador 4". Sega Retro . 2023-11-30 . Consultado el 3 de marzo de 2024 .
  9. ^ "Tecnologías gráficas en los juegos". Meristación (en español). 2012-04-18 . Consultado el 3 de marzo de 2024 .

enlaces externos