A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Representação Geométrica

Apresentações semelhantes


Apresentação em tema: "Representação Geométrica"— Transcrição da apresentação:

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 : R3R 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...

30

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

35

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

46

47

48

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

52

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)


Carregar ppt "Representação Geométrica"

Apresentações semelhantes


Anúncios Google