Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Representação Geométrica
Rodrigo de Toledo (CG1, UFRJ)
2
Níveis de escala Cena Meso Objetos do mundo virtual Textura Aqui Macro
Microscale Microscale: niveau PHISIQUE FR (Subsurface scattering) FR (Photon mapping) Representação dos objetos Nível fotométrico
3
Representação da geometria
Implícita Equação determina a descrição geométrica Ex: quádricas, cúbicas e torus Paramétrica Função determina regra de construção Ex: Bézier, Nurbs Explícita A geometria é descrita “ponto-a-ponto” Ex: malha de triângulo e mapa de alturas
4
Representação Geométrica Implícita
Quádricas, cúbicas, etc... CSG
5
Exemplo: círculo Representação Implícita: Representação Paramétrica:
Representação Explícita:
6
Superfícies implícitas
superfícies implícitas são definidas por uma função f : R3R A função divide o espaço em três: surperfíce: f(x,y,z) 0 interior: f(x,y,z) < 0 exterior: f(x,y,z) > 0 f 0 f 0
7
Classificação das superfícies implícitas
O grau da polinomial da função é que define o grau da superfície. Grau 2: quádricas Grau 3: cúbicas Grau 4: quárticas A quantidade de parâmetros S para cada grau p pode ser calculada usando: Calcular para grau 2, 3 e 4
8
Quádricas Quádricas: Esfera: x2 + y2 + z2 = 1
9
Representação matricial das quádricas
Matriz simétrica Q4x4 contendo os 10 coeficientes:
10
Classificação das quádricas
cylinders ellipsoids cones hyperboloids spheres Para entender a nomenclatura 3D, primeiro vamos ver a nomenclatura 2D...
11
Curvas em 2D
12
Classificação das Quádricas
Saddle Cela do cavalo vide wikepedia
13
Cúbicas
14
Quárticas Torus é a quártica mais conhecida:
15
Qual a complexidade da equação do coração?
f(x,y,z) = (2x2 + y2 + z2 – 1)3 – 0.1 x2 z3 – y2 z3
16
Cálculo da normal à superfície
Gradiente da superfície no ponto x,y,z Qual é a normal de uma quádrica? Qual é a normal normalizada do ponto [x,y,z] numa esfera de raio unitário?
17
CSG (Constructive Solid Geometry)
18
CSG Operações booleanas Diferença União Interseção A diferença
não é comutativa
19
CSG Objeto é representado por uma árvore Obs:
Operadores em nós internos Primitivas simples nas folhas Combinação bottom-up Obs: Como há operações não comutativas, as arestas são ordenadas Pode haver nós de transformação: rotação, translação e escala...
20
Half-spaces Alguns sistemas CSG, além de primitivas sólidas, também fazem uso de half-spaces, ou seja, planos que dividem o espaço em dois Como definir um cubo a partir de half-spaces? 6 half-spaces Vantagem: Para se fazer um corte, não precisa usar um objeto com vários lados. Desvantagem: Problema de validação: nem toda combinação pode resultar em um objeto válido (talvez só faça sentido usar para subtração)
21
CSG & raytracing Um objeto em CSG é comumente descrito por combinações de objetos implícitos, cujos cálculos de interseção com a reta são conhecidos, tornando o raytracing de objetos CSG uma extensão natural.
22
CSG & raytracing Realizar operações booleanas com sólidos nem sempre é uma operação fácil É mais fácil interpretar o que acontece com um raio atravessando esse sólido. redução do problema a cálculos em intervalos 1D Goldstein and Nagel, “3-D Visual Simulation”, Simulation, January 1971.
23
CSG 1D A B A B A: B: A B:
24
CSG 1D A: B: A B: A B: A – B: B – A: A – B B – A A B
25
CSG 1D Classificação in/out por região: A B A B A B A – B B – A in
Exercício: Preencher a tabela acima!
26
CSG & Rasterização Também é possível visualizar sólidos CSG com rasterização Ordenação a posteriori dos fragmentos (pixels de cada primitiva) Vide: Rossignac and Requicha, “Depth-buffering Display Techniques for Constructive Solid Geometry”, CG & A, September 1986.
27
Algumas questões A ordem na árvore tem importância?
Sim, verticalmente e horizontalmente (dif.). Existe uma representação única, dado um objeto final e suas primitivas? Não A árvore tem que ser binária? Os nós de união e interseção poderiam ter mais de um filho, mas diferença é sempre entre dois filhos.
28
Possíveis questões de prova
Monte a árvore CSG deste sólido, sabendo que as folhas são 2 cilindros e 1 esfera Monte a árvore CSG deste sólido e desenhe o que acontece com o raio r ao longo do seu caminho para cada nó da árvore à raíz. in r out
29
Representação Geométrica Paramétrica
Curvas paramétricas cúbicas Introdução Continuidade Algoritmo de De Casteljau Hermite, Bézier e Splines (B-Splines e Nurbs) Superfícies paramétricas bicúbicas Bézier...
31
Curvas Paramétricas Cúbicas
Por que paramétricas? são descritas em t f(t), 0 ≤ t ≤ 1 t = 0.8 0.7 1.0 0.6 0.9 0.4 0.0 0.1 0.2 0.3 0.5
32
Por que cúbicas? Grau 3: Por que não <3? Por que não >3?
Pouca flexibilidade Por que não >3? Computacionalmente caro “Franjas” indesejáveis (unwanted wiggles) Por que 3? Controle suave (derivadas) da curva passando em dois pontos Menor grau de curva em 3D
33
Paramétricas Por que não f(x), ao invés de f(t)?
Mas como representar esses casos? f(x) x
34
Uma função para cada dimensão
36
Matricialmente Derivada em t ?
37
Algoritmo de De Casteljau
Interpolação x Aproximação
38
John Edson R. de Carvalho
39
12 12
40
Algoritmo de De Casteljau
P1 P12 (u) u = 0.25 P02 (u) P01 (u) P0 P2
41
Algoritmo de De Casteljau
P1 u = 0.5 P02 (u) P12 (u) P01 (u) P0 P2
42
Algoritmo de De Casteljau
P1 P01 (u) u = 0.75 P02 (u) P12 (u) P0 P2
43
Algoritmo de De Casteljau
P1 0 ≥ u ≥ 1 P02(u) P0 P2
44
u = 0.25 P1 P12 P02 P01 Para a animação funcionar: 45º P012 P0 P2
45
13 13
49
Peso (influência) de cada ponto:
∑bi(u) = 1, 0 ≥ u ≥ 1
50
Juntando curvas Como representar uma curva grande?
Poderia se usar uma curva de grau n (n grande para caramba ) Ou, pode-se fazer emendas de cúbicas Mas nesse caso, queremos garantir uma boa continuidade no ponto de junção
51
Continuidade Geometric Continuity G0 G1 C1 C2 Cn
Duas curvas tem um ponto de junção G1 Se no ponto de junção, a direção (não necessariamente a magnitude) do vetor tangente é igual para as duas curvas C1 Se, além da direção, a magnitude for igual. C2 Se a direção e magnitude da derivada segunda for igual. Cn Se a direção e magnitude de for igual. Para funções de grau alto, pode-se ter continuidade de grau ainda maior: n-polinomial Cn-1 Existe G2? Existe C0? Normalmente estamos interessados em G1, C1 pode ser over-restriction
53
C0, C1, C2, C3, C4
54
Classificação das curvas
Definidas por 4 constrains geométricas Bézier (4 pontos) Hermite (2 pontos e 2 tangentes) Splines São C1 e C2 nos pontos de junção Porém, não interpolam os pontos (aproximam) 3 tipos: B-splines Nonuniform B-splines (Nurbs) β-splines
55
Blending Function Matricialmente, podemos definir a curva como:
Vamos reescrever C como o resultado da multiplicação entre M e G, onde G são as constrains geométricas Blending Function: B = T • M
56
Bézier 70’s Como vimos no algoritmo de De Casteljau para construção de curvas de Bézier 4 pontos definem a curva de Bézier No caso acima, quem são G1, G2, G3 e G4? P0 P1 P2 P3
57
Bézier No caso de Bézier, quais são os valores de M11 a M44?
Lembrando que: (a-b)3 = a3 – 3a2b + 3ab2 – b3 e (a-b)2 = a2 – 2ab + b2
58
Últimas observações Bézier
Fecho convexo
59
Últimas observações Bézier
Como garantir que duas curvas de Bézier P0P1P2P3 e P4P5P6P7 tenham Continuidade G0? Continuidade G1? Continuidade C1? Qual a grau de continuidade da seguinte curva?
60
Hermite 4 constrains geométricos: 2 pontos e suas 2 tangentes: R1 P4
61
Hermite Hermite Blending Function
Familia de curvas alterando magnitude e direção de R1
62
Splines Origem: “ducks” usados para retorcer uma chapa de metal flexível (spline) na determinação de superfícies curvas para navios, aviões e carros. Observe que a spline interpola todos os pontos de controle A spline é contínua em C0, C1 e C2.
63
B-splines Splines tem duas desvantagens: B-splines são uma solução:
Os coeficientes dependem de todos os pontos de controle ou seja, mover um ponto de controle pode afetar toda a curva A computação depende de inversão de matrizes B-splines são uma solução: Os segmentos dependem de alguns poucos pontos de controle Tem a mesma continuidade das splines Menor computação Porém: não interpolam todos os pontos Uniforme x não-uniforme Se os pontos de controles estiverem equidistantemente distribuídos, então ela é uniforme Caso contrário: não uniforme: NURBS mais sobre splines
64
Superfícies paramétricas
65
Superfícies paramétricas bicúbicas
Multiplicação de duas curvas A informação geométrica que define uma curva é também em função de uma variável paramétrica Forma geral de uma superfície 3D:
66
Superfícies paramétricas bicúbicas
Vimos que um curva cúbica pode ser definida por (onde G é o vetor geométrico): Substituindo t por s (temos que ter outra variável para o caso das superfícies), então: Imaginemos os pontos em G variando em 3D, parametrizado por t: Se Gi(t) forem cúbicos, então Q(s,t) é uma superfície paramétrica bicúbica
67
Cada Gi(t) = T•M•G, é definido por Gi = [gi1, gi2, gi3, gi4]T
Usando (ABC)T= CT • BT • AT, Gi(t) = GT•MT•TT = [gi1, gi2, gi3, gi4]T •MT •TT, Então: Escrito separadamente:
68
Superfícies de Bèzier
69
Retalhos de Bézier x(s,t) Curvas na fronteira são curvas de Bézier
Qualquer curva para s ou t constante é uma curva Bézier Podemos pensar assim: Cada linha da grade com 4 pontos de controle define uma curva de Bézier para o parâmetro s Ao avaliar cada curva para um mesmo s obtemos 4 pontos de controle “virtuais” Pontos de controle “virtuais” definem uma curva Bézier em t Avaliando esta curva em um dado t resulta no ponto x(s,t) x(s,t)
70
Propriedades dos Retalhos de Bézier
O retalho interpola os pontos dos cantos da grade de controle Decorre das propriedades análogas das curvas de Bézier O plano tangente em um ponto do canto é dado pelas duas arestas da grade incidentes no ponto Decorre do fato que as curvas Bézier das fronteiras incidentes têm tangentes definidas pelas arestas correspondentes O retalho é restrito ao fecho convexo da grade de controle As funções de base somam 1 e são positivas em toda parte
71
Retalhos Bézier em Forma Matricial
Se os pontos de controle não se modificam, pode-se pré-computar o produto das 3 matrizes do meio:
72
Malhas de Retalhos Bézier
São malhas compostas de diversos retalhos unidos ao longo de suas fronteiras As arestas das grades de controle precisam se justapor perfeitamente As grades precisam ser quadriláteros OK Não Não OK
73
Continuidade em Malhas de Retalhos Bézier
Como no caso das curvas Bézier, os pontos de controle precisam satisfazer restrições para assegurar continuidade paramétrica Continuidade ao longo das arestas dos retalhos: C0 → Pontos de controle da aresta são os mesmos em ambos retalhos C1 → Pontos de controle vizinhos aos da aresta têm que ser colineares e eqüidistantes C2 → Restrições sobre pontos de controle mais distantes da aresta Para obter continuidade geométrica, as restrições são menos rígidas G1 → Pontos de controle vizinhos aos da aresta têm que ser colineares mas não precisam ser eqüidistantes Para obter continuidade C1 nos vértices das grades Todas as arestas incidentes no ponto têm que ser colineares
74
Desenhando Retalhos Bézier
Opção 1: Avaliar o retalho para um conjunto de pontos do domínio paramétrico e triangular Normalmente, s e t são tomados em intervalos (regulares ou não) de forma que os pontos avaliados formam uma grade Cada célula da grade é constituída de quatro pontos que vão gerar 2 triângulos Não se usa quadriláteros visto que os pontos não são necessariamente co-planares Renderização fácil com triangle strips Vantagem: Simples e suportado pelo OpenGL Desvantagem: Não há uma maneira fácil de controlar o aspecto da superfície de forma adaptativa
75
Desenhando Retalhos Bézier
Opção 2: Usar subdivisão Permite controle de erro durante a aproximação Definida de forma semelhante à subdivisão de curvas Bézier, mas refinamento é feito de forma alternada nos dois eixos de parâmetros Sucessivamente computar pontos médios dos vértices e uní-los Aplicar procedimento inicialmente em cada linha da grade de controle: 4x4 → 4x7 Repetir procedimento para cada coluna da grade de controle: 4x7 → 7x7
76
Procedimento Adaptativo
Através da subdivisão obtemos 4 grades de controle e testamos: Se a grade é aproximadamente plana, ela é desenhada Senão, subdividir em 4 sub-grades e aplicar o procedimento recursivamente Problema: Retalhos vizinhos podem não ser subdivididos uniformemente Rachaduras: polígonos de controle não se justapõem Pode ser consertado forçando grades mais subdivididas a se justaporem às grades menos subdivididas ao longo da aresta comum Rachadura
77
Normal Como calcular a normal de uma superfície paramétrica Q(s,t) no ponto s=α e t=β ? t = β s = α
78
Computando o Vetor Normal
Derivadas parciais em relação a t e a s pertencem ao plano tangente Vetor normal é calculado normalizando o produto cruzado de ambas
79
Exemplos de outras superfícies paramétricas
Superfícies criadas por rotação de um curva em torno de um eixo Knots: movimentação de um círculo no espaço Exemplo: Trefoil Knot
80
Representação Geométrica Explícita
Referências das transparências: Prof. Paulo Roma Prof. Thomas Ottmann e Khaireel A. Mohamed
81
Paradigma dos quatro universos.
Objetos do universo físico: “sólidos” (formas) Universo matemático, descrição: Implícita x Paramétrica x Explícita Explicitamente, exemplos de representação: por volume (voxles) mapa de altura por bordo (superfícies poliédricas)
82
Representação explícita por bordo (superfícies poliédricas)
Qualquer poliedro convexo pode ser representado por uma subdivisão planar (representação linear por partes) Malha de polígonos (ou malha de triângulos) Faltou conceito de 2-manifold e “aresta homeomorfa a uma vizinhança”, vide Gomes & Velho, pag 212/213 Faltou referência bibliografica para a afirmação acima (tirada das notas de aulas do Paulo Cezar)
83
Representação Linear por Partes
Superfície com geometria complexa pode ser aproximada por uma superfície linear por partes. Particiona-se o domínio da parametrização por um conjunto de polígonos. Cada vértice no domínio poligonal é levado para a superfície pela parametrização. A conectividade entre vértices adjacentes se mantem. Faltou um exemplo de objeto 3D complexo e sua parametrização (como imagens do Bruno Levy)
84
Propriedades Gera uma malha poligonal, definida por um conjunto de vértices, arestas e faces. Cada aresta é compartilhada por no máximo duas faces. A interseção de duas faces é uma aresta, um vértice ou vazia. Relação de Euler F + V = A + 2 Adjacência de vértices, arestas e faces é chamada de topologia da superfície.
85
Relação de Euler F + V = A + 2 (Foi Você que Assassinou o 2)
Existe uma face externa F + V = A + 2s s é a quantidade de bordas da malha (depende do genus do objeto) O genus do objeto depende da quantidade de “alças” (handles) g = 0 Faltou figura com bordas internas g = 1 g = 2
86
Geometria x Topologia Dois objetos com a mesma geometria podem ter topologias diferentes Dois objetos com a mesma topologia podem ter geometrias diferentes Vamos nos concentrar na topologia! Problema em 2D
87
Manifold Uma superfície é 2-manifold se em todo o seu domínio ela for localmente homeomorfa a um disco Era legal ter umas imagens com o disco projetado, como no Foley... manifold non-manifold edge Non-manifold vertex
88
Subdivisão Planar Como representar (codificar)?
lista de vértices e arestas, ou lista de vértices e faces, Winged edge ou Half edge ou ... Operações sobre Malhas Poligonais Achar todas as arestas que incidem em um vértice. Achar as faces que incidem numa aresta ou vértice. Achar as arestas na fronteira de uma face As 9 perguntas devem ser respondidas em tempo ótimo!
89
9 tipos de Relacionamentos de Adjacência
90
Codificação Explícita. Ponteiros para lista de vértices.
Ponteiros para lista de arestas. Winged-Edge (Half-Edge, Face-Edge). Quad-Edge (Guibas-Stolfi). Radial-Edge. Half-Edge.
91
Sugestões?
92
Codificação Explícita
A mais simples. Cada face armazena explicitamente a lista ordenada das coordenadas dos seus vértices: Muita redundância de informação. Consultas são complicadas. Obriga a execução de algoritmos geométricos para determinar adjacências.
93
Desenho da Malha Cada aresta é desenhada duas vezes, pelos duas faces que a compartilham. Não é bom para plotadoras ou filmes.
94
Ponteiros para Lista de Vértices
Vértices são armazenados separadamente. Há uma lista de vértices. Faces referenciam seus vértices através de ponteiros. Proporciona maior economia de memória. Achar adjacências ainda é complicado. Arestas ainda são desenhadas duas vezes.
95
Exemplo
96
Ponteiros para Lista de Arestas
Há também uma lista de arestas. Faces referenciam as suas arestas através de ponteiros. Arestas são desenhadas percorrendo-se a lista de arestas. Introduzem-se referências para as duas faces que compartilham uma aresta. Facilita a determinação das duas faces incidentes na aresta.
97
Exemplo
98
Outra linha de solução... DCEL: Doubly-Connected Edge List winged-edge
radial-edge half-edge
99
Winged-Edge
100
Winged-Edge Criada em 1974 por Baumgart.
Foi um marco na representação por fronteira. Armazena informação na estrutura associada às arestas (número de campos é fixo). Todos os 9 tipos de adjacência entre vértices, arestas e faces são determinados em tempo constante. Atualizada com o uso de operadores de Euler, que garantem: V – A + F = 2. Porém, o tamanho da estrutura é: 3V + 8A + F 8A, porque são 8 ponteiros F, porque um ponteiro para edge... Por que 3V???? (talvez xyz?)
101
DCEL (Doubly-Connected Edge List )
Winged-Edge Facial-Edge Resolve faces dentro de faces Radial-Edge (Weiler, 1986) Representa objetos non-manifold. Armazena a lista ordenada de faces incidentes em uma aresta. Muito mais complicada que a Winged-Edge. Half-edge Enxuta A mais popular!!!
102
Estrutura de dados Half-edge
A estrutura de dados de uma Half-edge deve armazenar: Ponteiro para a half-edge seguinte Ponteiro para a half-edge oposta Ponteiro para sua face Ponteiro para o vértice de origem Face data structure stores: Ponteiro para uma das half-edges da face Vertex data structure stores: Ponteiro para uma das half-edges de origem no vértice
103
Código da estrutura Half-edge
class H_Edge { Vertex vOrig; H_Edge eTwin; H_Edge eNext; Face f; } class Vertex { Point2D p; H_Edge hEdge; } class Face { H_Edge hEdge; } Observações: Para um mesmo Vertex podem existir diversos H_Edge, porém, basta guardar um deles com origem no Vertex. Na face, basta guardar uma de suas H_Edge H_Edge f eNext ePrev vOrig eTwin
104
DCEL Example: Planar Subdivision
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 f1 f3 f2 f4 Vertex v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 p (1,1) (10,0) (9,5) (2,7) (5,8) (8,9) (5,11) (7,13) (1,13) (11,12) (6,15) hEdge e1_3 e2_3 e3_4 e4_9 e5_9 e6_7 e7_8 e8_6 e9_11 ((Fazer exemplo no quadro))
105
DCEL Example: Planar Subdivision
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 f1 f3 f2 f4 Half-Edge e1_3 e3_1 e2_3 e3_2 e10_3 e11_10 e9_11 e4_9 e3_4 e4_3 e9_4 e5_9 e3_5 e5_3 e9_5 e11_9 vOrig v1 eTwin e3_1 f f1 eNext e3_4 ePrev e3_1
106
DCEL Example: Planar Subdivision
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 f1 f3 f2 f4 Half-Edge e10_11 e3_10 e6_7 e8_6 e7_8 e8_7 e7_6 e6_8 vOrig v10 eTwin e11_10 f f3 eNext e11_9 ePrev e3_10 Face f1 f2 f3 f4 eOuterComp NULL eInnerComps e1_3
107
Half-edge data structure
Example: Vertex list V coord he ….. Face list f e 0 e0 e8 … 1 2 3 4 5 7 6 GERAR UM EXEMPLO MELHOR, com letras para as half-edges (Quantas half-edges?) Criar dois tipos de exercício: . preencher uma tabela de half-edge dado algum objeto (ex: o cubo)... . Fazer um algoritmo qualquer de busca... Half-edge list he to_vertex next_he opposite_he face 9 1 2 3 8 11 10
108
Exemplos de questões de prova
this P1, P1, P3,
109
Triângulos Muitos sistemas trabalham exclusivamente com malhas de triângulos Por que triângulos? Algumas propriedades especiais: Vértices são sempre coplanares Sempre convexo Interpolação linear (coordenadas baricêntricas) Qualquer malha de polígonos pode ser transformada em malha de triângulos Especialidade das GPU’s Triângulo é sempre rígido (ex: Torre Eifel)
110
Outros Temas em Geometria Computacional
Interseção de segmento de linhas Localização de Ponto Em um polígono Em uma subdivisão planar Triangulação de Delaunay Delaunay (maximiza o menor ângulo de todos os triângulos) “gordura dos triângulos” Diagramas de Voronoi Mapa de localização de ponto mais próximo Grafo complementar ao Delaunay Fecho Convexo 3D Planejamento de Movimentação de Robôs Grafos de Visibilidade Árvores Espaciais Kd-Trees Quadtrees BSP (Binary Space Partition)
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.