Estrategias de Optimización

Preview:

DESCRIPTION

Estrategias de Optimización. Visualización II – 2009 Ing. Juan P.D’Amato. Navegación interactiva?. Simulación en tiempo Real ?. Principio general. Los datos en 3D pueden ser muy complejos para representar en tiempo real Se necesita reducir la cantidad de triángulos a renderizar en la escena. - PowerPoint PPT Presentation

Citation preview

Estrategias de Optimización

Visualización II – 2009Ing. Juan P.D’Amato

Visualización de Datos II

Visualización de Datos II

Visualización de Datos II

Los datos en 3D pueden ser muy complejos para representar en tiempo real

Se necesita reducir la cantidad de triángulos a renderizar en la escena

Una solución, elegir los datos a representar

Otra solución, simplificar el modelo

Como evaluar la fidelidad de los modelos simplificados ?

>200,000 Triángulos

Visualización de Datos II

Frustum División del espacio

◦ N-Trees, Grillas, Planos LODS

◦ Discreto, Continuo, View-Dependent Otros métodos

◦ Clonado◦ Reemplazo por textura

Detección de colisiones

Visualización de Datos II

Relación Eficiencia del método con respecto a Eficiencia ganada

Espacio utilizado por las estructuras intermedias

Reacción ante cambios

Visualización de Datos II

La posicion y dirección de la vista genera un volumen -> El Frustum de Vista

Los elementos que nos interesan se deben encontrar dentro de este volumen

Visualización de Datos II

Estrategias de clasificación de los elementos para accederlos eficientemente◦ Grillas Regulares◦ N-Trees (Quadtrees / Octrees /Kd-Trees / BSP Trees )◦ Bounding volumes

Visualización de Datos II

Los BSP(Binary Space Partition) son una generalización de los kD-trees: los planos no necesariamente deben estar alineados a los ejes

Los elementos se clasifican por planos

El motor del Half Life 2 se basa en BSP

Visualización de Datos II

Para todos los triángulos T del Objeto◦ Hang(root, T)

◦ Hang (node , triangle)◦ If (node.isLeaf)

Node.add(triangle)◦ else

Pos = classify ( node.plane, triangle) If (pos = Front)

Hang(node.front,triangle) Else

Hang(node.back, triangle)

Los elementos que nos interesan se deben encontrar dentro de este volumen

Visualización de Datos II

Render(node, eyePos) Pos = classify (node.plane, eyePos) //estoy frente al plano If (pos = Front)

◦ Render(node.front, eyePos)◦ renderElements() <- chequea que son visibles◦ Render(node.back, eyePos)

Else ◦ Render(node. back, eyePos)◦ renderElements()◦ Render(node. front, eyePos)

Visualización de Datos II

Es una grilla regular, organizada jerárquicamente

Se divide la escena en cuatro bloques, con dos planos alineados, y en forma recursiva

Se crea un árbol con cuatro nodos hijos

Visualización de Datos II

Número de bloques en un nivel:n(nivel) = 4nivel

Número total de bloques:N(nivel) = 40 + 41 + 42 + … + 4nivel = (4 (nivel+1) – 1) / 3

El overhead final en comparación a una grilla regular:◦ 33% de bloqueas extras

Visualización de Datos II

Ventajas◦ Genera una buena distribución de los

elementos◦ El costo de búsquedas es de ( log #Elementos)

Desventajas◦ Mayor complejidad para visualizar◦ Las modificaciones tienen un costo elevado

Visualización de Datos II

Idea : solo procesar los bloques cercanos al observador.

Los bloques lejanos pueden eliminarse La carga/descarga de los bloques varía de

acuerdo a la posición de la cámara El uso de memoria es constante

Visualización de Datos II

Ventajas:◦ Es simple implementarlo con arreglos 2D, y

también para llevarlo a 3D Desventajas:

◦ Sirve cuando la distribución en el espacio es homogénea

Ideal para organizar objetos en escenas

Visualización de Datos II

El espacio se divide por volúmenes◦ Se usan representaciones matemáticas simples(Esferas,

cubos, prismas (boxes))◦ Los volúmenes pueden subdivirse en secciones más pequeñas◦ Usado generalmente con objetos completos

◦ El bounding volume óptimo se calcula durante el pre-procesamiento

Lo más común es utilizarse en colisiones de objetos

Visualización de Datos II

Requiere dos datos únicamente: ◦ Posiciones con respecto al centro del objeto y radio de la esfera

Visualización de Datos II

AABB (Axis Aligned Bounded Box):◦ Rápido para calcular las colisiones, pero no se adecuan

perfectamente al objeto◦ AABB se re calcula cuando el objeto rota o se mueve

Visualización de Datos II

Los “convex hull” pueden utizarse Es más costoso su manejo:

◦ Rotación◦ Cálculo de intersección◦ Punto interno al volumen

Visualización de Datos II

Bounding boxes orientados (OBB) son más adecuados al objeto pero más costosos para hacer los cálculos:◦ Los OBBs para objetos estáticos pueden calcularse

previamente◦ Alternativa : aplicar las mismas transformaciones que el

objeto antes de aplicar los cálculos Conclusión: balancear las diversas técnicas de BV

Visualización de Datos II

Ventajas:◦ Cálculos simples◦ Requieren poco espacio en memoria (para la esfera es una

posicion y un radio) Desventajas

◦ No tienen buena precisión◦ No reducen la cantidad de polígonos a representar

Visualización de Datos II

Para todos los objetos3D O de la escena◦ //Método abstracto de la clase Bound◦ If (O.bounding.insideFrustum()

O.Render◦ Else

Continue;

Visualización de Datos II

El problema: ◦ Conjuntos de datos pueden ser muy

complejos para representar en tiempo real Una solución:

◦ Usar geometría mas simples de modelos pequeños o distantes.

◦ Eso es lo conocido como Level of Detail or LOD

Visualización de Datos II

Crear levels of detail (LODs) de los objetos:

69,451 polígonos 2,502 p 251 p 76 p

Visualización de Datos II

Level of detail (LOD) es una herramienta para mantener la interacción◦ Balancea la relación perfomance/fidelidad de las mallas◦ Puede usarse junto con otras técnicas:

Parallel rendering Occlusion culling Image-based rendering

Tipos principales de LOD◦ Discreto/sustitución (1976)◦ Continuo (1996)

Visualización de Datos II

LOD tradicional:◦ Los LODs de cada objeto se crean previamente

con una resolución determinada◦ En tiempo de ejecución se elije el LOD adecuado

de acuerdo a la distancia (o por otro criterio)

Visualización de Datos II

Ventajas◦ Granularidad adecuada:

Utiliza los polígonos más representativos La fidelidad es la más elevada

◦ La mejor aproximación para objetos muy detallados Permite simplificarlos drásticamente

Desventajas◦ Es costoso en tiempo real

Visualización de Datos II

Combinar con otras técnicas (BSP, Octree) Cuando usar esta técnica en la escena, y con qué

objetos?◦ LOD discretos : objetos muy replicados y con un número

razonable de polígonos◦ LOD continuo : Mapas, grillas de agua (espacios navegables y

uniformes)

Visualización de Datos II

Texturas (mippmaps)

Visualización de Datos II

Utilizar texturas en lugar de triángulos Se aplican mapas de normales (bumpmaps)

calculados para recrear las “sombras” del elemento

Se puede automatizar el cálculo de los mapas de normales si la topología de la malla es relativamente simple

Visualización de Datos II

1683 k Triangulos 10 k Triangulos10 k Triangulos + Shading

Visualización de Datos II

Se tienen varias instancias del mismo objeto, del que solo cambian las transformaciones o atributos mínimos, como el color

Por cada nuevo objeto ◦ Se hace referencia a la misma estructura de la

geometría (vértices, triángulos, texturas )◦ Se crean las transformaciones propias a cada

objeto

Visualización de Datos II

Renderizar el objeto a textura En el momento del render, se dibuja un

polígono con la textura mapeada Útil para objetos estáticos, como árboles o

edificios

Visualización de Datos II

Técnicas Pros ConsLOD Discreto

Continuo

Jerárquico

En general, la visualización no depende de la técnica

No existe una técnica general

No es viable cuando los objetos se deforman

SP Grillas

Quadtree/Octree

BSP

Genera una buena distribución de los elementos

El costo de búsquedas es de ln #Elementos

Mayor complejidad para visualizar

Las modificaciones tienen un costo elevado

Bound Esferas

AABB

OBB

Sencilla

Conveniente para objetos deformables

Eficiente

No son dependientes de la visualización

Son malas aproximaciones

Visualización de Datos II

No provee estructuras tipo Octrees o BSP pero provee mecanismos para el manejo de datos◦ Estructuras + eficientes ◦ LODs de Textura (Mippmaps)◦ Culling Queries◦ Splines variables en GPU (sólo en placas

nuevas)◦ Planos de corte

Visualización de Datos II

Render :

// Cada cara es un triangulowhile (i<numFaces) glBegin(GL_TRIANGLES) glVertex3fv( Vertexes[ Faces[i] ]) glVertex3fv( Vertexes[ Faces[i+1] ]) glVertex3fv( Vertexes[ Faces[i+2] ]) i+=3 glEnd()

Visualización de Datos II

OffLinegenLists(listID); //offlinewhile (i<numFaces) glBegin(GL_TRIANGLES) glVertex3fv( Vertexes[ Faces[i] ]) glVertex3fv( Vertexes[ Faces[i+1] ]) glVertex3fv( Vertexes[ Faces[i+2] ]) i+=3 glEnd() Render glCallList(listID);

-> transfer\Transfer.exe

Visualización de Datos II

La idea : Verificar que un objeto será dibujado en pantalla◦ 1ro.- Se renderizan objetos simples, tipo

esferas o cajas◦ 2do.- Se leen cuantos píxeles afectaron del

Buffer◦ Si la cantidad de pixeles > cota

3ro.- Se renderiza la escena final

Código OpenGL :// Deshabilito la profundidad glDepthMask(GL_FALSE);// Habilito el test de Occlusion glEnable(GL_OCCLUSION_TEST_HP);// Dibujo el Bounded glutSolidCube(S_SIZE*2); glDisable(GL_OCCLUSION_TEST_HP);// Obtengo el resultado glGetBooleanv(GL_OCCLUSION_TEST_RESULT_HP, @isVisible);

Visualización de Datos II

Detección de colisiones comprende encontrar donde dos (o más) primitivas se intersecan

Las colisiones pueden ser muy complejas

Visualización de Datos II

Los problemas principales:◦ Una detección correcta requiere chequear cada

polígono de un objeto con todos los del otro :O(#polígonos2),

◦ Calcular el tiempo en que se producirá una colisión

◦ Encontrar el punto de intersección entre ambos

Visualización de Datos II

Detección de colisiones con Bounding Spheres. Eficiente para calcular si un punto p es interno

|p – Scentre| < Sradius

Detección de colisiones con bounding boxes alineados a los ejes (eng: AABB)◦ Intersección muy simple AABBs◦ Dados dos AABBs A & B, no existe intersección

si: (AXmax < BXmin) || // A totalmente a la izquierda B (AXmin > BXmax) || // A totalmente a la derecha B (AYmax < BYmin) || // A totalmente por debajoB (AYmin > BYmax) || // A totalmente por arriba B (AZmax < BZmin) || // A totalmente al frente B (AZmin > BZmax) // A totalmente por detrás B

Visualización de Datos II

El problema del time stamp fijo:◦ Si la intersección se calcula en cada frame => Ciertas

colisiones pueden perderse. ◦ Un objeto a gran velocidad puede atravesar totalmente a otro

objeto en ese plazo de tiempo.

Visualización de Datos II

Se debe calcular un tiempo correcto Una colisión errónea puede producir efectos

diferentes a los esperadosObjeto en Frame K

Objeto en Frame K+1

Objeto en Frame K+2

Objeto en Frame K+0.85

(incorrecto)

(correcto)

Visualización de Datos II

Soluciones al problema del timestamp◦ Cálculo de colisiones no dependientes del Frame

Rate◦ Estimar el tiempo posible de la colisión◦ Usar un volumen mayor para las colisiones◦ Clasificar los objetos de acuerdo a la velocidad

Visualización de Datos II

Remover pares de objetos que nunca colisionarán

Realizar pruebas con BOs simples No testear objetos que se encuentran muy

separados Obviar objetos no-visibles

Visualización de Datos II

Se distribuyen los objetos utilizando grillas regulares.

Se comparan los objetos con no más de una celda de distancia:◦ for all objects O

for y = O.grid_y-1 to O.grid_y+1 for x = O.grid_x-1 to O.grid_x+1 for all objects O’ in grid(x,y)

check collision O <-> O’

Visualización de Datos II

Árboles de Bounding volumes: BSP u Octrees◦ Chequear objetos/polígonos contra el contenido del nodo del árbol◦ Si hay intersección, seguir con los hijos del nodo

Chequear entre dos árboles A y B:◦ Chequear intersección entre los nodos de A y B◦ Si no hay intersección

Exit◦ Si A o B son hojas

Retornar intersección más cercana◦ Sino

1. Para cada par de hijos de A, B chquear Intersección

Visualización de Datos II

Visualización de Datos II

Tutorial Frustum◦ http://www.lighthouse3d.com/opengl/tutorials/

http://graphics.cs.cmu.edu/projects/

Recommended