Optimizaciones y Colisiones - users.exa.unicen.edu.ar
Transcript of Optimizaciones y Colisiones - users.exa.unicen.edu.ar
![Page 1: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/1.jpg)
Optimización de la eficiencia
Visualización II
![Page 2: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/2.jpg)
Visualización de Datos II
Real time?
![Page 3: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/3.jpg)
Visualización de Datos II
GPUs más potentes
GTX 295
GF100 HD5870 HD5970
Processing units
480 scalar 512 scalar 320 vec5 640vec5
Texturingunits
160 vec4 64 vec4 80 vec4 160 vec4
GPU clock(MHZ)
576 725 850 725
Trianglesrate(Mtriangles/s)
1152 2800 850 725
Memmorybandwidth (GB/s)
208.6 214.7 143.1 238.4
![Page 4: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/4.jpg)
Visualización de Datos II
Uso de la GPU real
• Múltiples iteraciones pre-render/post-render
– Frame rate real>>20 fps
• Uso de GPU para otros cálculos (por ej. Motor físico)
• +Efectos +Complejidad de mallas
• Mucho procesamiento en 2D
![Page 5: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/5.jpg)
Visualización de Datos II
Contenido
CPU Selección de objetos visibles(Frustum) División del espacio
N-Trees, Grillas, PlanosBounding-Volumes
LODS Otros métodos
ClonadoReemplazo por textura
GPU Estructuras y funciones de OpenGL Administración de la GPU
![Page 6: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/6.jpg)
Visualización de Datos II
Principio general de Simplificación del Dominio
• Conjuntos de datos pueden ser muy complejos para representar en tiempo real
• Se necesita reducir la cantidad de triángulos a renderizar en la escena
• Soluciones– Seleccionar elementos visibles
– Simplificar los objetos
![Page 7: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/7.jpg)
Visualización de Datos II
Selección de elementos visibles
FRUSTUM de Vista
![Page 8: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/8.jpg)
Visualización de Datos II
Selección de elementos visibles
Por FRUSTUM de Vista
• Los elementos que nos interesan se deben encontrar dentro de este volumen
• Los chequeos de inclusión son productos escalares– // El frustum se forma por 6 planos (es un prisma deformado)
– // P es el centro del objeto , radius es el eje más largo
– For j =0; j<6
– if dot(P , Plane[i] )>radius//se encuentra fuera del Frustum
• Return false
• Los planos deben generarse correctamente
![Page 9: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/9.jpg)
Visualización de Datos II
División del espacio
Métodos de clasificación
• Celdas regulares
– Consulta = O(n/c)
– Construcción= O(n)
• Quadtree / Octree / Bsp
– Asignan triángulos u objetos de toda la escena en cada celda
– Consulta = O(log n)
– Construcción= O(n log n)
![Page 10: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/10.jpg)
Visualización de Datos II
Métodos de clasificación
+render eficiente
+colisiones
-complejidad de rendering
-objetos animados
![Page 11: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/11.jpg)
Visualización de Datos II
División del espacio
Bounding Volumes
Se usan representaciones matemáticas simples(Esferas, cubos, prismas (boxes))
• Requiere pocos datos :
– Posiciones con respecto al centro del objeto y dimensiones de los volúmenes
![Page 12: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/12.jpg)
Visualización de Datos II
División del espacio
BV– Boxes / ConvexHull
• Bounding boxes orientados (OBB) son más adecuados al objeto pero más costosos para hacer los cálculos:
• Convex Hull > Precisión > Primitivas
![Page 13: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/13.jpg)
Visualización de Datos II
División del espacio
Bounding Objects
• 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
![Page 14: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/14.jpg)
Visualización de Datos II
Aplicaciones de las distribuciones de grillas
Resolver colisiones x Objeto
• 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’
![Page 15: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/15.jpg)
Visualización de Datos II
Level of Detail:
La idea
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
![Page 16: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/16.jpg)
Visualización de Datos II
Level of Detail:
La idea
• Crear levels of detail (LODs) de los objetos:
![Page 17: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/17.jpg)
Visualización de Datos II
Level of Detail:
LOD Discreto
Los LODs los crea un diseñador 3D
En tiempo de ejecución se elije el LOD adecuado de acuerdo a la distancia (o por otro criterio)
![Page 18: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/18.jpg)
Visualización de Datos II
Level of Detail Continuo:
Pros
• 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
![Page 19: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/19.jpg)
Visualización de Datos II
Level of Detail :
Usar LODs (o no)
• 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)
![Page 20: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/20.jpg)
Visualización de Datos II
Donde mas se usa LOD?
![Page 21: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/21.jpg)
Visualización de Datos II
Resumen
Técnicas Tiempo Pros Cons
LOD Discreto
Continuo
Jerárquico
Generación
O(n2)
Consulta
O(1)
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
Space
Partition
Grillas
Quadtree/Octree
BSP
Generación
O(n)
Consulta
O(log n)
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
Generación
O(n)
Consulta
O(1)
Sencilla
Conveniente para objetos deformables
Eficiente
No son dependientes de la visualización
Son malas aproximaciones
![Page 22: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/22.jpg)
Visualización de Datos II
Otros métodos
Simplificación por apariencia
• Utilizar texturas en lugar de triángulos
• Se aplican mapas de normales (bumpmaps)
![Page 23: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/23.jpg)
Visualización de Datos II
Otros métodos
Simplificación por apariencia
1683 k Triangulos 10 k Triangulos10 k Triangulos + Shading
![Page 24: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/24.jpg)
Visualización de Datos II
Otros métodos
Clonado de objetos
• Varias instancias del mismo objeto– cambian las transformaciones o 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
![Page 25: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/25.jpg)
Visualización de Datos II
Otros métodos
Pre-rendered on texture
• Renderizar (offline/offscreen) el objeto a textura
• Útil para objetos estáticos (impostors)
• Costo Rendering->Polígono + textura mapeada
![Page 26: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/26.jpg)
Visualización de Datos II
Que provee OpenGL ?
• OpenGL provee estructuras de datos eficientes, métodos de control y manejo de búffer
– Vertex Buffer Objects
– Frame Buffer en GPU
– Culling Queries
– Renderizar los buffer a texturas
![Page 27: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/27.jpg)
Visualización de Datos II
Estructuras GPU
Vertex arrays(CPU) VBO(GPU)
![Page 28: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/28.jpg)
Visualización de Datos II
Culling Queries
• Verificar que un objeto O será dibujado en pantalla• Se dibuja una versión simple del objeto (por ej.bound,
convex hull)• Se leen cuantos píxeles afectaron del Buffer
– Si la cantidad de pixeles > cota – IncludeToRender(O)
• Se renderiza la escena final
![Page 29: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/29.jpg)
Visualización de Datos II
Render->Buffer
Depth
Speed
Color
![Page 30: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/30.jpg)
Visualización de Datos II
Efectos ?
![Page 31: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/31.jpg)
Visualización de Datos II
Efectos en Pantalla
![Page 32: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/32.jpg)
Visualización de Datos II
Efectos en Pantalla
![Page 33: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/33.jpg)
Visualización de Datos II
Efectos x Objeto
![Page 34: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/34.jpg)
Visualización de Datos II
Efectos x Objeto
![Page 35: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/35.jpg)
Visualización de Datos II
Administrar la GPU
• Realizar efectos en GPU requiere múltiples pasadas renderizando a distintos buffers
– depth_map(Blur-motion / Ambient Occlusion / Depth of Field / Shadow Map)
– Frame buffer(Edge detection / HDR / Reflections / Cubemap Reflections)
![Page 36: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/36.jpg)
Visualización de Datos II
Administrar la GPU
• Administrar los efectos visuales.
– No aplicar a objetos lejanos
– Filtrar objetos por Frustum (un frustum x cámara)
• Calcular depthBuffer
– Desactivar el color_buffer y renderizar solo la malla para obtener el depth_buffer
• Sombras :
– Aplicar siempre LOD
![Page 37: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/37.jpg)
Visualización de Datos II
Administrar la GPU
• Resolución de los búffer y texturas
> Resolución >Demora
Se utiliza generalmente
• Sombras = 2048x2048
• Depth Buffer = 1024 x 1024
• Color Buffer = 1024 x 1024
• Cubemaps = 512 x 512
• Texturas = 256 x 256
![Page 38: Optimizaciones y Colisiones - users.exa.unicen.edu.ar](https://reader030.fdocument.pub/reader030/viewer/2022013001/61cbd50366c224246631ee0e/html5/thumbnails/38.jpg)
Visualización de Datos II
Links
• Tutorial Frustum
– http://www.lighthouse3d.com/opengl/tutorials/
• http://graphics.cs.cmu.edu/projects
• http://developer.download.nvidia.com/whitepapers/2007/SDK10/RainSDKWhitePaper.pdf/