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

Slides:



Advertisements
Apresentações semelhantes
Métodos de Culling e Otimizações
Advertisements

DCA-0114 Computação Gráfica
Tecnologia Hipermídia e Multimídia
Squash and Stretch Quando os objectos se movem, ou ficam rigidos ou se deformam; Timing Tempo apropriado para o desenrolar de uma acção; Anticipation.
Projeções e OpenGL Alex F. V. Machado.
Visualização de Imagens HDR
Desenvolvimento de Pacote de Curvas Especiais para o Mtool3D
Transparência no Recon MS
ENG1153 Estágio Supervisionado Danilo Campos Pedroza de Souza Renato Deris Prado.
COMPUTAÇÃO GRÁFICA.
GERAÇÃO DE MAPAS DIGITAIS NO PROGRAMA COMPUTACIONAL GS+ (Gamma Design)
Ismael Andrade Pimentel
Fundamentos de Computação Gráfica Prof.: Marcelo Gattass
Apresentação por Marcelo Gattass Departamento de Informática PUC-Rio
INF 1366 – Computação Gráfica Interativa Transformações
Captura de Texto em um Quadro Branco
Fundamentos de Computação Gráfica
INF 1366 – Computação Gráfica Interativa
Alberto B. Raposo INF 1366 – Computação Gráfica Interativa Raytracing (resumo) POVRAY – Persistence of Vision Raytracer Alberto.
INF 1366 – Computação Gráfica Interativa X3D
Trabalho 2 – Imagens Panorâmicas
INF2608 – Fundamentos da Computação Gráfica
INF 1366 – Computação Gráfica Interativa Grafos de Cena
INF 1366 – Computação Gráfica Interativa Iluminação e Shading
Visão Estereoscópica Alberto B. Raposo Flávio Szenberg Marcelo Gattass
Interactive 3D visualization
INF 1366 – Computação Gráfica Interativa X3D: Grouping Nodes, Viewing & Navigation, Appearance Alberto B. Raposo
Visão Computacional e Aplicações
A terceira dimensão.
Computação Gráfica: Aula5: Rendering e Rasterização
Computação Gráfica: Aula5: Rendering e Rasterização
Computação Gráfica: Rendering e Rasterização
Básico.
I – Informação Digital - Graphics Escola Politécnica da USP MBA EPUSP em Gestão e Engenharia do Produto EP-018 – O Produto Internet e suas Aplicações Tecnologias.
Desenho Industrial Assistido por Computador Aula 09 – CATIA – Modelagem 3D: sólidos geométricos; workbenchs Part Design.
UNIVERSIDADE KIMPA VITA
Computação Gráfica UFRJ/DCC
COMPUTAÇÃO GRAFICA DAVIDE MOURO SALGUEIRO.
Sistemas Multimídia e Interface Homem-Máquina
Computação Gráfica: Aula10: Sistemas de Partículas
Ray Tracing Patrícia Cordeiro Pereira Pampanelli
FUNDAMENTOS DE COMPUTACION GRAFICA Jessica Palomares
Computação Gráfica UFRJ/DCC
DISCIPLINA: SR, Geoprocessamento I e II e Cartografia A tecnologia do Geoprocessamento – Aplicações e Potencialidades 12/3/ Aula 5.
Computação Gráfica Aula 12 Superfícies Prof. Leo.
Modelagem de Sólidos para Aplicações em Computação Gráfica
Técnicas de Modelagem para Aplicações em Computação Gráfica
Computação Gráfica Aula 10 Constructive Solid Geometry (CSG)
Introdução a Computação Gráfica
Visualização Tridimensional (Câmera Sintética)
Ambient Occlusion Disciplina: Fundamentos de Computação Gráfica Professor : Marcelo Gattass Allan Carlos Avelino Rocha Departamento de Informática.
Go3D! A 3D Graphics Engine Carlos Tosin. Divisão Estrutura dividida em 4 componentes Core (46 classes) Áudio (4 classes) Script (4 classes) Renderer (37.
Principais Aplicações da Modelagem Numérica de Terreno
Computação Gráfica – Modelagem Geométrica
Módulo de visualização de modelos numéricos de superfície da estação fotogramétrica digital E-Foto (MV3D) Rodrigo Machado Alvarenga.
Introdução à Multimídia
Sistemas de Rastreamento de Baixo Custo para Desktops Tecgraf (Grupo de Tecnologia em Computação Gráfica) Depto. de Informática, PUC-Rio Alberto Raposo,
INF 1366 – Computação Gráfica Interativa Rasterização
VRML. Roteiro  Introdução  A história de VRML  Visão geral  Potencial  Fundamentos  Ferramentas de software  Vantagens e Desvantagens  Conclusões.
Introdução à Computação Gráfica
Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa X3D – Event Utilities e Scripting Alberto B. Raposo
Mudança da Temperatura de Cor de uma Imagem Hildebrando Trannin Fundamentos de Computação Gráfica Prof.: Marcelo Gattass.
Módulo de visualização de modelos numéricos de superfície da estação fotogramétrica digital E-Foto Rodrigo Machado Alvarenga Fonseca.
The Cyclops Project German-Brazilian Cooperation Programme on IT CNPq GMD DLR Departamento de Informática e Estatística - INE/CTC/UFSC Computação Gráfica:
Plano de Aulas  Estruturas de aceleração  Descarte contra volume de visão  Descarte por oclusão  Grafo de cena: OpenSceneGraph  Traçado de raios em.
O que é multimídia.
Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Revisando... Alberto B. Raposo
Design Gráfico Introdução ao Web Design Prof° Ms. Claudio Benossi Aula 05 Introdução ao Web Design Prof° Ms. Claudio Benossi Aula 05.
Computação Gráfica - Introdução
1 Computação Gráfica Prof. Dr. Júlio C. Klafke UNIP-Objetivo
Transcrição da apresentação:

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 Alberto Raposo – PUC-Rio

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

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

Modelagem vs. Visualização 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

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

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

Modelagem Geométrica Tipos de estruturação de dados Primitivas 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

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

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 é visto apenas de um lado Alberto Raposo – PUC-Rio

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

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

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

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

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

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

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

Wireframe em X3D: IndexedLineSet Alberto Raposo – PUC-Rio

Wireframe Vantagens Problemas 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 Alberto Raposo – PUC-Rio Márcio Pinho, PUCRS

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

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

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

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

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

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

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

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ó existirem quadrados cheios e vazios Pinho, PUCRS Alberto Raposo – PUC-Rio

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

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

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

Octrees Alberto Raposo – PUC-Rio

Octree Algoritmo de construção em C Pinho, PUCRS Alberto Raposo – PUC-Rio

Octrees FlipCode.com Alberto Raposo – PUC-Rio

Uso de Octrees e Quadtrees Exemplos: Frustum culling, detecção de colisão, operações de uniã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

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 Alberto Raposo – PUC-Rio MIT EECS 6.837, Durand and Cutler

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

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

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

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

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

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

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

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

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

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

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

LOD Discreto Alberto Raposo – PUC-Rio

Exemplo de LOD – X3D Alberto Raposo – PUC-Rio

Exemplo de LOD – X3D Alberto Raposo – PUC-Rio <?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

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

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

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

LOD Contínuo Visualização de Terrenos http://www.llnl.gov/icc/sdd/img/images.shtml (vídeo) Alberto Raposo – PUC-Rio

X3D: ElevationGrid Alberto Raposo – PUC-Rio

Exemplo de Elevation Grid #VRML V2.0 utf8 Transform { children [ Shape { geometry DEF EG ElevationGrid { xDimension 5 xSpacing 1 zDimension 4 zSpacing 1 height [ # 5x4 array of heights 0 .707 1 .707 0 0 .47 .667 .47 0 0 .236 .33 .236 0 0 0 0 0 0 ] creaseAngle 0.8 } appearance Appearance { material DEF M Material { diffuseColor 1 1 1 } texture DEF IT ImageTexture { url "stone.jpg" } Alberto Raposo – PUC-Rio

Exemplo de Elevation Grid Transform { translation 4.3 0 0 children Shape { geometry ElevationGrid { xDimension 5 xSpacing 1 zDimension 4 zSpacing 1 height [ # 5x4 array of heights 0 .876 1.2 .66 0 0 .555 1.3 .47 0 0 1. .33 .2 0 0 0 0 0 0 ] creaseAngle 0.8 } appearance Appearance { material USE M texture USE IT } DirectionalLight { direction -0.80 -0.6 0 } Viewpoint { position 3 2 8 } Background { skyColor 1 1 1 } ]} Alberto Raposo – PUC-Rio

Elevation Grid Exemplo de superfície matemática http://pcf1.chembio.ntnu.no/~bka/div/vrml/elevation.html Alberto Raposo – PUC-Rio

Apesar de tudo... Superfícies poligonais são limitadas Facetas planares Deformação é difícil Parametrização não é natural MIT EECS 6.837, Durand and Cutler Alberto Raposo – PUC-Rio

Porque o facetamento Shading (Gouraud) é feito a partir das normais de cada uma das superfícies (polígonos) descontinuidade de normais MIT EECS 6.837, Durand and Cutler Alberto Raposo – PUC-Rio

Continuidade de curvas (2D) / superfícies (3D) G0 continuidade geométrica: 2 segmentos / superfícies conectadas Não há buracos na curva / superfície G0  C 0 (continuidade paramétrica) G1 continuidade geométrica : a direção das tangentes dos 2 segmentos / superfícies são iguais no ponto / curva de junção C1 continuidade (paramétrica): vetores tangentes dos dois segmentos / superfícies são iguais em magnitude e direção no ponto / curva de junção Cn continuidade (paramétrica): direção e magnitude da n-ésima derivada são iguais no ponto / curva de junção Alberto Raposo – PUC-Rio

Continuidade de curvas (2D) / superfícies (3D) Contínua: C1 e G1 Descontínua Contínua: C0 e G0 Continuidade Geométrica C0 e G1 Marcelo Gattass, PUC-Rio Alberto Raposo – PUC-Rio

Continuidade de curvas (2D) / superfícies (3D) Malhas de polígonos são C0 (G0) apenas Superfícies C1 garante superfícies menos facetadas (smoothness) Superfícies C2 são ainda mais “polidas” que as C1 Alberto Raposo – PUC-Rio

Exemplos de Conexões de Curvas ponto de junção C2 C1 C0 TV2 TV3 TV1 P1 P2 P3 Q1 Q2 Q3 S se conecta a C0, C1 e C2 com continuidade C0, C1 e C2, respectivamente. Q1 e Q2 têm continuidade C1 porque seus vetores tangentes, TV1 e TV2 são iguais. Q1 e Q3 têm continuidade G1 apenas. Kessler, Dinh, 2003 Alberto Raposo – PUC-Rio

Controle de Curvas / Splines Curvas são definidas por pontos de controle Alterando os pontos, altera-se a curva Interpolação Bézier (aproximação) BSpline (aproximação) Alberto Raposo – PUC-Rio MIT EECS 6.837, Durand and Cutler

Funções Explícitas: y = f(x) [e.g. y=2x2] Apenas 1 valor de y para cada x Implícitas: f(x,y)=0 [e.g. x2+y2-r2=0] Precisa de restrições para modelar apenas partes da curva Manter continuidade na junção de 2 curvas é difícil Paramétricas: x=f(t), y=f(t) [e.g. x=t3+3, y=3t2+2t+1] Curvaturas representadas como vetores tangentes (d/dt). Fácil manter continuidade nas junções Kessler, Dinh, 2003 Alberto Raposo – PUC-Rio

Curvas http://www.abm.org Alberto Raposo – PUC-Rio

Curvas Paramétricas Para selecionar parte da curva: 0  t  1 Linear: Quadrática: Cúbica: x=axt + bx x = axt2 + bxt + cx x = axt3 + bxt2 + cxt + dx y=ayt + by y = ayt2 + byt + cy y = ayt3 + byt2 + cyt + dy z=azt + bz z = azt2 + bzt + cz z = azt3 + bzt2 + czt + dz Em CG, preferem-se as cúbicas, que provêem um balanceamento entre flexibilidade e complexidade na especificação e computação da formae. Precisa 4 pontos/derivadas conhecidas para determinar 4 coeficientes desconhecidos. Kessler, Dinh, 2003 Alberto Raposo – PUC-Rio

Equações Paramétricas x = axt3 + bxt2 + cxt + dx y = ayt3 + byt2 + cyt + dy z = azt3 + bzt2 + czt + dz Kessler, Dinh, 2003 Alberto Raposo – PUC-Rio

Matriz Base e Matriz Geométrica Q(t) = G M T Matriz Geométrica Matriz Base Matriz T Idéia: Curvas diferentes podem ser especificadas alterando-se a informação geométrica na matriz G. A matriz base tem valores constantes específicos de cada família de curvas. Alberto Raposo – PUC-Rio

Famílias de Curvas Família Tipo Definida por Hermite Cúbica 2 pontos extremos, vetores tangentes nos extremos Bézier 2 pontos extremos, 2 pontos de controle Splines 4 pontos de controle Kessler, Dinh, 2003 Alberto Raposo – PUC-Rio

Famílias de Curvas P2 P4 P1 P3 P3 P1 P4 P2 Hermite Bézier Spline pontos de controle Hermite Bézier Spline Alberto Raposo – PUC-Rio

Exemplos Hermite R1 P4 P1 Conjunto de curvas Hermite com mesmos pontos extremos P1 e P4, vetores tangente R1 e R4 com mesma direção, mas magnitudes diferentes de R1. A magnitude de R4 é mantida fixa. R4 Kessler, Dinh, 2003 Alberto Raposo – PUC-Rio

Exemplos Hermite Curvas com pontos extremos fixos e magnitudes dos vetores tangentes iguais, mas a direção do vetor tangente da esquerda varia. Kessler, Dinh, 2003 Alberto Raposo – PUC-Rio

Formulação Hermite Q(t) = G M T Matriz Geométrica Matriz Base Matriz T Alberto Raposo – PUC-Rio

Formulação Hermite Alberto Raposo – PUC-Rio Kessler, Dinh, 2003

Formulação Hermite Alberto Raposo – PUC-Rio Kessler, Dinh, 2003

Formulação Hermite Q(t) = GHMHT t f(t) P1 P4 R1 R4 Q(t) é soma ponderada dos elementos de GH t f(t) 1 P1 P4 R1 R4 Função blending de Hermite Alberto Raposo – PUC-Rio Kessler, Dinh, 2003

Formulação Hermite Alberto Raposo – PUC-Rio

Exemplos Bézier 4 pontos Curva passa pelo primeiro e pelo último P2 e P3 definem as tangentes em P1 e P4: R1 = 3(P2 – P1) e R4 = 3(P4 – P3) Marcelo Walter, Unisinos Alberto Raposo – PUC-Rio

Formulação Bézier Q(t) = GBMBT Lembrando que: R1 = 3(P2 – P1) e R4 = 3(P4 – P3) podemos relacionar Bézier com Hermite: Alberto Raposo – PUC-Rio

Formulação Bézier Voltando a Hermite: Q(t) = GHMHT Como: GH = GB MHB Temos: Q(t) = GBMHBMHT Alberto Raposo – PUC-Rio

Formulação Bézier Q(t) = GBMBT Polinômios de Bernstein: f(t) t 1 BB1 Alberto Raposo – PUC-Rio

Trabalho 1: 2004.2 Programa para desenhar curvas de Bézier 3 exemplos. Alberto Raposo – PUC-Rio

Splines Junções em curvas Hermite e Bézier são facilmente C1 e G1, mas garantir C2 não é trivial. Spline é curva que garante C2 C2 é útil quando curva trilha caminho da câmera (pense como velocidade: C1 e aceleração: C2) Pode passar ou não pelos pontos de controle Alberto Raposo – PUC-Rio

Natural vs. B-Spline Splines naturais B-Splines n pontos de controle, que afetam toda a curva difícil computação B-Splines curva com m+1 pontos de controle, P0, P1, ... Pm, m3, definindo m-2 segmentos polinomiais cúbicos conectados segmento Qi é definido por Pi-3, Pi-2, Pi-1 e Pi. efeito dos pontos de controle é localizado (restrito a 4 segmentos) P0 P1 P2 P3 P5 P4 P6 P7 P8 P9 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Kessler, Dinh, 2003 Alberto Raposo – PUC-Rio

B-Splines Uniform B-Splines têm nós em intervalos iguais de t. Distâncias em t entre nós adjacentes é a mesma. Funções blending são as mesmas para todos os segmentos. Nonuniform B-Splines têm intervalos diferentes de t entre os nós. Nonuniform Rational B-Splines (NURBS) são comumente usadas em modelagem 3D. Curvas são invariantes às tranformações perspectivas. Can put control points of NURBS (or any rational curve) through a perspective transformation and still construct the curve correctly. This is not true of non-rational curves. Rational curves use ratios of parametric functions, and therefore can use homogeneous space Q(t)=[X(t) Y(t) Z(t) W(t)] and use the 3D curves X(t)/W(t), Y(t)/W(t), Z(t)/W(t). Alberto Raposo – PUC-Rio

Extensão para Superfícies Toda a matemática das curvas paramétricas cúbicas pode ser extendida para superfícies. Superfícies Paramétricas bicúbicas Usa-se 2 parâmetros, s e t, ao invés de apenas t: Q(s, t) Superfície definida por 16 coeficientes (e 16 valores conhecidos). s t Q(sc, t) Q(s, tc) Alberto Raposo – PUC-Rio

NURBS: VRML número de pontos de controle em cada dimensão vetores de nós grau dos polinômios = ordem -1 (ex. para spline cúbica, ordem = 4) pontos de controle (uDimension x vDimension) peso de cada ponto de controle Alberto Raposo – PUC-Rio

Comparação Armazenado como NURB (11KB) Armazenado como IndexFaceSet de alta resolução (2.2MB) Blaxxun, Inc. Alberto Raposo – PUC-Rio

Superfícies NURBs http://www.tiemdesign.com Stephane, Paris Alberto Raposo – PUC-Rio

Geração de 3D a partir de 2D Primitivas 3D CSG (Constructive Solid Geometry) Extrusão Lathing (revolução) Sweeping (extrusão ao longo de uma curva) Skinning (sweeping com cortes variados) Alberto Raposo – PUC-Rio

Primitivas 3D Formas geométricas 3D básicas, que podem ser estendidas por operações booleanas (CSG) Primitivas “menos básicas” Primitivas básicas Giambruno, 2003 Alberto Raposo – PUC-Rio

CSG (Constructive Solid Geometry) Sólidos montados a partir de operações booleanas com outros sólidos No plano: Giambruno, 2003 Alberto Raposo – PUC-Rio

CSG No espaço: POV-Ray documentation Alberto Raposo – PUC-Rio

Exemplos CSG http://www.cl.cam.ac.uk/Teaching/ 1998/AGraphics/l3a.html Alberto Raposo – PUC-Rio

Extrusão Acrescenta o eixo z (profundidade) a um polígono Pinho, PUCRS Alberto Raposo – PUC-Rio

Sweeping Extrusão ao longo de uma curva Giambruno, 2003 Alberto Raposo – PUC-Rio

Skinning Extrusão ao longo de uma curva (sweeping), mas com cortes variados ao longo do caminho. Giambruno, 2003 Alberto Raposo – PUC-Rio

VRML: Extrusion se início / fim da extrusão é aberto polígono 2D (corte) curva de extrusão Alberto Raposo – PUC-Rio

VRML Extrusion - Exemplo http://www.lighthouse3d.com/ vrml/tutorial/index.shtml?extru Alberto Raposo – PUC-Rio

VRML Extrusion – Exemplo #VRML V2.0 utf8 Transform { children [ Shape{ appearance Appearance { material Material {}} geometry Extrusion{ crossSection [ -1 -1, -1 1, 1 1, 1 -1, -1 -1] spine [0 -1 0 , 0 1 0 ] beginCap FALSE endCap FALSE} } ]} http://www.lighthouse3d.com/ vrml/tutorial/index.shtml?extru Alberto Raposo – PUC-Rio

VRML Extrusion - Exemplo #VRML V2.0 utf8 Transform { children [ Shape{ appearance Appearance { material Material {}} geometry Extrusion{ crossSection [ -1 -1, -1 1, 1 1, 1 -1, -1 -1] spine [0 -1 0 , 0 1 0 ] beginCap FALSE endCap FALSE solid FALSE} } ]} passa a não existir lado interno e externo das faces http://www.lighthouse3d.com/ vrml/tutorial/index.shtml?extru Alberto Raposo – PUC-Rio

VRML Extrusion – Exemplo (sweeping) http://www.lighthouse3d.com/ vrml/tutorial/index.shtml?extru Alberto Raposo – PUC-Rio

VRML Extrusion – Exemplo (lathing) http://www.lighthouse3d.com/ vrml/tutorial/index.shtml?extru Alberto Raposo – PUC-Rio

VRML Extrusion – Exemplo http://www.lighthouse3d.com/ vrml/tutorial/index.shtml?extru Alberto Raposo – PUC-Rio

X3D Extrusion <Extrusion crossSection = “-3.5 -1, -2.1 2.9, 2.2 2.9, 3.6 -1, 0 -3.5, -3.5 -1” spine = “0 0 0, 0 1 0, 0 1.6 0” scale = “ 1 1, 1 1, 0.2 0.2” solid = “true” /> Alberto Raposo – PUC-Rio

X3D Extrusion <Extrusion crossSection = “0 0, 0 6, 3 6, 3 5, 1 5, 1 1, 9 1, 9 5, 5 5, 5 6, 10 6, 10 0” spine = “0 0 0, 0 2.5 0” solid = “true” /> Alberto Raposo – PUC-Rio

Lathing (sólidos de revolução) Sólido é gerado girando superfície em torno de um eixo (ideal para modelos radiais) Giambruno, 2003 Alberto Raposo – PUC-Rio

Lathing no POVRAY www.povray.org y x (2,4) (0,4) (2,3) (3,2) (1,1) #include "colors.inc" background{White} camera { angle 10 location <1, 9, -50> look_at <0, 2, 0> } light_source { <20, 20, -20> color White lathe { linear_spline 6, <0,0>, <1,1>, <3,2>, <2,3>, <2,4>, <0,4> pigment { Blue } finish { ambient .3 phong .75 (0,4) (2,4) (2,3) (3,2) (1,1) x (0,0) www.povray.org Alberto Raposo – PUC-Rio

Superfície de Revolução (POVRAY) #include "colors.inc" #include "golds.inc" camera { location <10, 15, -20> look_at <0, 5, 0> angle 45 } background { color rgb<0.2, 0.4, 0.8> } light_source { <100, 100, -100> color rgb 1 } plane { y, 0 pigment { checker color Red, color Green scale 10 } sor { 8, <0.0, -0.5>, <3.0, 0.0>, <1.0, 0.2>, <0.5, 0.4>, <0.5, 4.0>, <1.0, 5.0>, <3.0, 10.0>, <4.0, 11.0> open texture { T_Gold_1B } Alberto Raposo – PUC-Rio

Outras técnicas de modelagem Alberto Raposo – PUC-Rio

Metaballs (Superfícies Implícitas) Técnica de modelagem implícita (não paramétrica, como as curvas) Modelos gerados a partir de esferas, que podem ser vistas como partículas gerando “campo de atração”, decrescente a partir de seu centro “gosma líquida” Alberto Raposo – PUC-Rio

Metaballs http://www.niksula.cs.hut.fi/~hkankaan/Homepages/metaballs.html Alberto Raposo – PUC-Rio

Metaballs no POVRAY Alberto Raposo – PUC-Rio #include "colors.inc" background{Gray} camera { angle 15 location <0,0,-20> look_at <0,0,0> } light_source { <10, 20, -10> color White } blob { threshold .65 sphere { <.5,0,0>, .8, 1 pigment {Blue} translate <-1., 0, 0>} sphere { <-.5,0,0>,.8, 1 pigment {Green} translate <-1., 0, 0>} finish { phong 1 } sphere { <.5,0,0>, .7, 1 pigment {Yellow} translate <1., 0, 0>} sphere { <-.5,0,0>,.9, 1 pigment {Red} translate <1., 0, 0> } Alberto Raposo – PUC-Rio

Metaballs http://astronomy.swin.edu.au/~pbourke/modelling/implicitsurf/ Alberto Raposo – PUC-Rio

Metaballs Digital I Designs Alberto Raposo – PUC-Rio

Metaballs Vantagens: Adequadas para representar metamorfoses e “blendings” Alberto Raposo – PUC-Rio

Subdivision Surfaces Metodologia de geração de superfícies poligonais “lisas” (smooth), criada pela Pixar para o curta “Geri´s Game” Alberto Raposo – PUC-Rio

Subdivision Surfaces Definição de uma superfície “lisa” como o limite de uma seqüência de refinamentos sucessivos http://www.multires.caltech.edu/teaching/courses/ subdivision/intro/index.htm Alberto Raposo – PUC-Rio

Subdivision Surfaces Exemplo 2D ... http://www.multires.caltech.edu/ teaching/demos/java/4point.htm Alberto Raposo – PUC-Rio

Subdivision Surfaces Exemplo 3D ... http://symbolcraft.com/graphics/ subdivision/index.html Alberto Raposo – PUC-Rio

Vantagens sobre Curvas Geração de subdivision surfaces usam algoritmos mais simples que as curvas Se encaixam em qualquer topologia, sem problemas de continuidade (muito útil em animação) Pode-se representar superfícies com o grau de “smoothness) desejado (escalabilidade, LOD) Alberto Raposo – PUC-Rio

Low-Poly Representações paramétricas, implícitas, subdivision surfaces, etc., buscam modelagem de alta resolução Mais necessidade de processamento Nem sempre adequados para aplicações em tempo real (jogos e realidade virtual, por exemplo). Low-Poly: a melhor qualidade possível com número limitado de polígonos Alberto Raposo – PUC-Rio

Low-Poly Não envolve novas tecnologias de modelagem, mas envolve mais precisão nas tomadas de decisão sobre onde investir em mais detalhes e onde simplificar para obter o melhor resultado Modelagem ruim em alta resolução tem pouco impacto; apenas leva mais tempo para gerar a imagem. Em low-poly, isso é crítico! Alberto Raposo – PUC-Rio

Low-Poly http://www.tutorialized.com/tutorial/ Texturing-your-Lara-Croft-model/4859 http://www.muranon.com/axel/ character/tutorial_1/ Alberto Raposo – PUC-Rio

Informações Adicionais Modelagem em Geral: D. F. Rogers, J. A. Adams. “Mathematical Elements for Computer Graphics”. 2nd Ed., McGraw-Hill, 1990. Peter Shirley. Fundamentals of Computer Graphics, A K Peters, Ltd., Natick, MA, USA, 2002. Foley, J. D., Van Dam, A., Feiner, S. K., e Huhes, J. F., Phlips, L. R., Introduction to Computer Graphics,  Addison-Wesley, 1995. http://www-pal.usc.edu/cs582/index.html http://www.inf.pucrs.br/~pinho/CG/Aulas/Modelagem/Modelagem3D.htm http://www.ic.uff.br/~aconci/sweeping.html http://www.inf.unisinos.br/~osorio/CG-Doc/CG-Web/cg.html Alberto Raposo – PUC-Rio

Informações Adicionais Quadtrees e Octrees http://www.tecgraf.puc-rio.br/~hermann/gc/ http://www.flipcode.com/tutorials/tut_octrees.shtml LOD D. Luebke, M Reddy et al. “Level of Detail for 3D Graphics”. Morgan Kaufman, 2003. T. Möller, E. Haines. “Real-Time Rendering”. A K Peters Ltd., 1999. Alberto Raposo – PUC-Rio

Informações Adicionais Metaballs: G. Graves. “The Magic of Metaballs”. Computer Graphics World, Maio 1993. http://astronomy.swin.edu.au/~pbourke/modelling/implicitsurf/ Subdivision surfaces: http://www.eas.asu.edu/~cse470/resources/subdivision/ http://mrl.nyu.edu/publications/subdiv-course2000/ Low-Poly: M. Giambruno. “3D Graphics & Animation”.New Riders, 2002 The Annotated VRML 97 Reference: http://accad.osu.edu/~pgerstma/class/vnv/resources/info/AnnotatedVrmlRef/Book.html Alberto Raposo – PUC-Rio