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

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

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

Page 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.

Arquitectura de Motores Gráficos para Mundos en

3DPor Sergio J. de los Santos

Arquitectura de Motores Gráficos para Mundos en

3D

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

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...

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

Algunas Herramientas...

• Frustum Culling• Quadtree/Octree• BSPTree - KDTree• PVS(Conjuntos Potencialmente

Visibles)• Portales y Sectores

Algunas Herramientas...

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

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

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

ViewFrustum

B

A

C

XY

Z

Cámara

A,B,C

X,Y,Z

Frustum CullingFrustum Culling

Debo Renderizar:C;B;X;YNo Debo Renderizar:A;Z

Objetos contenidos en Esferas

Objetos contenidos en AABBs

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

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

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

Armado de QuadTreeGeneración de la raíz y

sus hijos.Generación del siguiente nivel.

Armado de QuadTree

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

Profundidad Adaptativa

Profundidad Uniforme

Posibilidades de QuadTree

Posibilidades de QuadTree

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

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

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

BSP TreeBSP 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

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

BSP TreeBSP Tree

A B C B

D

E

X X

Y

X

B C

A X

B

ED

Y

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

BSP TreeBSP Tree

• 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

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

BSP TreeBSP Tree

D

C

B

A

I

K

L

H

G

J

E

F Tomemos las primitivas A..LCada 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.

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

BSP TreeBSP 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

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

BSP TreeBSP 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

B C E F G HI

J

K

LF

Nodos traseros Nodos frontales

LB DFDBLF

LB

DF

DB

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

BSP TreeBSP 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

B CE

I K

Nodos traseros Nodos frontales

LBDBLF

LB

DF

DB

FG H

J LF

DF

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

BSP TreeBSP 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

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

BSP TreeBSP 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

V V

V

S

SS S

S

S

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

BSP TreeBSP TreeCaracterí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.

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

BSP TreeBSP 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

V V

V

S

SS S

S

S

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

BSP TreeBSP Tree

D

C

B

A

I

K

L

H

G

J

E

FA

B

C

EI

K

LB

DB

LF

LB

DF

DB

FG

HJ

LF

DF

S

V

V

S

V V

V

S

SS S

S

S

Es nuestro punto de Prueba, los nodos con fondo negro son los recorridos en la clasificación.

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

PVS(Potential Visibility Set)

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.

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

PVS(Potential Visibility Set)

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

V V

V

S

SS S

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

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

PVS(Potential Visibility Set)

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

V V

V

S

SS S

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

J3D

E

F

DF

5

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

Portales y SectoresPortales 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

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

Portales y SectoresPortales 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

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

Portales y SectoresPortales 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

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

Portales y SectoresPortales 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

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

Portales y SectoresPortales y SectoresEste es nuestro Mundo 3D, un conjunto de Faces

sin clasificar

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

Portales y SectoresPortales y SectoresIndica Portal Visible

SX - Indica Sector X

S1 S2

S5

S4S3

S6 S7 S8

Cámara

ViewFrustumSectores VisiblesSectores Ocultos

Indica Portal Oculto

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

ConclusionesConclusiones

En casos de Encontrarse solo uno de estos casos:

• Para Exteriores Abiertos: Quadtree/Octree

• Para Interiores: BSPTree con Portales o con PVS.

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

ContactoContacto

Sergio J. de los [email protected]

.ar

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

Bibliografía Recomendada...

Bibliografía Recomendada...

• www.melax.com• www.gamasutra.com• www.gametutorials.com