¿Qué son los vectores normales, tangentes y binormales y cómo se usan?

47

Me gustaría encontrar la siguiente información:

  • ¿Qué son?
  • Ejemplo de uso en el desarrollo del juego (el área en la que se usan)

Acerca de los siguientes tipos de vectores:

  • Normal
  • Tangent
  • Binormal

Sería suficiente una simple explicación centrada en el desarrollo del juego.

Jaanus Varus
fuente
1
Estás haciendo demasiadas preguntas. Es mejor que solo leas cómo funcionan los vectores. Desde cero También repare su trigonometría en el camino.
Sidar
3
Pensé que esto podría ser mucho pedir, pero por otro lado, sería bueno tener esta información junta bajo una pregunta. Esa es también la razón por la que pedí específicamente explicaciones simples.
Jaanus Varus

Respuestas:

43

En términos generales, un vector Normal representa la dirección que apunta directamente "hacia afuera" de una superficie, lo que significa que es ortogonal (en ángulos de 90 grados a) cualquier vector que sea coplanar con (en el caso de una superficie plana) o tangente a (en el caso de una superficie no plana) la superficie en un punto dado.

Un vector tangente se considera típicamente como un vector que existe dentro del plano de la superficie (para una superficie plana) o que se encuentra tangente a un punto de referencia en una superficie curva (es decir, si se construyera un plano plano con la misma normal desde el punto de referencia , el vector tangente sería coplanar con ese plano).

El concepto de un vector binormal es un poco más complejo; en gráficos de computadora, generalmente se refiere a un vector Bitangente (referencia aquí ), que es efectivamente el "otro" vector tangente para la superficie, que es ortogonal tanto al vector Normal como al vector Tangente elegido.Normal, Tangente, Bitangente

Con respecto a cómo se calculan, esto varía según la complejidad de la superficie y la precisión con la que desea que sea normal (en algunos casos, como con sombreadores suaves, es más conveniente calcular un normal para una superficie aproximada, cuando la información real de una superficie no está presente), pero hay varias fórmulas generalizadas aquí .

En términos de dónde ocurren, la respuesta es POR TODAS PARTES . Los vectores normales se utilizan para colocar cámaras y objetos en el espacio 3D, para determinar trayectorias, reflexiones y ángulos en los cálculos de física, para mapear máscaras y texturas en modelos 3D, para determinar los desplazamientos de la trayectoria del objetivo en la programación de IA, para dar pistas a los sombreadores sobre cómo para iluminar, sombrear y colorear puntos en una superficie en relación con luces, la cámara y otros objetos, y así sucesivamente. Posiblemente son una de las piezas de información más útiles para tener en un entorno 3D, e incluso son extremadamente útiles en 2D también.

Shotgun Ninja
fuente
2
Maldición, debería haber agregado una imagen: p
RobCurr
Gracias por la explicación detallada! Marcado como respuesta.
Jaanus Varus
2
Puede ser útil leer este artículo sobre por qué la suposición del parche cuadrado no es válida y por qué todo lo que todos dicen sobre las tangentes y los bitangentes es bastante falso. Esboza las matemáticas adecuadas que uno debe usar, pero lamentablemente no soy lo suficientemente competente como para crear una respuesta correcta .
Lars Viklund
Los vectores bitangentes y binormales son equivalentes. Son nombres atribuidos a la misma cosa y solo depende de su "punto de vista mental" en cuanto a qué nombre usar.
Nikos
15

Los vectores normales se usan típicamente para los cálculos de iluminación. Es un vector que se supone que es perpendicular a la superficie que se aproxima por los vértices de una malla. Las normales se definen en cada posición de vértice, pero se pueden calcular de manera diferente dependiendo de cómo desee que la luz se refleje en ese vértice o qué desea hacer con sus cálculos de luz en el sombreador.

Los vectores tangente y binormal son vectores que son perpendiculares entre sí y el vector normal que describe esencialmente la dirección de las coordenadas de textura u, v con respecto a la superficie que está tratando de renderizar. Por lo general, se pueden usar junto con mapas normales que le permiten crear detalles de iluminación debajo de la superficie de su modelo (irregularidades).

Obviamente, hay otras formas de utilizar estos vectores y acabo de describir el uso promedio de ellos. Para obtener más información técnica, le sugiero que tome un libro sobre gráficos por computadora o explore algunos artículos en Internet. Hay mucha información sobre esto al respecto.

RobCurr
fuente
44
+1 - La próxima vez, sin embargo; agrega una foto.
Pieter Geerkens
9

La diferencia entre la tangente y el binormal es menos clara en las superficies, pero eso no debería ser demasiado sorprendente: el binormal se definió originalmente no para superficies sino para curvas , donde el concepto tiene mucho más sentido (y donde realmente vive como 'normal' en que es ortogonal a la dirección del movimiento, de ahí el nombre). Para ser más específicos, dada una curva espacial de la forma p = V (t) = (V x (t), V y (t), V z (t)), entonces la tangente, que es un vector que apunta en el dirección del movimiento: viene dada por T u = dp / dt = (dV x / dt, dV z / dt, dV z/ dt). (Estoy usando el subíndice aquí para distinguir 'no normalizado' ya que no tengo mi MathJax aquí.) Entonces, la velocidad (instantánea) a lo largo de la curva es solo s = | T u |, la longitud del vector tangente y el vector tangente 'normalizado' es simplemente T = T u / s.

Entonces, el vector normal a la curva es la derivada del vector tangente normalizado a lo largo del tiempo, N u = dT / dt; la razón por la que se usa la tangente normalizada aquí es para evitar que la velocidad a lo largo de la curva sesgue el vector normal; puede mostrar que con esta definición, siempre tenemos TN u = 0. Tenga en cuenta que N u no es necesariamente un vector unitario , más de lo que eres ; de hecho, su magnitud k = | N u | es la curvatura (instantánea) de la curva en el punto dado, y el punto p + N u es el centro del llamado círculo osculador (en el punto dado). La normalización normalizada es entonces solo N = N u/ k, y la bitangente B es el producto cruzado B = TxN; como T y N son vectores unitarios y son ortogonales entre sí, entonces B también es un vector unitario y (T, N, B) es un marco ortogonal.

Tenga en cuenta que según esta definición, el 'binormal' de una curva está más cerca de lo que consideramos normal a una superficie (es lo normal al plano 'local' de la curva), y lo normal a una curva está más cerca de lo que pensamos como el bitangente a una superficie.

(Esta imagen, lamentablemente, realmente no hace justicia al concepto, pero es lo mejor que pude encontrar en la web y no puedo construir el mío ...)

ingrese la descripción de la imagen aquí

Steven Stadnicki
fuente