Búsqueda

18/2/13

Sistemas de coordenadas 3D

Generalmente cuando trabajamos con objetos en 3D podemos distinguir cuatro tipos de sistemas de coordenadas:
  • Model: Son las coordenadas en las que se modela el objeto. Por ejemplo, cuando modelamos un objeto siempre lo hacemos cerca del origen (Punto (0,0,0)).
  • World: Son las coordenadas del objeto en el mundo. Como mundo podemos entender el sistema de coordenadas de OpenGL. Donde se encuentran todos los demás objetos de la escena.
  • View: Son las coordenadas de como se ve el objeto desde una cámara situada en cierto punto.
  • ViewPort: Son las coordenadas en 2D del objeto, es decir, se proyecta su forma sobre la pantalla.
Por lo tanto, para mostrar un objeto necesitamos transformar sus coordenadas desde Model hasta ViewPort. Para ello aplicamos una transformación que realice un cambio de sistema de coordenadas desde Model a World con una matriz A:
Model x A = World (Segunda imagen)
Después, aplicamos a esas coordenadas otra transformación con una matriz B, para pasar al sistema de coordenadas de una cámara virtual que enfoca a nuestro objeto:
World x B = View (Tercera imagen)
Por último, realizamos una transformación lineal con una matriz C, desde el sistema de coordenadas View a ViewPort. Esto no es más que una proyección de nuestro objeto sobre un plano 2D, que en nuestro caso es la pantalla.
View x C = ViewPort (Cuarta imagen)
Así podremos calcular de forma sencilla las coordenadas que ocupa sobre la pantalla nuestro objeto. Pero realizar tres transformaciones por cada punto del modelo es ineficiente y como las transformaciones matriciales se pueden concatenar podemos calcular las coordenadas con una sola transformación.

Como Model x A = World y World x B = View entonces si sustituimos World:
Model x A x B = View
Y como View x C = ViewPort si sustituimos View:
Model x A x B x C = ViewPort
Si calculamos la matriz T = A x B x C obtendremos la matriz que realiza la transformación desde Model a ViewPort.
Model x T = ViewPort

No hay comentarios:

Publicar un comentario