Saltar al contenido

¿Qué hace glLoadIdentity () en OpenGL?

Luego de observar en diferentes repositorios y páginas webs de internet al concluir dimos con la solución que te enseñamos ahora.

Solución:

La matriz de identidad, en términos de las matrices de proyección y vista de modelo, esencialmente restablece la matriz a su estado predeterminado.

Como es de esperar que sepas, glTranslate y glRotate son siempre relativas al estado actual de la matriz. Entonces, por ejemplo, si llamas glTranslate, está traduciendo desde la ‘posición’ actual de la matriz, no desde el origen. Pero si quieres empezar de nuevo desde el origen, ahí es cuando llamas glLoadIdentity()y luego puedes glTranslate de la matriz que ahora se encuentra en el origen, o glRotate de la matriz que ahora está orientada en la dirección predeterminada.

Creo que la respuesta de Boon, que es equivalente a 1, no es exactamente correcta. La matriz en realidad se ve así:

1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

Esa es la matriz de identidad. Boon tiene razón, matemáticamente, en que cualquier matriz multiplicada con esa matriz (o una matriz que se ve así; diagonales, todos los demás ceros) dará como resultado la matriz original, pero no creo que él haya explicado por qué esto es importante.

La razón por la que esto es importante es porque OpenGL multiplica todas las posiciones y rotaciones a través de cada matriz; así que cuando, por ejemplo, dibujas un polígono (glBegin(GL_FACE), algunos puntos, glEnd()), lo traduce a “espacio mundial” multiplicándolo con MODELVIEW, y luego lo traduce de 3D a 2D multiplicándolo con la matriz PROJECT, y eso le da los puntos 2D en pantalla, junto con la profundidad (de la pantalla ‘cámara’), que utiliza para dibujar píxeles. Pero cuando una de estas matrices es la matriz identidad, los puntos se multiplican con la matriz identidad y por lo tanto no se cambian, por lo que la matriz no tiene efecto; no traslada los puntos, no los rota, los deja como están.

¡Espero que esto aclare un poco más!

La matriz de identidad es equivalente a 1 por número. Como sabes, cualquier número que se multiplique por 1 es en sí mismo (e.g. A x 1 = A),

Lo mismo ocurre con matrix ( MatrixA x IdentityMatrix = MatrixA).

Por lo tanto, cargar una matriz de identidad es una forma de inicializar su matriz en el estado correcto antes de multiplicar más matrices en la pila de matrices.

glMatrixMode(GL_PROJECTION) : se ocupa de las matrices utilizadas por la transformación de perspectiva o la transformación ortogonal.

glMatrixMode(GL_MODELVIEW) : se ocupa de las matrices utilizadas por la transformación de vista de modelo. Es decir, para transformar su objeto (también conocido como modelo) en el espacio de coordenadas de la vista (o espacio de la cámara).

La matriz de proyección se utiliza para crear su volumen de visualización. Imagina una escena en el mundo real. Realmente no ves todo lo que te rodea, solo lo que tus ojos te permiten ver. Si eres un pez, por ejemplo, ves las cosas un poco más amplias. Entonces, cuando decimos que configuramos la matriz de proyección, queremos decir que configuramos lo que queremos ver de la escena que creamos. Quiero decir que puedes dibujar objetos en cualquier parte de tu mundo. Si no están dentro del volumen de la vista, no verá nada. Cuando crea el volumen de la vista, imagine que crea 6 planos de recorte que definen su campo de visión.

En cuanto a la matriz modelview, se utiliza para realizar varias transformaciones a los modelos (objetos) en su mundo. De esta manera, solo tienes que definir tu objeto una vez y luego traducirlo, rotarlo o escalarlo.

Usaría la matriz de proyección antes de dibujar los objetos en su escena para establecer el volumen de la vista. Luego dibuja su objeto y cambia la matriz de vista de modelo en consecuencia. Por supuesto, puede cambiar su matriz a la mitad de dibujar sus modelos si, por ejemplo, desea dibujar una escena y luego dibujar algo de texto (que con algunos métodos puede trabajar más fácilmente en la proyección ortográfica) y luego volver a la matriz de vista de modelo.

En cuanto al nombre modelview, tiene que ver con la dualidad de modelado y visualización de transformaciones. Si dibujas la cámara 5 unidades hacia atrás o mueves el objeto 5 unidades hacia adelante, es esencialmente lo mismo.

Espero haber arrojado algo de luz

Calificaciones y reseñas

Más adelante puedes encontrar las interpretaciones de otros creadores, tú asimismo tienes la habilidad dejar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *