El propósito de Model View Projection Matrix


102

¿Con qué fines estamos utilizando Model View Projection Matrix? ¿Por qué los sombreadores requieren la matriz de proyección de vista de modelo?


12
Consulte este enlace: songho.ca/opengl/gl_transform.html
iKushal

3
Sugerí abrir un sitio de Stack Exchange dedicado a gráficos por computadora y seleccioné esta pregunta como una pregunta de ejemplo . Siga computergraphics.stackexchange.com si está interesado en ver el lanzamiento del sitio.
wip

Respuestas:


196

Las matrices de modelo, vista y proyección son tres matrices independientes. Modele mapas desde el espacio de coordenadas locales de un objeto al espacio mundial, vista desde el espacio mundial al espacio de la cámara, proyección de la cámara a la pantalla.

Si compone los tres, puede usar el único resultado para mapear todo el camino desde el espacio de objetos hasta el espacio de la pantalla, lo que le permite calcular lo que necesita para pasar a la siguiente etapa de una canalización programable desde las posiciones de vértice entrantes.

En las viejas tuberías de funcionalidad fija, aplicaría el modelo y la vista juntos, luego trabajaría la iluminación usando otro resultado derivado de ellos (con algunas correcciones para que, por ejemplo, las normales sigan siendo una unidad de longitud incluso si ha aplicado alguna escala al objeto ), luego aplique la proyección. Puede ver eso reflejado en OpenGL, que nunca separa el modelo y las matrices de vista, manteniéndolos como una sola pila de matrices de vista de modelo. Por lo tanto, a veces también ve eso reflejado en sombreadores.

Entonces: la matriz de proyección de la vista de modelo compuesta a menudo es utilizada por los sombreadores para mapear desde los vértices que cargó para cada modelo a la pantalla. No es obligatorio, hay muchas formas de lograr lo mismo, es normal porque permite todas las transformaciones lineales posibles. Por eso, una versión menos compuesta también era la norma en el antiguo mundo de las tuberías fijas.


3
así que para varios objetos (mallas) necesitamos varias matrices modelView, ¿no es necesario?
Yuriy Vikulov

5
Suponiendo que puedan moverse de forma independiente o que se hayan colocado por separado, entonces sí. Así que esa es de lejos la forma más común de proceder: pasar modelView o projectionModelView como un uniforme al programa de sombreado, habiéndolo configurado para el modelo actual en la CPU.
Tommy

Hola Tommy, ¿puedes sugerir algún código de muestra para la funcionalidad panorámica en Opengl Es2.0 en Android usando esta Matriz de proyección de vista de modelo si es posible? Revisé más enlaces, no pude tener una idea clara. Si algún código de muestra significa, es fácil de entender para mí ..
harikrishnan

1
Tengo una pregunta. Si openGL usa la matriz MV como una y si vamos a ir del espacio de la cámara al espacio del mundo, necesitaríamos invertir (matriz de proyección * matriz de vista) * (posición del cursor) pero si la vista de modelo es una matriz compuesta. ¿Cómo separamos el modelo y la matriz de vista para poder usar la matriz de vista para ese cálculo? ¿Entonces necesito mantenerlos separados?
Evren Bingøl

@ EvrenBingøl ¿Ya recibió su respuesta? Mantuve mi modelo y las matrices de vista separadas, pero me gustaría saber la respuesta real a su pregunta si debo continuar haciéndolo por separado o no.
tom_mai78101

9

Porque las matrices son convenientes. Las matrices ayudan a convertir ubicaciones / direcciones con respecto a diferentes espacios (un espacio se puede definir por 3 ejes perpendiculares y un origen).

Aquí hay un ejemplo de un libro especificado por @ legends2k en los comentarios.

Los habitantes de Cartesia utilizan un mapa de su ciudad con el origen centrado con bastante sensatez en el centro de la ciudad y los ejes dirigidos a lo largo de los puntos cardinales de la brújula. Los residentes de Dyslexia usan un mapa de su ciudad con las coordenadas centradas en un punto arbitrario y los ejes corriendo en algunas direcciones arbitrarias que probablemente parecían una buena idea en ese momento. Los ciudadanos de ambas ciudades están bastante contentos con sus respectivos mapas, pero el Ingeniero de Transporte del Estado asignó la tarea de ejecutar un presupuesto para la primera carretera entre Cartesia y Dyslexia necesita un mapa que muestre los detalles de ambas ciudades, que por lo tanto introduce una tercera coordenada. sistema que es superior a él, aunque no necesariamente a nadie más.

Aquí hay otro ejemplo,

Suponga que ha creado un objeto de automóvil en un juego con sus posiciones de vértice utilizando las coordenadas del mundo. Supongamos que tienes que usar este mismo coche en algún otro juego en un mundo completamente diferente, tienes que definir las posiciones de nuevo y los cálculos se volverán complejos. Esto se debe a que nuevamente debe calcular las posiciones de la ventana, el capó, los faros, las ruedas, etc., en el automóvil con respecto al nuevo mundo.

Vea este video para comprender los conceptos de modelo, vista y proyección. (muy recomendable)

Luego vea esto para comprender cómo los vértices del mundo se representan como Matrices y cómo se transforman.


Si lo piensa profundamente, se dará cuenta de que aunque la transformación se basa en el origen de un objeto (es decir, un solo punto), todos los vértices del objeto (malla / modelo formalmente) sufrirán la transformación, es decir, los 1000 vértices se multiplicarán por la matriz del modelo. Por lo tanto, su punto no está bien formado. La matriz modelo es simplemente la matriz que transforma los vértices del espacio modelo en el espacio mundial. Aquí no hay ningún beneficio de rendimiento, es solo comodidad.
legends2k

Si es así, ¿por qué no representan cada punto en un solo espacio 3D? Debería haber beneficios cuando usa la salida de una escena a otra escena que podría ser una entrada a otra escena móvil :)
cegprakash

1
No representan todos los vértices en un solo espacio ya que es conveniente trabajar en un espacio relativo que en un espacio mayor, como el mundo. Digamos que un robot, cuando se le ordena que se mueva 2 metros hacia adelante, hacerlo con su ojo es más apropiado para él que ubicar el centro del mundo y luego calcular las coordenadas resultantes correctas.
legends2k

Creo que tiene razón. De todos modos, se llamará al sombreador de fragmentos para cada píxel y realizaremos multiplicaciones de matrices para cada píxel en caso de mallas complejas. : |
cegprakash

2
En el sombreador de fragmentos solo se realizan cálculos de iluminación / coloración, cuando los datos llegan al sombreador de fragmentos, todos los cálculos de posición están completos (es decir, en el sombreador de vértices); una mejor explicación sobre por qué utilizar múltiples sistemas de coordenadas está aquí . Este libro es un excelente recurso matemático para juegos en 3D. El mismo capítulo que un PDF de muestra del sitio web del libro .
legends2k
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.