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.
Respuestas:
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.
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.
fuente
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.
fuente
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 ...)
fuente