1 / 10

Programador Profesional de Juegos Programación de Gráficos I Unidad 1 Matriz de proyección

Programador Profesional de Juegos Programación de Gráficos I Unidad 1 Matriz de proyección Instructor: Daniel Brenner danielbrenner@hotmail.com. Matriz de Proyección.

Download Presentation

Programador Profesional de Juegos Programación de Gráficos I Unidad 1 Matriz de proyección

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programador Profesional de Juegos Programación de Gráficos I Unidad 1 Matriz de proyección Instructor: Daniel Brenner danielbrenner@hotmail.com

  2. Matriz de Proyección Se podría pensar la matriz de proyección como el control del funcionamiento interno de una cámara; es análogo a seleccionar el lente de una cámara. Es la matriz más complicada de las que aprendimos hasta el momento. La matriz de proyección es una matriz de escalamiento y proyección en perspectiva. Esta convierte el frustum en una forma trapezoidal. Como el plano cercano es mas pequeño que el plano lejano, esto tiene el efecto de agrandar los objetos que están más cerca de la cámara y achicar los que están más lejos. Esta es la manera en que la perspectiva es aplicada a la escena.

  3. Matriz de Proyección En el frustum, la distancia entre la cámara y el origen del espacio de transformación de vista esta definido arbitrariamente por D, entonces la matriz de proyección debería verse como: 1 0 0 0 0 1 0 0 P = 0 0 1 1/D 0 0 0 1

  4. Matriz de Proyección La matriz de vista mueve la cámara al origen trasladando en el eje Z por –D, por lo que la matriz de traslación debería verse como: 1 0 0 0 0 1 0 0 T = 0 0 1 0 0 0 -D 1

  5. Matriz de Proyección Entonces multiplicando la matriz de traslación por la matriz de proyección (T*P) da como resultado la composición de la matriz de proyección: 1 0 0 0 0 1 0 0 M = 0 0 1 1/D 0 0 -D 1

  6. Matriz de Proyección Esta matriz traslada y escala objetos basada en una distancia específica al plano cercando de la cámara, pero no considera el Campo de Visión (Field of View o “fov”), y los valores en el eje Z que produce para los objetos a distancia pueden ser casi idénticos, haciendo que la comparación de profundidades sea difícil.

  7. Matriz de Proyección Para salvar este problema, existe otra matriz ajusta los vértices manteniendo el aspectodel viewport, convirtiéndola en la mejor solución para la proyección en perspectiva: w 0 0 0 0 h 0 0 M = 0 0 Q 1 0 0 -QZn 0

  8. Matriz de Proyección En esta matriz, Zn es el valor en el eje Z del plano cercano. Las variables w, h y Q tienen los siguientes significados. Noten que fovw y fovh representan los campos de visión horizontal y vertical en radianes. w = cotan ( fovw / 2 ) h = cotan ( fovh / w ) Q = zf / ( zf - zn )

  9. Matriz de Proyección A veces, tal vez no sea muy conveniente utilizar como coeficientes los ángulos de los campos de visión horizontales y verticales sino que tal vez prefiramos utilizar las dimensiones verticales y horizontales del viewport. Para esto, podemos utilizar las siguientes fórmulas: w = ( 2 * Zn ) / Vw h = ( 2 * Zn ) / Vh En estas fórmulas, Zn representa la posición en Z del plano cercano, Vw es el ancho del viewport y Vh es la altura del mismo.

  10. Matriz de Proyección Cualquiera de las fórmulas y matrices que se decidan utilizar para la aplicación, debemos asegurarnos que el valor de Zn sea lo más grande posible dado que los valores muy cercanos a la cámara no varían mucho y esto dificulta las comparaciones a 16-Bits del Z-Buffer.

More Related