Introdução à Modelação Geométrica usando Malhas Poligonais Joaquim Madeira VI / CG - 2012/2013 1
Sumário Introdução: CG e áreas afins Modelação Geométrica Malhas poligonais Representação exacta vs. aproximada O pipeline de processamento Informação geométrica e inform. topológica Modelos válidos vs. inválidos A Fórmula de Euler Representação computacional VI / CG - 2012/2013 2
CG e áreas afins Visualization Áreas nucleares: CG, IP, CV and HCI Áreas satélites: Geometric Modeling Data and Information Visualization O que é comum? CG, IP : formatos de imagem, modelos de cor, CG, CV : modelos 3D, CV IP, CV : remoção de ruído, filtros, IP CG HCI Geometric Modeling VI / CG - 2012/2013 3
CG e áreas afins Visualization Modelação Geométrica IP CV : scanning 3D CG : modelos 2D e 3D CV CG HCI HCI : técnicas de interacção Geometric Modeling Visualização HCI : técnicas de interacção GeoM : modelos 2D e 3D CG : rendering VI / CG - 2012/2013 4
Exemplo Imagiologia Médica Processing pipeline Noise removal Segmentation Generating 2D / 3D models Data visualization User interaction [www.mevislab.de] VI / CG - 2012/2013 5
Modelação Geométrica Um modelo geométrico descreve a forma de um objecto real ou virtual (2D ou 3D) Porquê modelar? Representação computacional Distinção entre interior, exterior e fronteira de um modelo Cálculo de propriedades dependentes dessa distinção Centro de massa Área / Volume Detecção de interferências / colisões entre modelos Cálculo de reflexões e / ou transparências VI / CG - 2012/2013 6
Modelação Geométrica Como modelar? Representações matemáticas? Interpolação vs. aproximação? Estruturas de dados? Operações possíveis? Eficiência? VI / CG - 2012/2013 7
Modelos 2D Aplicações Scalable Vector Graphics (SVG) Informação 2D XML Várias primitivas Tipografia Computacional METAFONT (D. Knuth) Curvas de Bézier [Wikipedia] VI / CG - 2012/2013 8
Modelos 2D Aplicações Engenharia Projecto E.g., AutoCAD Proces. de imagens médicas Representação de contornos Interpolação vs. aproximação Suavidade [Wikipedia] VI / CG - 2012/2013 9
Modelos 3D Aplicações CAD / CAM [Wikipedia] VI / CG - 2012/2013 10
Visualização de Dados [Wikipedia] VI / CG - 2012/2013 11
CAD Simulação e Visualização [Wikipedia] VI / CG - 2012/2013 12
Modelos 3D Aplicações Realidade Virtual / Aumentada VI / CG - 2012/2013 13
Modelos 3D Aplicações Processamento de dados médicos Detalhe Malha triangular VI / CG - 2012/2013 14
Modelos 3D Aplicações Outras áreas de aplicação Jogos de computador Sistemas de informação geográfica (SIGs) Análise em Engenharia Prototipagem rápida VI / CG - 2012/2013 15
Ferramentas para modelação 3D Spatial Corp. s ACIS; 3D modeling engine http://www.spatial.com Siemens s Parasolid; 3D modeling engine http://www.plm.automation.siemens.com Dassault Systemes s CATIA; CAD / CAM / CAE http://www.3ds.com PTC s Pro/ENGINEER; 3D feature modeling http://www.ptc.com SolidWorks; 3D feature modeling http://www.solidworks.com VI / CG - 2012/2013 16
Ferramentas para modelação 3D Autodesk s 3ds max and Maya http://www.autodesk.com Blender: Free open source 3D content creation suite http://www.blender.org Rhino: Uninhibited free-form 3-D modeling http://www.rhino3d.com Google SketchUp: Intuitive 3D modeler http://www.sketchup.com POV-Ray: Persistence of Vision Ray-Tracer http://www.povray.org VI / CG - 2012/2013 17
Modelação Geométrica Áreas principais Modelação de curvas e superfícies Computer-Aided Geometric Design (CAGD) Modelação de sólidos Modelação de volumes Modelos mais simples Curvas : linhas poligonais Superfícies : malhas poligonais VI / CG - 2012/2013 18
Linhas Poligonais ( Polylines ) Questões : Linhas poligonais abertas ou fechadas? Representação exacta? Quando? Representação aproximada? Uma boa aproximação pode requerer um grande número de pontos / segmentos Níveis de detalhe (LODs) Aplicação habitual Representação de contornos em imagens, após identificação de pontos dominantes VI / CG - 2012/2013 19
Linhas Poligonais ( Polylines ) Contours segmented from CT images Contour description is point by point Too many points! Solution: Dominant Point Detection Contour detail Dominant points Polyline VI / CG - 2012/2013 20
Malhas Poligonais ( Meshes ) Definição Colecção de vértices, arestas e polígonos adjacentes Vértice Aresta Partilhado por, pelo menos, 2 arestas Liga 2 vértices Partilhada por, pelo menos, 2 polígonos, se a superfície for fechada Polígono Sequência (fechada) de, pelo menos, 3 vértices VI / CG - 2012/2013 21
Malhas Poligonais ( Meshes ) [Wikipedia] VI / CG - 2012/2013 22
Malhas Poligonais ( Meshes ) Pirâmide Quantas entidades? Malhas Homogéneas? Adaptativas? Triângulos!! [Wikipedia] VI / CG - 2012/2013 23
Polygonal Meshes Complex topology Complex geometry [Seidel and Belyaev, 2006] VI / CG - 2012/2013 24
Malhas Poligonais ( Meshes ) A superfície (i.e., o modelo) é definida como uma colecção de faces (p.ex., triângulos) adjacentes Que informação geométrica armazenar? Coordenadas dos vértices Que informação topológica (i.e., de conectividade) armazenar? Como se organizam as arestas e faces? Como determinar as entidades vizinhas? Eficiência! Que propriedades adicionais armazenar? Vector normal a cada face / vértice Coordenadas de textura Como verificar a validade de um modelo? 2-manifolds Fórmula de Euler VI / CG - 2012/2013 25
Algumas operações básicas Encontrar os vértices de uma aresta Encontrar as arestas que concorrem num vértice Encontrar os polígonos que partilham Um vértice Uma aresta Identificar erros. I.e., a falta de Um vértice / uma aresta / um polígono Visualizar / representar a malha VI / CG - 2012/2013 26
Malhas Poligonais ( Meshes ) Suportadas pela maioria das aplicações Diferentes formatos de ficheiro Malhas de triângulos são as mais habituais!! Faces planas Simplicidade dos algoritmos Robustez numérica Rendering eficiente VI / CG - 2012/2013 27
Malhas Poligonais ( Meshes ) Representação exacta vs. aproximada Quando? Modelos poliédricos Superfícies curvas Modelos de terrenos Superfícies / modelos mais complexos Uma boa aproximação pode requerer um grande número de faces Níveis de detalhe (LODs) VI / CG - 2012/2013 28
Modelos poliédricos A representação de um modelo poliédrico pode ser feita por diferentes malhas poligonais!! Importante para o shading / rendering Graus de liberdade Número dos vértices da malha Distribuição dos vértices da malha Definição das arestas / polígonos Exemplo Representar um cubo usando diferentes malhas poligonais VI / CG - 2012/2013 29
Superfícies curvas A representação da forma de uma superfície curva é um processo de aproximação Não há um modelo único!! Graus de liberdade Número dos vértices da malha Distribuição dos vértices da malha Definição das arestas / polígonos VI / CG - 2012/2013 30
Que modelo escolher? [CMU, 2000] VI / CG - 2012/2013 31
Critérios de escolha Suavidade ( smoothness ) Geometria diferencial Curvatura? Qualidade dos triângulos? Complexidade Número de vértices / faces Espaço de memória / Tamanho em ficheiro Custo computacional das operações habituais VI / CG - 2012/2013 32
Critérios de escolha Restrições Menor suavidade admissível Resolução? Percepção? Estudos com utilizadores Máxima complexidade admissível Velocidade de processamento / visualização Espaço de memória / Tamanho de ficheiro Ponto de equilíbrio? VI / CG - 2012/2013 33
Como ajustar? Refinement Aumentar a suavidade da superfície de um modelo!! Como determinar novos vértices e faces? Em que locais? Decimation Diminuir o número de vértices / faces!! Que arestas / faces colapsar? Em que locais? VI / CG - 2012/2013 34
Mesh decimation 90% reduction [Seidel and Belyaev, 2006] VI / CG - 2012/2013 35
Mesh smoothing [Seidel and Belyaev, 2006] VI / CG - 2012/2013 36
O pipeline de processamento Aquisição de uma nuvem de pontos ( Point Cloud ) Digitalização 3D Laser scanning Simulação numérica Dados volúmicos Criação de um modelo geométrico Triangulação VI / CG - 2012/2013 37
O pipeline de processamento Verificação da validade da malha poligonal P.ex., hole filling Edição manual? Análise da qualidade da superfície Qualidade dos triângulos Curvaturas Refinamento? / Dizimação? VI / CG - 2012/2013 38
Digitizing Real world object Cloud of points Digitized shape [Seidel and Belyaev, 2006] VI / CG - 2012/2013 39
Digitizing An Unorganized Set of Points A Mesh or Implicit Surface Reconstruction [Seidel and Belyaev, 2006] VI / CG - 2012/2013 40
Áreas de aplicação Engenharia Mecânica Shape Interrogation Digitalizar uma peça manufacturada e compará-la com o modelo 3D que lhe deu origem Reverse Engineering Digitalizar uma peça para criar um seu modelo 3D Engenharia Civil Reconstrução de Superfícies Criar modelos 3D para grandes edifícios / monumentos VI / CG - 2012/2013 41
Áreas de aplicação Medicina Diagnóstico Modelos 3D a partir de dados de TAC, MRI, etc. Simulação / Treino cirúrgico Pacientes virtuais Planeamento cirúrgico Implantação de próteses E-Comércio Transmissão de modelos 3D para clientes Virtual showrooms Roupas Carros VI / CG - 2012/2013 42
Áreas de aplicação Jogos de Computador Animação Cinema Efeitos especiais Actores virtuais VI / CG - 2012/2013 43
Games Lara Croft 1996 [Wikipedia] 2007 VI / CG - 2012/2013 44
Animation films Pixar Toy Story 1995 Ratatouille 2007 [www.pixar.com] VI / CG - 2012/2013 45
Special effects ILM 1991 1994 1999 [Wikipedia] VI / CG - 2012/2013 46
Representação da superfície de um modelo Informação geométrica Coordenadas dos vértices Informação topológica ou de conectividade Definição (abstracta) de vértices, arestas e faces Informação de incidência e adjacência Propriedades Vectores normais ( Normal Maps ) Coordenadas de texturas VI / CG - 2012/2013 47
Informação topológica Vértice Vértice regular Vértice singular? Aresta Limitada por dois vértices Aresta de fronteira : 1 só face incidente Aresta regular : 2 faces incidentes Aresta singular : 3 ou mais faces incidentes Loop Ciclo ou sequência (fechada) Sequência orientada de arestas VI / CG - 2012/2013 48
Informação topológica Face Shell Limitada por um conjunto de sequências (disjuntas) de arestas A fronteira exterior As fronteiras de eventuais buracos Conjunto de faces conexas Exemplos? VI / CG - 2012/2013 49
Modelos válidos vs. inválidos 2-Manifold Model Em torno de qualquer um dos seus pontos, há uma vizinhança homeomórfica do plano Não há vértices singulares!! Não há arestas singulares!! Non-Manifold Model Dangling Edges / Faces Touching Faces São modelos não manufacturáveis ou inválidos!! Exemplos? VI / CG - 2012/2013 50
A Fórmula de Euler Permite verificar a consistência da informação topológica!! V + F E = 2 Em que casos se aplica? Modelo tem uma superfície fechada e orientável! Cada face é limitada por uma única sequência de arestas! Não há quaisquer furos passantes! Nem cavidades! Exemplos Tetraedro Diferentes representações de um cubo VI / CG - 2012/2013 51
A Fórmula de Euler-Poincaré Generalização!! V + F E (L F) 2 (S G) = 0 L Número de ciclos (sequências de vértices) S Número de shells G Genus : número de ansas ( handles ) Em que casos se aplica? Furos passantes Cavidades Exemplo? VI / CG - 2012/2013 52
Verificação da consistência Verificar se Todos os polígonos fecham Todas as arestas são usadas pelo menos uma vez Cada vértice pertence, pelo menos a 2 arestas 1 polígono VI / CG - 2012/2013 53
Representação computacional Memória ou ficheiro? Listas de vértices Informação topológica?? Listas de polígonos / triângulos isolados Como determinar os vizinhos?? Listas de vértices, arestas e faces Eficiência? Winged-edge or half-edge data structures VI / CG - 2012/2013 54
Lista de Polígonos Isolados Cada polígono é representado pela lista ordenada das coordenadas dos seus vértices CCW Ineficiência Espaço : múltipla representação dos vértices Falta informação sobre vértices e arestas comuns Essa detecção pode ser muito ineficiente!! Rendering : desenho duplicado das arestas!! Exemplo? VI / CG - 2012/2013 55
STL File Format Stereolitography File Format Malha definida por T triângulos isolados Cada triângulo definido por 3 vértices Normal unitária a cada triângulo Total : 9T números reais Utilização Prototipagem Rápida CAM VI / CG - 2012/2013 56
Estereolitografia [Wikipedia] VI / CG - 2012/2013 57
Lista de Vértices Existe uma lista / array de vértices Coordenadas dos vértices armazenadas uma só vez! Fácil alteração das coordenadas de um vértice Cada polígono é descrito pela sequência dos seus vértices Ponteiro ou índice Aplicação : armazenamento em ficheiro Ineficiência Difícil detectar que polígonos partilham uma aresta!! Rendering : desenho duplicado das arestas Exemplo? VI / CG - 2012/2013 58
Indexed Face Set VRML ou MCGL ou Array de coordenadas dos vértices 3D Um índice para cada vértice Polígono (convexo) de n lados definido por n índices Exemplo [0,1,2,-1,2,1,3,4,-1] VI / CG - 2012/2013 59
OBJ File Format Lista dos vértices v 10 15 20 v 23 34 56 Lista das faces f 1 2 3 f 2 3 4 Informação adicional Vectores normais Coordenadas de textura VI / CG - 2012/2013 60
Informação topológica Como armazenar informação de incidência e adjacência? Como responder rapidamente às queries básicas? Quais os vértices extremos de uma aresta? Quais as faces adjacentes de uma aresta? Quais as arestas incidentes numa aresta? Quais as arestas concorrentes num vértice? Quais os vértices vizinhos de um dado vértice? Eficiência Temporal Espacial VI / CG - 2012/2013 61
Lista de Vértices Adjacentes [Wikipedia] VI / CG - 2012/2013 62
Lista de Vértices + Lista de Faces [Wikipedia] VI / CG - 2012/2013 63
Listas de Vértices, de Arestas e de Faces Existe uma lista / array de vértices Existe uma lista / array de arestas, referenciando Os respectivos vértices Os polígonos a que pertencem Existe uma lista de polígonos, referenciando As arestas que os constituem Rendering : desenham-se arestas, e não polígonos!! Problema Como determinar as arestas que concorrem num dado vértice? Exemplo? VI / CG - 2012/2013 64
A estrutura de dados Winged-Edge Representação explícita de vértices, arestas e faces Permite Modificação dinâmica de uma malha Resposta eficiente a algumas queries VI / CG - 2012/2013 65
A estrutura de dados Winged-Edge VI / CG - 2012/2013 66
A estrutura de dados Half-Edge VI / CG - 2012/2013 67
Bibliotecas para manipulação de malhas OpenMesh Usado no IEETA!! CGAL Computational Geometry Algorithms Library MCGL Matlab Computer Graphics Library VI / CG - 2012/2013 68
Bibliografia principal Foley, J., A. Van Dam, S. Feiner, J. Hughes, R. Phillips, Introduction to Computer Graphics, Addison Wesley, 1994 Foley, J., A. Van Dam, S. Feiner, J. Hughes, Computer Graphics, Principles and Practice, 2nd. Ed., Addison Wesley, 1991 VI / CG - 2012/2013 69