estrategias de optimización visualización ii – 2009 ing. juan p.d’amato
TRANSCRIPT
![Page 1: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/1.jpg)
Estrategias de Optimización
Visualización II – 2009Ing. Juan P.D’Amato
![Page 2: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/2.jpg)
Visualización de Datos II
![Page 3: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/3.jpg)
Visualización de Datos II
![Page 4: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/4.jpg)
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
![Page 5: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/5.jpg)
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
![Page 6: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/6.jpg)
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
![Page 7: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/7.jpg)
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
![Page 8: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/8.jpg)
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
![Page 9: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/9.jpg)
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
![Page 10: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/10.jpg)
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
![Page 11: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/11.jpg)
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)
![Page 12: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/12.jpg)
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
![Page 13: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/13.jpg)
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
![Page 14: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/14.jpg)
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
![Page 15: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/15.jpg)
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
![Page 16: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/16.jpg)
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
![Page 17: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/17.jpg)
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
![Page 18: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/18.jpg)
Visualización de Datos II
Requiere dos datos únicamente: ◦ Posiciones con respecto al centro del objeto y radio de la esfera
![Page 19: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/19.jpg)
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
![Page 20: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/20.jpg)
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
![Page 21: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/21.jpg)
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
![Page 22: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/22.jpg)
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
![Page 23: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/23.jpg)
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;
![Page 24: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/24.jpg)
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
![Page 25: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/25.jpg)
Visualización de Datos II
Crear levels of detail (LODs) de los objetos:
69,451 polígonos 2,502 p 251 p 76 p
![Page 26: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/26.jpg)
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)
![Page 27: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/27.jpg)
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)
![Page 28: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/28.jpg)
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
![Page 29: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/29.jpg)
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)
![Page 30: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/30.jpg)
Visualización de Datos II
Texturas (mippmaps)
![Page 31: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/31.jpg)
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
![Page 32: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/32.jpg)
Visualización de Datos II
1683 k Triangulos 10 k Triangulos10 k Triangulos + Shading
![Page 33: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/33.jpg)
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
![Page 34: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/34.jpg)
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
![Page 35: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/35.jpg)
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
![Page 36: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/36.jpg)
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
![Page 37: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/37.jpg)
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()
![Page 38: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/38.jpg)
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
![Page 39: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/39.jpg)
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);
![Page 40: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/40.jpg)
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
![Page 41: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/41.jpg)
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
![Page 42: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/42.jpg)
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
![Page 43: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/43.jpg)
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.
![Page 44: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/44.jpg)
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)
![Page 45: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/45.jpg)
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
![Page 46: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/46.jpg)
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
![Page 47: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/47.jpg)
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’
![Page 48: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/48.jpg)
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
![Page 49: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/49.jpg)
Visualización de Datos II
![Page 50: Estrategias de Optimización Visualización II – 2009 Ing. Juan P.D’Amato](https://reader035.vdocuments.pub/reader035/viewer/2022062519/5665b4421a28abb57c907e0b/html5/thumbnails/50.jpg)
Visualización de Datos II
Tutorial Frustum◦ http://www.lighthouse3d.com/opengl/tutorials/
http://graphics.cs.cmu.edu/projects/