Juegos de computadora.
En los gráficos por computadora, es común usar una matriz de 4 x 4 para almacenar la posición y orientación de cada objeto móvil. Cuando el objeto cambia de posición u orientación, la matriz se actualiza. La cámara virtual utilizada para representar las imágenes del juego también tiene una posición y orientación especificadas por una matriz de 4 x 4. A medida que se renderiza cada objeto, la matriz 4 x 4 del objeto se multiplica por el inverso de la matriz de la cámara. Luego, cada punto en la malla de triángulos (o cualquier primitivo que se use) que componen las superficies del objeto se multiplica por esta matriz. Esto transforma cada objeto desde su propio sistema de coordenadas local en las coordenadas globales del juego, y luego desde allí en el sistema de coordenadas local de la cámara. Las coordenadas locales de la cámara se multiplican por una matriz de proyección especial para calcular la ubicación 2D de cada punto en el objeto en la pantalla.
Los personajes flexibles como los humanos están controlados por toda una jerarquía de transformaciones. Hay una matriz de transformación para todo el personaje que establece la posición y orientación de alguna parte central del cuerpo (por ejemplo, el torso). Otra matriz proporciona la orientación de la parte superior del brazo con respecto al cuerpo, otra la orientación de la parte inferior del brazo con respecto a la parte superior del brazo, otra la orientación de la mano con respecto a la parte inferior del brazo y luego 3 matrices más para cada dedo. para permitir que la mano se mueva naturalmente. Para representar la punta de un dedo, su posición viene dada por el producto de todas las matrices a lo largo de la cadena: cuerpo, hombro, codo, muñeca y articulaciones de 3 dedos. Debido a que la matriz de hombro es el “padre” de todas las matrices en el resto del brazo, y se multiplica al representar todos los componentes del brazo, la actualización de solo la matriz de hombro hace que todo el brazo se mueva como una unidad.
- ¿Cómo se puede resolver este problema?
- ¿Qué trabajos puedo hacer con un título en Matemáticas e Informática?
- ¿Qué significa una garantía teórica en el aprendizaje automático?
- ¿Cuál es la definición estricta entre datos continuos y discretos?
- Cómo resolver rápidamente cualquier problema
En los lugares donde los huesos se encuentran (p. Ej., El codo) la piel real no es rígida, sino que cubre la articulación sea cual sea la orientación de los dos huesos. Esto se puede simular interpolando entre las dos matrices que controlan los dos huesos en varios pasos pequeños, utilizando las matrices interpoladas para controlar los vértices de la superficie de la piel cerca de la articulación para que la piel se doble suavemente.
Todas estas matrices se actualizan en cada cuadro, ya sea reproduciendo una animación o resolviendo algunas restricciones en el movimiento. Entonces, un videojuego en ejecución está actualizando miles de matrices cada cuadro (1/30 o 1/60 segundos), y está haciendo millones de multiplicaciones de la ubicación de un punto por una matriz durante el renderizado. Por lo tanto, es muy importante que la multiplicación matriz-matriz y la multiplicación matriz-vector sean lo más rápidas posible (generalmente con ayuda de hardware).
Además, algunas de las propiedades de las matrices son muy importantes para este proceso.
- El efecto de multiplicar un punto por una secuencia de matrices es lo mismo que multiplicar todas las matrices juntas (en el orden correcto) primero, y luego multiplicar por el punto. Esto significa que, al renderizar, cada punto en cada objeto solo necesita multiplicarse por * una * matriz, lo que ahorra una enorme cantidad de tiempo.
- Una transformación geométrica del tipo proporcionado por una multiplicación matricial es una transformación lineal en el sentido matemático. Esto significa que lo que era una línea recta entre dos puntos en 3D sigue siendo una línea recta en 2D en la pantalla. A su vez, esto significa que cuando se renderiza una malla de triángulos, solo necesita multiplicar los vértices del triángulo 3D por la matriz de transformación 4 x 4 para obtener las posiciones 2D de las esquinas de cada triángulo. Luego puede hacer interpolación 2D (que es más simple) para generar los bordes y los píxeles interiores de cada triángulo. (Esto solo funciona cuando la lente de la cámara (simulada) asigna líneas rectas a líneas rectas).
- Una matriz que simplemente gira y traduce un objeto se llama ortonormal. Invertir una matriz ortonormal es más rápido y más preciso que la inversión de matriz completa, por lo que usamos el método especial cuando podemos.
Como puede ver, un programador de juegos encuentra matrices en todas partes. A veces, simplemente permanecen como matrices, a veces las convertimos a otras formas (buscar ángulos y cuaterniones de Euler) que pueden ser mejores para el control o la interpolación, pero estos se convierten nuevamente en matrices para renderizar. Comprender el álgebra matricial es importante para un programador de juegos.
Dave