La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato."— Transcripción de la presentación:

1 Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato

2 Visualización de Datos II

3

4  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

5 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

6 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

7 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

8 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

9 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

10 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

11 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)

12 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

13 Visualización de Datos II  Número de bloques en un nivel: n(nivel) = 4 nivel  Número total de bloques: N(nivel) = 4 0 + 4 1 + 4 2 + … + 4 nivel = (4 (nivel+1) – 1) / 3  El overhead final en comparación a una grilla regular: ◦ 33% de bloqueas extras

14 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

15 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

16 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

17 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

18 Visualización de Datos II  Requiere dos datos únicamente: ◦ Posiciones con respecto al centro del objeto y radio de la esfera

19 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

20 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

21 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

22 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

23 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;

24 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

25 Visualización de Datos II  Crear levels of detail (LODs) de los objetos: 69,451 polígonos 2,502 p 251 p76 p

26 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)

27 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)

28 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

29 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)

30 Visualización de Datos II  Texturas (mippmaps)

31 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

32 Visualización de Datos II 1683 k Triangulos10 k Triangulos 10 k Triangulos + Shading

33 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

34 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

35 Visualización de Datos II TécnicasProsCons LOD  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/Oct ree  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

36 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

37 Visualización de Datos II  Render : // Cada cara es un triangulo while (i<numFaces) glBegin(GL_TRIANGLES) glVertex3fv( Vertexes[ Faces[i] ]) glVertex3fv( Vertexes[ Faces[i+1] ]) glVertex3fv( Vertexes[ Faces[i+2] ]) i+=3 glEnd()

38 Visualización de Datos II  OffLine genLists(listID); //offline while (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.exetransfer\Transfer.exe

39 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);

40 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

41 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ígonos 2 ), ◦ Calcular el tiempo en que se producirá una colisión ◦ Encontrar el punto de intersección entre ambos

42 Visualización de Datos II  Detección de colisiones con Bounding Spheres. Eficiente para calcular si un punto p es interno |p – S centre | < S radius  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

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

44 Visualización de Datos II  Se debe calcular un tiempo correcto  Una colisión errónea puede producir efectos diferentes a los esperados

45 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

46 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

47 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’

48 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

49 Visualización de Datos II

50  Tutorial Frustum ◦ http://www.lighthouse3d.com/opengl/tutorials/  http://graphics.cs.cmu.edu/projects/


Descargar ppt "Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato."

Presentaciones similares


Anuncios Google