3.2 Visualización de Objetos



El universo 3D entero no es completamente observable en una pantalla 2D. Sino que solo una parte del mismo será visible, en un determinado momento, bajo una determinada posición y orientación de cámara.





La cámara mencionada anteriormente representa el ojo desde el cual se está observando el universo 3D en un determinado momento, y se la denomina Frustum. El Frustum es una figura geométrica de aspecto piramidal, que delimita la región de espacio del universo 3D que terminará siendo visible en pantalla.




Consiste en una pirámide rectangular compuesto por seis planos: near plane, far plane, left plane, right plane, top plane y bottom plane. El volumen encerrado entre estos planos dependerá de los valores configurados de la cámara: Position: lugar en el espacio en donde se encuentra la cámara, en un momento determinado

Look at: dirección hacia donde apunta la cámara en un momento determinado, partiendo desde la posición especificada anteriormente.

Near distance: distancia que existe entre la posición de la cámara y el near plane del Frustum. Indica la distancia a partir de lo cual todo empieza a ser visible. Aquello que se encuentre entre la cámara y el near plane, es decir, demasiado cerca al ojo de la cámara, no será visible.

Far distance: distancia máxima a la que un objeto será visible. Determina la posición del far plane del Frustum. Es análogo a la visibilidad máxima que puede ver el ojo.

Aspect Ratio: es relación entre el ancho y el alto de la pantalla 2D sobre la que se va a proyectar el mundo 3D. Se calcula dividiendo el ancho de la pantalla por el alto de la misma. Ratio = width / height

FOV: indica el ángulo de visión respecto del eje Y. Es lo que determina el ensanchamiento de la pirámide del Frustum, desde el near plane al far plane. Normalmente toma un valor entre 40° y 60°.

Todos los triángulos de todos los modelos del universo 3D que se encuentren dentro del volumen del Frustum serán visibles en pantalla (exceptuando aquellos que se interponen ante otros). Aquellos triángulos que se encuentran parte dentro del Frustum y parte afuera, serán recortados hasta dejar solo la parte de los mismos que es visible (triangle splitting). A este proceso de determinar que triángulos caen dentro del volumen de visión se lo denomina Frustum Culling, y puede ser realizado en distintas etapas: a nivel de la aplicación o directamente por el adaptador de video.




Una vez que se ha calculado los triángulos que se encuentran dentro del Frustum, habrá que tener en cuenta que algunos estarán tapando a otros, en lo que respecta a al ojo de la cámara. Por lo tanto no todos los triángulos dentro del Frustum terminarán convirtiéndose realmente en pixels de pantalla. A este proceso se lo denomina Occlusion Culling.




Por lo tanto el concepto de Rendering consiste en calcular, para una cámara determinada, dentro de un universo 3D determinado, que pixels deberán ser dibujados en pantalla. El proceso de Rendering es bastante complejo e involucra varias etapas.

Gracias a la existencia de APIs gráficas como OpenGL y DirectX, junto con el apoyo de los adaptadores de video, el programador normalmente no debe ocuparse de todo este proceso de transformación. Sino que se limita a especificar la geometría del mundo que quiere representar en el modelo lógico de 3D dimensiones, y luego la API gráfica en cuestión será la encargada de transformar ese mundo 3D en una matriz bidimensional de pixels.



No hay comentarios.:

Publicar un comentario