¿Por qué el ancho y la altura se dividen por 2 en la matriz de proyección en perspectiva?

9

Estoy usando OpenGL para aprender gráficos por computadora. Estoy tratando de entender las matrices de proyección. Lo siguiente se muestra en el 'Libro Rojo' de OpenGL:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

No entiendo por qué el ancho y la altura se dividen entre 2.

mikeglaz
fuente

Respuestas:

11

Debido a que no varía de , varía de .Xpagsroj0 0wyoreth-wyoreth2wyoreth2

Lo importante no es el ancho, sino los valores mínimos y máximos de . Como está en el centro de la ventana gráfica, no en la esquina, los valores mínimo y máximo son más y menos la mitad del ancho.Xpagsroj(0 0,0 0)


Por cierto, el Libro Rojo no es una gran introducción a los gráficos en general. Es un estándar técnico, no un tutorial, por lo que la explicación de los conceptos es suficiente para ser inequívoco: no está tratando de enseñar el material. También se trata de una biblioteca de representación de líneas de escaneo en particular, por lo que hay muchos conceptos importantes que no describe en absoluto, como qué BRDF son importantes, cómo se relacionan con las propiedades de la superficie del mundo real, qué es realmente una imagen y muchos Técnicas de nivel superior.

Y finalmente, incluso en el área de cómo se trata, cómo usar una GPU para acelerar el renderizado, está horriblemente desactualizado. La arquitectura GL se basa en GPU de hace 20 años. Aunque se han agregado muchas características para mantenerse al día con los cambios en el hardware, las abstracciones fundamentales no son una buena manera de comprender las arquitecturas actuales de GPU.

Si desea aprender sobre la teoría de los gráficos por computadora, comience con un libro de texto adecuado, como Rendering basado en física o Gráficos por computadora: principios y práctica, o un curso en línea. Si desea aprender cómo hacer una aplicación 3D, comience con un tutorial sobre el tipo de aplicación que le interesa (por ejemplo, si es un juego, pruebe un tutorial de Unity).

Dan Hulme
fuente
Wow, esto es exactamente lo que he estado buscando. Empecé a leer un libro de texto de Álgebra lineal ... pero ¿qué tipo de matemáticas necesito saber para la representación basada en la física?
mikeglaz
2
Espere, ¿quiso decir "porque no varía de "? Xpagsroj0 0wyoreth
mikeglaz
Para openGL necesita proyectarse a coordenadas de dispositivo normalizadas (-1 a 1) para que escale de -Width / 2 a Width / 2
PaulHK
Debería hacer otra pregunta sobre PBR, pero aquí hay un buen recurso: learnopengl.com/#!PBR/Theory
Alan Wolfe
@mikeglaz lo hice, gracias. Diría que si conoces algo de álgebra lineal de pregrado y óptica de secundaria, estás bien. Cualquier detalle que aún no comprenda, ya tendrá la base para entenderlo leyendo la página de Wikipedia correspondiente.
Dan Hulme