La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Arquitectura de Motores Gráficos para Mundos en 3D Por Sergio J. de los Santos Arquitectura de Motores Gráficos para Mundos en 3D.

Presentaciones similares


Presentación del tema: "Arquitectura de Motores Gráficos para Mundos en 3D Por Sergio J. de los Santos Arquitectura de Motores Gráficos para Mundos en 3D."— Transcripción de la presentación:

1 Arquitectura de Motores Gráficos para Mundos en 3D Por Sergio J. de los Santos Arquitectura de Motores Gráficos para Mundos en 3D

2 Con que nos encontramos... Una gran cantidad de Entidades(Objetos) los cuales pueden interactuar entre si. Un Escenario compuesto por decenas de miles(o aun mas) de Polígonos, el cual será el Mundo contenedor de todas las interacciones entre las Entidades. Será necesario también saber cuando algo ve a otra cosa. De hecho no tiene sentido dibujar cosas que no se ven. Además puede servir para IA y entre otras cosas. Con que nos encontramos...

3 Algunas Herramientas... Frustum Culling Quadtree/Octree BSPTree - KDTree PVS(Conjuntos Potencialmente Visibles) Portales y Sectores Algunas Herramientas...

4 Frustum Culling El View Frustum es la “caja” contenedora del espacio visible por la “cámara” Esta formada por 6 Planos, y suele tener forma de pirámide Cortada, en el caso de vistas con Perspectiva y cubica en caso de proyección ortogonal. La idea de Frustum Culling es testear Objetos simples (Esferas, AABB, OBB, etc.) con el ViewFrustum a fin de saber si entran en este, lo cual indica en principio que son visibles. Frustum Culling

5 ViewFrustum B A C X Y Z Cámara A,B,C X,Y,Z Frustum Culling Debo Renderizar: C;B;X;Y No Debo Renderizar: A;Z Objetos contenidos en Esferas Objetos contenidos en AABBs

6 Quadtree/Octree Es un Arbol el cual Posee por cada Nodo 4 u 8 hijos,dependiendo si es Quadtree u Octree Respectivamente. Cada Hijo es una Subdivisión Espacial del Padre. Cada Nodo es una Caja y cada hijo una Subdivisión de esta de manera equitativa. Puede Tener una Profundidad Definida o ser adaptativo a la geometría. Muy Util para Entornos Abiertos. Características generales Quadtree/Octree

7 Armado de QuadTree Generación de la raíz y sus hijos. Generación del siguiente nivel. Armado de QuadTree

8 Profundidad AdaptativaProfundidad Uniforme Posibilidades de QuadTree

9 Quadtree/Octree Menor Cantidad de nodos, menos uso de memoria. Cálculos de Culling mas rápidos en subarboles menos profundos. Las Hojas mas grandes tienen gran posibilidad de contener mas entidades/Objeto. Características de Profundidad Adaptativa Mayor cantidad de Nodos, por lo tanto mas uso de memoria. Cálculos de Culling mas lentos, en comparación con el de Prof. Adap. No existen nodos con mayor probabilidad de contener mas Entidades. Características de Profundidad Uniforme Quadtree/Octree

10 BSP Tree Fue descripto por primera vez en 1969 por Shumaker, pero recién a principios de los 90 se empezó a usar en Vídeo Juegos., su fin inicial era de HSR(Eliminación de Superficies Ocultas) Los motores gráficos mas renombrados los usan: Quake(Todos), Unreal, etc. Consiste en un árbol binario que subdivide el Espacio en subespacios mas pequeños. Cada nodo posee un HiperPlano con el cual se clasificara la geometría del espacio asignado al nodo Primera Impresión

11 BSP Tree ABCB D E X X Y X BC A X B ED Y

12 Los Arboles BSP construidos a partir de planos divisores paralelos a los ejes se llaman KDTree. Los Arboles BSP clásicos, suelen crearse utilizando los planos que contienen a las propias primitivas a clasificar. Primeras Características a tener en cuenta

13 BSP Tree D C B A I K L H G J E F Tomemos las primitivas A..L Cada una representa una Pared de nuestro Mundo 3D. La idea de construcción de un árbol BSP es la siguiente. Partimos de una lista de primitivas, tomamos una de ellas, de acuerdo a un criterio que elijamos, extraemos de ella el hiperplano que la contiene y clasificamos al resto en función de este plano. Luego tendremos dos listas(en principio), una con las primitivas que quedaron por delante y otra con las que quedaron por detrás del plano clasificador. Entonces repetiremos el proceso de forma recursiva hasta que no queden primitivas por clasificar.

14 BSP Tree Notese que pueden darse 4 situaciones al clasificar una Primitiva: Que quede totalmente delante del Plano Que quede totalmente detrás del plano Que sea coplanar al plano Que quede Partida por el Plano En los 1ros dos casos sabemos que hacer, en el caso 3(Coplanar) se agrega a la lista de primitivas del Nodo que se esta creando. En el caso de que la primitiva quede Partida, se debe reemplazar esta por otras 2 primitivas que resulten de partir a la primera según indica el corte del plano clasificador, luego cada parte se agregara a la lista correspondiente. D C B A I K L H G J E F

15 BSP Tree D C B A I K L H G J E F Aplicando el Algoritmo, elegimos como Primitiva de clasificación a A, extraemos su Plano y clasificamos al Resto. Notese que D y L son Partidos por el Plano de A, por lo tanto se generaran nuevas primitivas en base a D(DF y DB) y a L(LF y LB). A BCEFGHI J K LF Nodos traseros Nodos frontales LBDFDB LF LB DF DB

16 BSP Tree D C B A I K L H G J E F Ahora tomaremos el Nodo Frontal(Hijo de A) y repetiremos eligiendo una primitiva, en nuestro caso E, repetiremos recursivamente sobre cada hijo, hasta que cada primitiva quede en un Nodo clasificador. Notese que cuando esto suceda detrás de cada hoja habrá espacio Sólido(Estaríamos dentro de la pared) y delante seria habitable, entiendase que estamos adentro de la habitación A BC E IK Nodos traseros Nodos frontales LBDB LF LB DF DB F GH J LF DF

17 BSP Tree D C B A I K L H G J E F Cuando terminemos llegaremos a esto, dependiendo claro del criterio que usemos para elegir las primitivas de para los planos de clasificación de cada nodo A B C EI K LB DB LF LB DF DB FG HJ LF DF

18 BSP Tree D C B A I K L H G J E F Ahora a nuestro árbol BSP le agregaremos detrás de cada nodo hoja un Nodo que llamaremos “Sólido”(S) y delante de cada Hoja uno que se llamara “Vacío”(V). A B C EI K LB DB LF LB DF DB FG HJ LF DF S V V S VV V S S SS S S

19 BSP Tree Características ocultas de un árbol BSP El árbol BSP que acabamos de construir posee una característica geométrica particular, todas la primitivas forman parte de sólidos con volumen. Es decir no hay polígonos sueltos. Esto suele llamarce CSG(Construcción Geométrica Sólida). Podremos comprobar que si elegimos un punto dentro de nuestro mundo y recorremos el árbol clasificandolo según los planos, llegaremos a una Hoja Sólida si esta dentro de la pared, y a una hoja Vacía si esta en la habitación.

20 BSP Tree D C B A I K L H G J E F Es nuestro punto de Prueba, los nodos con fondo negro son los recorridos en la clasificación. A B C EI K LB DB LF LB DF DB FG HJ LF DF S V V S VV V S S SS S S

21 BSP Tree D C B A I K L H G J E F A B C EI K LB DB LF LB DF DB FG HJ LF DF S V V S VV V S S SS S S Es nuestro punto de Prueba, los nodos con fondo negro son los recorridos en la clasificación.

22 PVS(Potential Visibility Set) Se trata de tener precalculada en cada Sector la información de que otros Sectores son Visibles. Suele usarse con BSPTree(Quake por Ej..) Los cálculos de PVS, se basan en aplicar Raytracing para diferentes puntos de prueba ubicados en los diferentes Sectores, y así poder determinar que Sectores son visibles desde el cual se esta calculando.

23 PVS(Potential Visibility Set) D C B A L H G J E F A B C EI K LB DB LFDF DB FG HJ LF DF S V V S VV V S S SS S S Tomaremos de Ejemplo uno de los Sectores generados por nuestro árbol BSP. Ahora el Sector 2 podremos ver desde nuestro sector cualquier otro sector salvo el 1. I K LB 5 1 32 4 4 1 5 2 3

24 PVS(Potential Visibility Set) C B L H G A B C EI K LB DB LF DB FG HJ LF DF S V V S VV V S S SS S S Luego para Renderizar la escena, recorreremos el árbol, uniendo las hojas visibles, y se dibujaran las primitivas encontradas en los nodos visitados. I K LB 5 1 32 4 4 1 2 A J 3 D E F DF 5

25 Portales y Sectores El sistema resultante es análogo a un Grafo donde los Nodos son los llamados “Sectores” y las aristas los “Portales”. Solo tienen gran utilidad en ambientes interiores. Permiten cálculos de visualización en geometría dinámica. Permiten Paginar al Mundo de manera simple y eficaz. Características

26 Portales y Sectores La idea es subdividir el Mundo en diferentes áreas o habitaciones las cuales se interconectan con “portales”. Podemos decir que cada área es análoga a una habitación y cada portal a una Puerta que nos permite acceder a ella. Descripción

27 Portales y Sectores Suele representarse de forma simple(Una línea en 2D, un Rectángulo en 3D) de forma tal que sea rápido saber si se ve o no(Si entra en el View Frustum o no) No requiere que apunte a un nodo ubicado a continuación de otro, ya que puede servir para teletransportes(Ej.: Portales de Quake3). En los cálculos de visualización los portales acotan al viewfrustum, al momento de chequear en los Sectores vecinos si los Objetos son visibles. Portal

28 Portales y Sectores Representa un Area Habitable o Habitación Suele asociarse a la idea de un Nodo de un Grafo. Se conecta con otros Sectores vía los Portales. Suele ser Cóncavo, pero puede ser convexo, lo cual no se lleva bien con la generación automática de portales. Sector

29 Portales y Sectores Este es nuestro Mundo 3D, un conjunto de Faces sin clasificar

30 Portales y Sectores Indica Portal Visible SX - Indica Sector X S1S2 S5 S4 S3 S6 S7S8 Cámara ViewFrustum Sectores Visibles Sectores Ocultos Indica Portal Oculto

31 Conclusiones En casos de Encontrarse solo uno de estos casos: Para Exteriores Abiertos: Quadtree/Octree Para Interiores: BSPTree con Portales o con PVS.

32 Contacto Sergio J. de los Santos sergiojdelos@yahoo.com.ar

33 Bibliografía Recomendada... www.melax.com www.gamasutra.com www.gametutorials.com


Descargar ppt "Arquitectura de Motores Gráficos para Mundos en 3D Por Sergio J. de los Santos Arquitectura de Motores Gráficos para Mundos en 3D."

Presentaciones similares


Anuncios Google