Transformar el modeloMatriz

Es fácil configurar ViewMatrix con glm:

glm::lookAt(Position, Direction, UpVector); 

pero si trato de usar el funktion con modelMatrix, obtendré valores combinados (el modelo no está en la posición correcta y también la rotación parece incorrecta). Solo quiero configurar un objeto de la misma manera que configurar la cámara. ¿Puedo usar el lookAt funktion y hacer algunos cambios después? ¿O tengo que progtwigr una función propia para eso? Y si es así, ¿cómo?

Arreglé la posición con esto:

 m_Orientation = glm::lookAtLH(Position, Direction, UpVector); m_Orientation[3][0] = -m_Orientation[3][0]; m_Orientation[3][1] = -m_Orientation[3][1]; m_Orientation[3][2] = -m_Orientation[3][2]; 

también dentro del vertexshader uso esto:

 gl_Position = CameraMatrix * ModelMatrix * Pos; 

donde CameraMatrix es una ViewProjectionMatrix, ModelMatrix (mi problema) y Pos es la posición de mi vértice en el espacio de modelos

En una representación, cada malla de la escena generalmente se transforma mediante la matriz modelo, la matriz de vista y la matriz de proyección. Finalmente, la escena proyectada se asigna a la ventana gráfica.

Coordenadas del modelo (coordenadas del objeto)

El espacio modelo es el espacio local, donde se define dentro de una malla. Las coordenadas de los vértices se definen en el espacio modelo.

p.ej:

coordenadas del modelo

Coordenadas mundiales

El mundo sapce es el sistema de coordenadas de la escena. Diferentes modelos (objetos) se pueden colocar varias veces en el espacio del mundo para formar una escena, en conjunto.

Matriz de modelo

La matriz del modelo define la ubicación, la orientación y el tamaño relativo de un modelo (objeto, malla) en la escena. La matriz modelo transforma las posiciones de los vértices de una sola malla en el espacio mundial para un único posicionamiento específico. Hay diferentes matrices de modelos, una para cada combinación de un modelo (objeto) y una ubicación del objeto en el espacio de wolrd.

La matriz del modelo se ve así:

 ( X-axis.x, X-axis.y, X-axis.z, 0 ) ( Y-axis.x, Y-axis.y, Y-axis.z, 0 ) ( Z-axis.x, Z-axis.y, Z-axis.z, 0 ) ( trans.x, trans.y, trans.z, 1 ) 

p.ej:

 ( 0.0, -0.5, 0.0, 0.0 ) ( 2.0, 0.0, 0.0, 0.0 ) ( 0.0, 0.0, 1.0, 0.0 ) ( 0.4, 0.0, 0.0, 1.0 ) 

modelo al mundo

Ver sapce (coordenadas del ojo)

El espacio de vista es el sistema local que se define por el punto de vista de la escena. La posición de la vista, la línea de visión y la dirección ascendente de la vista definen un sistema de coordenadas relativo al sistema de coordenadas del mundo. Los objetos de una escena tienen que dibujarse en relación con el sistema de coordenadas de la vista, para ser “vistos” desde la posición de visualización. La matriz inversa del sistema de coordenadas de vista se denomina matriz de vista .
En general, las coordenadas mundiales y las coordenadas de vista son coordenadas cartesianas

Matriz de vista

El sistema de coordenadas de vista describe la dirección y la posición desde donde se mira la escena. La matriz de vista se transforma desde el espacio de wolrd al espacio de vista (ojo).

Si el sistema coordinante del espacio de vista es un sistema diestro , entonces el eje X apunta hacia la izquierda, el eje Y hacia arriba y el eje Z fuera de la vista (Nota: en un sistema de la mano derecha, el eje Z es el producto cruzado del eje X y el eje Y).

ver coordenadas

Coordenadas del clip

Las coordenadas del espacio del clip son coordenadas homogéneas . En el espacio de clips se realiza el recorte de la escena.
Un punto está en el espacio del clip si las componentes x , y y z están en el rango definido por el componente w invertido y el componente w de las coordenadas homogéneas del punto:

 -w <= x, y, z <= w. 

Matriz de proyección

La matriz de proyección describe el mapeo de los puntos 3D de una escena, a los puntos 2D de la ventana gráfica. La matriz de proyección se transforma del espacio de visualización al espacio de clip. Las coordenadas en el espacio del clip se transforman en las coordenadas del dispositivo normalizado (NDC) en el rango (-1, -1, -1) a (1, 1, 1) al dividir con el componente w de las coordenadas del clip.

p.ej:

mira: posición del ojo (2.5, -1.5, 3.5) , centro (2, 0, 0) , vector ascendente (0, 1, 0)

proyección perspcetive: campo de visión (y) de 100 ° , cerca del plano a 0.1 , plano lejano a 20.0

proyección en perspectiva

Coordenadas del dispositivo de forma estándar

Las coordenadas del dispositivo normalizado son las coordenadas del espacio del clip divididas por el componente w de las coordenadas del clip. Esto se llama división de perspectiva

coordenadas del dispositivo

Coordenadas de ventana (coordenadas de pantalla)

Las coordenadas de la ventana son las coordenadas del rectángulo de la ventana gráfica. Las coordenadas de la ventana finalmente se pasan al proceso de clasificación.

Viewport y rango de profundidad

Las coordenadas del dispositivo normalizado se mapean linealmente con las Coordenadas de la ventana (Coordenadas de la pantalla) y con la profundidad del búfer de profundidad. La ventana glViewport está definida por glViewport . El rango de profundidad es establecido por glDepthRange y es por defecto [0, 1].