1 / 127

INF 1366 – Computação Gráfica Interativa Modelagem Geométrica

INF 1366 – Computação Gráfica Interativa Modelagem Geométrica. Alberto B. Raposo abraposo@tecgraf.puc-rio.br http://www.tecgraf.puc-rio.br/~abraposo/INF1366/index.htm. Computação Gráfica e Áreas Correlatas. processamento de imagens. Imagem digital. computação gráfica (síntese de imagens).

Download Presentation

INF 1366 – Computação Gráfica Interativa Modelagem Geométrica

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. INF 1366 – Computação Gráfica InterativaModelagem Geométrica Alberto B. Raposo abraposo@tecgraf.puc-rio.br http://www.tecgraf.puc-rio.br/~abraposo/INF1366/index.htm Alberto Raposo – PUC-Rio

  2. Computação Gráfica e Áreas Correlatas processamento de imagens Imagem digital computaçãográfica(síntese deimagens) visão computacional Modelos modelagem geométrica Alberto Raposo – PUC-Rio

  3. Estrutura de aplicação gráfica interativa tradicional Carla Freitas, UFRGS Aula de hoje (e as próximas) Alberto Raposo – PUC-Rio

  4. Modelagem vs. Visualização • Modelagem: • Interessada na descrição de uma cena • Externamente: representação na forma de arquivo contendo as informações geométricas (e outras) • Internamente (na execução do programa): representação em estrutura de dados residente em memória • Visualização: • Interessada na visualização (display) da cena a partir de uma dada câmera (posição do observador) • A princípio, são conceitos independentes. Alberto Raposo – PUC-Rio

  5. Espaços de Coordenadas • Plano ou R2 (2D) y 0 x x Marcelo Gattass, PUC-Rio Alberto Raposo – PUC-Rio

  6. z y 0 x Espaços de Coordenadas • Espaço ou R3 (3D) Marcelo Gattass, PUC-Rio Alberto Raposo – PUC-Rio

  7. Modelagem Geométrica • Tipos de estruturação de dados • Wireframe (representação de arestas) • Boundary representation (B-Rep) • Quadtree / Octree • Primitivas • Malhas de Polígonos • LOD (nível de detalhe) • Curvas • Geração de 3D a partir de 2D • Outras técnicas • Metaballs • Subdivision Surfaces • Low-Poly Alberto Raposo – PUC-Rio

  8. Primitivas X3D • Box, Cone, Cylinder, Sphere, Text • Nó Shape • Geometria • Aparência • Material e/ou Textura Alberto Raposo – PUC-Rio

  9. Box <Shape DEF=“MyShapeNode” bboxCenter = “0 0 0” bboxSize= “-1 -1 -1” <Box DEF=“SingleGeometryNode” size = “1 1 1” solid = “true” /> <Appearance DEF = “SingleAppearanceNode” /> </Shape> Indica se é vistoapenas de um lado Alberto Raposo – PUC-Rio

  10. Cone <Cone DEF=“MyConeNode” bottomRadius = “1” height = “2” bottom = “true” side = “true” solid = “true” /> Alberto Raposo – PUC-Rio

  11. Cylinder <Cylinder DEF=“MyCylinderNode” radius = “1” height = “2” bottom = “true” top = “true” side = “true” solid = “true” /> Alberto Raposo – PUC-Rio

  12. Sphere <Sphere DEF=“MySphereNode” radius = “1” solid = “true” /> Alberto Raposo – PUC-Rio

  13. Text <Text DEF=“MyTextNode” length = “” maxExtent = “0.0” string = “some” “text” top = “true” solid = “false” > <FontStyle DEF=“MyFontStyle” family = ‘ “SERIF” ’ justify = ‘ “BEGIN” ’ language = “ “ style = ‘ “PLAIN” ’ horizontal = “true” leftToRight = “true” topToBottom = “true” size = “1.0” spacing=“1.0” /> </Text> Alberto Raposo – PUC-Rio

  14. PointSet <PointSet Def=“MyPointNode” <Color color=“1 0 0, 0 1 0, 0 0 1, 0.8 0.8 0.8” /> < Coordinate point=“-2 0 0, 0 0 0, 0 0 2, 0 0 4” /> </PointSet> Alberto Raposo – PUC-Rio

  15. Wireframe • Representação de arestas (pontos + conexões entre pontos) Alberto Raposo – PUC-Rio

  16. Wireframe em VRML: IndexedLineSet #VRML V2.0 utf8 Transform { children [ Shape { geometry IndexedLineSet { coord Coordinate { point [ 0 0 0, 1 0 0, 1 1 0, 0 1 0, 0 0 1, 1 0 1, 1 1 1, 0 1 1 ] } coordIndex [ 0 1 -1 6 7 -1 1 2 -1 7 4 -1 2 3 -1 0 4 -1 3 0 -1 1 5 -1 4 5 -1 2 6 -1 5 6 -1 3 7 -1 ] color Color { color [ 0 0 0, 0 0 0, 0 0 0, 0 0 0, 0 0 0, 0 0 0, 0 0 0, 0 0 0, 0 0 0, 0 0 0, 0 0 0, 0 0 0 ] } } } ] } # end of children and Transform Background {skyColor 1 1 1} Alberto Raposo – PUC-Rio

  17. Wireframe em X3D: IndexedLineSet Alberto Raposo – PUC-Rio

  18. Wireframe • Vantagens • Simplicidade e velocidade na visualização dos modelos (geram-se apenas linhas) • Problemas • Dificuldade de realizar operações com sólidos (cálculo de massa, volume, determinação de inclusão...) • Representação ambígüa (sujeita a interpretações diferentes) As duas representações abaixo são válidas para o modelo em wireframe à esquerda Márcio Pinho, PUCRS Alberto Raposo – PUC-Rio

  19. Boundary Representation (B-Rep) • Define-se o modelo 3D a partir de conjunto de polígonos que delimitam uma região fechada no espaço • Esses polígonos são as faces do objeto 3D (poliedro) Alberto Raposo – PUC-Rio

  20. Boundary Representation (B-Rep) • Representações • 1 lista de vértices explícita: FACE: (x1, y1, z1)-(x2, y2, z2)- .... - (xn, yn, zn); • 2 listas: lista de vértices e lista das topologias das faces (caso do IndexedFaceSet - VRML) VÉRTICES: 1 - (x1, y1, z1) 2 - (x2, y2, z2) .... .... .... n - (xn, yn, zn) • 3 listas: vértices, arestas e faces FACES: 1 - v1, v2, v3, ...., vn 2 - v3, v5, ..., vn .... .... .... n – vn, v4, ..., v1 Alberto Raposo – PUC-Rio

  21. B-Rep em VRML: IndexedFaceSet (2 listas) #VRML V2.0 utf8 Transform { children [ Shape { geometry IndexedFaceSet { coord Coordinate { point [ 0 0 0, 1 0 0, 1 1 0, 0 1 0, 0 0 1, 1 0 1, 1 1 1, 0 1 1 ] } coordIndex [ 0 1 5 4 -1 3 7 6 2 -1 6 7 4 5 -1 7 3 0 4 -1 3 2 1 0 -1 2 6 5 1 -1 ] color Color { color [ 1 0 0, 0 1 0, 0 0 1, 1 0 1, 1 1 0, 0 1 1] } colorPerVertex FALSE colorIndex [ 0, 1, 2, 3, 4, 5 ] } } ] } # end of children and Transform Background {skyColor 1 1 1} Lista de vértices Lista de faces Alberto Raposo – PUC-Rio

  22. B-Rep em X3D: IndexedFaceSet <IndexedFaceSet DEF='Box1_Geo' containerField='geometry' creaseAngle='0.524' coordIndex=' 0 1 2 -1, 0 2 3 -1, 1 4 5 -1, 1 5 2 -1, 2 5 6 -1, 2 6 3 -1, 3 6 7 -1, 3 7 0 -1, 0 7 4 -1, 0 4 1 -1, 5 4 7 -1, 5 7 6 -1'> <Coordinate DEF='Box1_Coord' containerField='coord' point=' -.5 .5 -.5, -.5 .5 .5, 1.86662 .5 2.8688, 1.86662 .5 1.8688, -.5 -.5 .5, .5 -.5 .5, 2.23105 -.5 -1.31997, -.5 -.5 -.5'/> Alberto Raposo – PUC-Rio

  23. Exemplo de 3 listas http://gbdi.icmc.usp.br/documentacao/apostilas/cg/downloads/modpoliedrais.pdf Alberto Raposo – PUC-Rio

  24. Quadtrees (2D) / Octrees (3D) • Estruturas de dados (árvores) para decomposição hierárquica do plano (quadtrees) / espaço (octrees) • Podem ser usadas para guardar diferentes tipos de dados, por ex. • Conjunto de pontos • Malhas poligonais Alberto Raposo – PUC-Rio

  25. Quadtrees • Todo nó representa um quadrado no plano. • Todo nó interno possui exatamente quatro filhos, os quais representam os quatro quadrantes do nó pai: noroeste, nordeste, sudoeste e sudeste. • A subdivisão continua conforme algum critério de parada. http://www.tecgraf.puc-rio.br/~hermann/gc/ Alberto Raposo – PUC-Rio

  26. Quadtree – Critério de Parada • Exemplo: • Começa com quadrado envolvendo todo o objeto, que em seguida é dividido em 4 quadrados menores. • Cada um é classificado em Cheio: o quadrado está totalmente dentro do objeto Vazio: o quadrado está totalmente fora do objeto Cheio-Vazio: apenas parte do quadrado é ocupada pelo objeto • Para cada quadrado cheio-vazio, repetir os procedimentos 1 e 2. • O procedimento encerra quando só existiremquadrados cheios e vazios Pinho, PUCRS Alberto Raposo – PUC-Rio

  27. Quadtree - Exemplo http://lcp.lcad.icmc.usp.br/~nonato/ED/Quadtree/quadtree.htm Alberto Raposo – PUC-Rio

  28. Quadtree – Programa Exemplo Autores: Patrícia Zottis e Rodrigo Fehse Alterações: Leonardo Langie - PUCRS Alberto Raposo – PUC-Rio

  29. Octree • Idêntica à Quadtree, mas considerando o espaço 3D • Cubo é dividido em 8 sub-cubos Alberto Raposo – PUC-Rio

  30. Octrees Alberto Raposo – PUC-Rio

  31. Algoritmo deconstrução em C Octree Pinho, PUCRS Alberto Raposo – PUC-Rio

  32. Octrees FlipCode.com Alberto Raposo – PUC-Rio

  33. Uso de Octrees e Quadtrees • Exemplos: • Frustum culling, detecçãode colisão, operações deunião e interseção • Se pai (não) é importante,todos os filhos também(não) são • Desvantagem: • Trabalhosas para manipular FlipCode.com Alberto Raposo – PUC-Rio

  34. Malhas de Polígonos • Construção de modelos 3D usando grupos de polígonos. • Como cada polígono é planar, necessita-se grande quantidade de polígonos para dar a impressão de superfícies curvas 1K polígonos 10K polígonos MIT EECS 6.837, Durand and Cutler Alberto Raposo – PUC-Rio

  35. Mesh Tesselation • Construção de malhas poligonais • A partir de representações abstratas • A partir de núvens de pontos http://www.cs.lth.se/Education/Courses/EDA221/ http://www.ticam.utexas.edu/CCV/projects/VisualEyes/visualization/geomod/cloud/cloud.html Alberto Raposo – PUC-Rio

  36. Malhas de triângulos • Costuma-se usar triângulos como o polígono das malhas • O polígono é gerado com exatamente 3 vértices por face • Um vértice pode pertencer a qualquer número de faces • Adjacência calculada em tempo constante • Triângulos são sempre planares Giambruno, 2003 Alberto Raposo – PUC-Rio

  37. Alguns tipos de malhas de triângulos • O primeiro triangulo é desenhado com três vértices, e os demais com apenas um. • Muitos dos vértices são comuns a vários polígonos que o constituem. Assim, a organização dos polígonos com vista o compartilhamento dos vértices comuns traduz-se num envio e processamento únicos destes vértices [Möller 2003]. Strip Fun Alberto Raposo – PUC-Rio

  38. 1 3 3 2 1 1 3 5 0 2 0 4 0 2 1 2 0 GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP 6 1 5 2 1 5 2 3 1 3 0 4 7 0 3 4 0 2 4 GL_QUADS GL_POLYGON (convexo) GL_QUAD_STRIP 2 3 1 3 1 3 5 1 4 4 0 2 5 0 4 0 2 GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_TRIANGLES Tipos de primitivas em OpenGL 4 Alberto Raposo – PUC-Rio

  39. glBegin(tipo_de_prim); …define attributo de vértice …define vértice glEnd(); Exemplo em OpenGL Alberto Raposo – PUC-Rio

  40. Problema Geral • Quantos mais polígonos, menos facetada fica a superfície curva • Mais polígonos, significa mais tempo de processamento!!! (menos polígonos) (mais polígonos) Alberto Raposo – PUC-Rio

  41. LOD – Level of Detail • À medida que à distância da câmera a um modelo aumenta, o espaço por este ocupado na janela diminui e, conseqüentemente, o detalhe com que é visualizado também diminui. • O LOD permite definir representações alternativas para um objeto gráfico, cada uma sendo ativada de acordo com a distância ao observador. Alberto Raposo – PUC-Rio

  42. LOD • Torna-se desnecessário e ineficiente definir o objeto com todo detalhe. O objetivo principal é o de utilizar diferentes representações de um modelo, normalmente de resoluções distintas, que serão selecionadas de acordo com um critério de decisão pré-determinado. Um dos critérios de decisão mais utilizado é à distância do modelo à câmera. Alberto Raposo – PUC-Rio

  43. Tipos de LOD • Discreto • A construção das diferentes representações do modelo é realizada numa fase de pré-processamento, sendo associada a cada uma delas um intervalo de distâncias à câmera dentro do qual o nível de detalhe deve ser utilizado. • Durante a execução, o algoritmo calcula a distância da câmera ao objeto e avalia qual dos diferentes níveis de detalhe deve ser utilizado. Alberto Raposo – PUC-Rio

  44. Tipos de LOD • Contínuo • Os níveis de detalhe são gerados em tempo de execução. • View dependent LOD • Extensão de LOD contínuo usando posição do observador para definir o nível de detalhe. Alberto Raposo – PUC-Rio

  45. Exemplo de LOD Discreto • VRML: nó LOD The Annotated VRML Reference Alberto Raposo – PUC-Rio

  46. LOD Discreto Alberto Raposo – PUC-Rio

  47. Exemplo de LOD – X3D Alberto Raposo – PUC-Rio

  48. Exemplo de LOD – X3D <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.1//EN" "http://www.web3d.org/specifications/x3d-3.1.dtd"> <X3D profile="Immersive" version="3.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifications/x3d-3.0.xsd"> <head> </head> <Scene> <LOD range="15" forceTransitions="false"> <Group DEF="Model"> <Shape> <Appearance> <Material diffuseColor='1 0 0'/> </Appearance> <Box/> </Shape> Alberto Raposo – PUC-Rio

  49. Exemplo de LOD – X3D <Shape> <Appearance> <Material diffuseColor='0 0 1'/> </Appearance> <Sphere radius='1.4'/> </Shape> </Group> <Group DEF="Image"> <Shape> <Appearance> <Material diffuseColor='0 0 1'/> </Appearance> <Box/> </Shape> </Group> </LOD> </Scene> </X3D> Alberto Raposo – PUC-Rio

  50. LOD Contínuo View dependent LOD Alberto Raposo – PUC-Rio

More Related