Modelagem Geométrica

Documentos relacionados
Introdução ao Processamento Gráfico

Modelo. Representação de Objetos Tridimensionais. Malhas Poligonais. Modelagem Geométrica. Modelos Geométricos

Modelos de Objetos por Malhas Poligonais. Maria Cristina F. de Oliveira

Modelação de Formas Geométricas

Sistemas de Cores. Leandro Tonietto Processamento Gráfico Jogos Digitais set-09

Capítulo 3 Primeiros Passos em OpenGL Função Desenha Função Teclado Função Inicializa Programa Principal...

Preenchimento de Polígonos

Instituto de Computação Bacharelado em Ciência da Computação Disciplina: Computação Gráfica Primeira lista de exercícios

António Costa. Paulo Roma Cavalcanti

Processamento de Malhas Poligonais

UNIVERSIDADE FEDERAL FLUMINENSE Pedro Martins Menezes. Um estudo dos estágios dos pipelines gráficos

Computação Gráfica Introdução

Transformações 3D. Soraia Raupp Musse

Computação Gráfica - OpenGl 02

Algoritmos de Recorte em 2D

1 Para expressar um ponto intermediário em função dos pontos extremos, precisamos

4. Curvas Paramétricas e Transformações 2D

PROGRAMAÇÃO DA 3ª ETAPA 5º ANO MONIQUE MATEMÁTICA CONTEÚDOS:

MATRIZ DE REFERÊNCIA - SPAECE MATEMÁTICA 5 o ANO DO ENSINO FUNDAMENTAL TEMAS E SEUS DESCRITORES

O Problema de Visibilidade. Computação Gráfica Recorte. Onde Acontece? O que é Recorte? Renato Ferreira

Introdução à Computação Gráfica

Computação Gráfica - 12

REPRESENTAÇÃO DE ARCOS POR CURVAS DE BEZIER

Algoritmos geométricos

Objetos Gráficos Espaciais

SISTEMAS DE INFORMAÇÃO GEOGRÁFICA SIG FORMATOS DE REPRESENTAÇÃO DE DADOS FORMATO VETORIAL

Matrizes esparsas: definição

Aula 4 Leitura e Interpretação de Desenhos Pearson Education do Brasil. Todos os direitos reservados.

OpenGL. Soraia Musse

Escola Secundária com 3º ciclo D. Dinis 10º Ano de Matemática A TEMA 1 GEOMETRIA NO PLANO E NO ESPAÇO I. 3º Teste de avaliação versão2.

Engenharia Informática Computação Gráfica

Aula 4 TECNOLOGIA EM JOGOS DIGITAIS PROGRAMACAO E INTEGRACAO DE JOGOS I. Marcelo Henrique dos Santos

Geometria e Medida: Figuras Geométricas

Geometria Descritiva 28/08/2012. Elementos Primitivos da Geometria

4º. ano 1º. VOLUME. Projeto Pedagógico de Matemática 1. AS OPERAÇÕES E AS HABILIDADES DE CALCULAR MENTALMENTE. Números e operações.

Prof. Dr. Leandro Alves Neves. Conceitos Fundamentais. Algoritmos de Conversão Matricial.

TEMA I: Interagindo com os números e funções

Professor: Computação Gráfica I. Anselmo Montenegro Conteúdo: - Introdução. Instituto de Computação - UFF

Fluxogramas. Leandro Tonietto ago-09

CSE-MME Revisão de Métodos Matemáticos para Engenharia

Provas de Acesso ao Ensino Superior Para Maiores de 23 Anos

REVISÃO UNICAMP Ensino Médio Geometria Prof. Sérgio Tambellini

Geometria Computacional

Fundamentos da Computação Gráfica Lista de Exercícios Marcelo Gattass TeCGraf/Departamento de Informática/PUC-Rio 19jun2003

Primeiro Projeto de PG: Lista de Temas Selecionados

Geometria Espacial: Sólidos Geométricos

Curvas e Superfícies

ESCOLA SECUNDÁRIA COM 2º E 3º CICLOS ANSELMO DE ANDRADE 9º ANO ANO LECTIVO

32 Matemática. Programação anual de conteúdos

Árvore Binária de Busca Ótima

Computadores e Programação (DCC/UFRJ)

Geometria Espacial PRISMA RETO DE BASE TRIANGULAR (OU PRISMA TRIANGULAR)

PROPOSTA DIDÁTICA. 3. Desenvolvimento da proposta didática (10 min) - Acomodação dos alunos, apresentação dos bolsistas e realização da chamada.

MATRIZ DE REFERÊNCIA DE MATEMÁTICA - SADEAM 3 ANO DO ENSINO FUNDAMENTAL

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações?

Visibilidade. Apontamentos CG + Edward Angel, Sec Instituto Superior Técnico Computação Gráfica 2009/2010

Hashing: conceitos. Hashing

RECORTE (CLIPPING) por janelas rectangulares

MATEMÁTICA PLANEJAMENTO 3º BIMESTRE º B - 11 Anos

LABORATÓRIO DE GEOPROCESSAMENTO DIDÁTICO. Professora: Selma Regina Aranha Ribeiro

Matriz de Referência de Matemática* SAEPI Temas e seus Descritores 5º ano do Ensino Fundamental

Transformações Geométricas

Fluxo de um campo vetorial e a Lei de Gauss

Computação Gráfica. Primitivas Gráficas Professora Sheila Cáceres

4 Detecção de Silhueta

A escala de Língua Portuguesa para o 3º ano do Ensino Médio

Exercícios. Computação Gráfica

PLANO DE ESTUDOS DE MATEMÁTICA - 7.º ANO

ESCALA DE PROFICIÊNCIA DE MATEMÁTICA 5º ANO DO ENSINO FUNDAMENTAL

PLANO DE ESTUDOS DE MATEMÁTICA 7.º ANO

AGRUPAMENTO DE ESCOLAS DR. VIEIRA DE CARVALHO DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS MATEMÁTICA PLANIFICAÇÃO ANUAL 5.

MATEMÁTICA. O aluno achou interessante e continuou a escrever, até a décima linha. Somando os números dessa linha, ele encontrou:

A terceira dimensão. Modelagem tridimensional Elaboração tridimensional Realidade virtual

Prova Fundamentos Computação Gráfica

Características Principais. Introdução à Computação Gráfica Ray Tracing. Ray Casting. Contexto Histórico. Claudio Esperança Paulo Roma Cavalcanti

ESTRUTURA DE DADOS VETORES E LISTAS LINEARES

Escola Secundária com 3º ciclo D. Dinis. 10º Ano de Matemática A. Geometria no Plano e no Espaço I

BCC204 - Teoria dos Grafos

7º Ano. Planificação Matemática 2014/2015. Escola Básica Integrada de Fragoso 7º Ano

Utilização de Algoritmos Genéticos para Otimização de Altura de Coluna da Matriz de Rigidez em Perfil no Método dos Elementos Finitos

APROXIMAÇÕES ENTRE O PISA E SAEB

Plano Curricular de Matemática 4.º Ano - Ano Letivo 2016/2017

Comentários e Exemplos sobre os Temas e seus Descritores da Matriz de Matemática de 4ª Série Fundamental

GEOMETRIA MÉTRICA ESPACIAL

PROJETISTA DE ARQUITETURA

Autodesk 3ds Max - Primitivas

Generalizações do Teorema: A soma dos ângulos internos de um triângulo é π

Sugestão: Use papel transparente para copiar as figuras e comparar os lados e os ângulos.

{ y} Cálculo III. 1 - Funções de Várias Variáveis

AXIOMAS DA GEOMETRIA EUCLIDIANA EM ATIVIDADES EXPERIMENTAIS

Planificação Anual Departamento 1.º Ciclo

Descritores de Matemática 4ª série (5º ano)

Transcrição:

Modelagem Geométrica Leandro Tonietto Computação Gráfica Desenvolvimento Jogos e Entretenimento Digital ltonietto@unisinos.br http://professor.unisinos.br/ltonietto/jed/cgr/modelgeom.pdf ago-11 02-Mar-11 Leandro Tonietto

Sumário Introdução Modelagem Representação Polígonos Exercício 02-Mar-11 Leandro Tonietto 2

Introdução Modelagem: Descrição de objetos do mundo real Representação de objetos através de modelos: Descreve propriedades e implementa regras que representam um objeto real. Por exemplo, podemos descrever objetos com atributos, como: altura, volume, largura, tipo de superfície,... ou com pontos que dão a sua forma. Faz uso de métodos matemáticos para descrição e representação. Objetos não reais também podem ser modelados. A realidade do modelo pode ser fictícia. Modelar = descrever 02-Mar-11 Leandro Tonietto 3

Introdução 02-Mar-11 Leandro Tonietto 4

Introdução Objeto pode ser descrito de diversas formas. 02-Mar-11 Leandro Tonietto 4

Introdução Objeto pode ser descrito de diversas formas. 02-Mar-11 Leandro Tonietto 4

Introdução Objeto pode ser descrito de diversas formas. 02-Mar-11 Leandro Tonietto 4

Introdução Objeto pode ser descrito de diversas formas. 02-Mar-11 Leandro Tonietto 4

Introdução Objeto pode ser descrito de diversas formas. 02-Mar-11 Leandro Tonietto 4

Introdução Objeto pode ser descrito de diversas formas. 02-Mar-11 Leandro Tonietto 4

Introdução Objeto pode ser descrito de diversas formas. 02-Mar-11 Leandro Tonietto 4

Introdução Objeto pode ser descrito de diversas formas. Como devo modelar? Descrever um objeto com todas propriedades e detalhes mínimos? Ou usar uma representação mais simples e funcional? 02-Mar-11 Leandro Tonietto 4

Introdução Objeto pode ser descrito de diversas formas. Como devo modelar? Descrever um objeto com todas propriedades e detalhes mínimos? Ou usar uma representação mais simples e funcional? O que e como depende de cada situação. 02-Mar-11 Leandro Tonietto 4

Introdução Aspectos a serem considerados quando da escolha da descrição de um modelo: Facilidade: para transformar a forma em polígonos. Não se pode descrever matematicamente qualquer forma como uma primitiva, mas podemos simplificá-la para um conjunto de polígonos bem comportados. Tamanho: o bastante para reproduzir o modelo. Complexidade: gerado manualmente ou proceduralmente Interação: permitir alterações e animação Matemática: representação e uso de ferramentas matemáticas Precisão: o quão preciso um modelo deve ser. Lembre-se: o ótimo é inimigo do bom!! 02-Mar-11 Leandro Tonietto 5

Introdução Aplicações X nível de detalhe: CAD: precisão matemática Jogos: precisão visual Representação em níveis de detalhamento. 02-Mar-11 Leandro Tonietto 6

Introdução gcad3d Medal Of Honor Modelo do Fiat 500 Neverwinter Nights 02-Mar-11 Leandro Tonietto 7

Introdução Superfícies X volume Interessa apenas a superfícies dos objetos 02-Mar-11 Leandro Tonietto 8

Introdução Superfícies X volume Informações sobre o interior dos objetos 02-Mar-11 Leandro Tonietto 9

Modelagem Como se modela: Representação poligonal Curvas e superfícies Sólidos 02-Mar-11 Leandro Tonietto 10

Curvas Pontos de controle e comprimento Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 11

Superfícies Área Apenas uma casca, ocas Abertas ou fechadas Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 12

Sólidos Além das propriedades da casca, o interior também interessa Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 13

Representação Formas de representação de objetos: Funções paramétricas Pode gerar todos os pontos de um objeto (sin Ø cos Θ, sin Θ sin Ø, cos Ø) Definição implícita Determina se um ponto pertence ou não a um objeto x 2 + y 2 + z 2-1 = 0 Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 14

Representação É possível ter mais de um tipo de representação para um objeto: Exemplo: círculo centrado na origem com raio=1 x2 + y2 = 1 (implícita) x(θ)=cos(θ) e y(θ)=sin(θ)(paramétrica) Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 15

Representação Outra forma de representação dos objetos é através de pontos (vértices) e faces (um arranjo de vértices). Não precisão matemática das representações paramétrica e implícita, mas tem a facilidade da modelagem manual. Apenas uma aproximação do modelo real. Consome mais memória, mas exige menos processamento para renderização de objetos. 02-Mar-11 Leandro Tonietto 16

Polígonos Uso de polígonos para modelar objetos do mundo real: Tudo pode ser transformado num polígono (ou quase tudo) Podemos renderizar polígonos rapidamente Várias operações são fáceis de fazer em polígonos Memória e disco são relativamente baratos Polígonos são simples Uma malha de polígonos representa a superfície de um objeto. Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 17

Polígonos Desvantagens ou problemas São apenas aproximações das superfícies Mas podem ser tão detalhados quanto necessário Normais são apenas aproximadas dentro da face. Ao transformarmos em polígonos perdemos informação e não há meios de reconstruir a informações original depois amostrados os polígonos. A maioria das superfícies reais são curvas (especialmente estruturas naturais), o que torna a representação aproximada mais difícil e dispendiciosa. Falta de estruturação Alguns cálculos geométricos podem ser altamente complexos. Exemplo: cálculo de intersecção. Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 18

Polígonos Malha Convexa/Côncava Se convexo, várias operações são mais simples: Clipping, preenchimento, intersecção, detecção de colisão, rendering, cálculo do volume, etc. Fechada/Aberta Simples Malhas fechadas são chamadas de watertight Faces se encontram apenas nas arestas e vértices Lados se encontram apenas nos vértices Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 19

Polígonos Estrutura de dados: Três componentes Vértices Conectividade quais vértices fazem quais faces Dados associados: normais, texturas, equação do plano, etc. Associados ou ao vértice ou à face, podemos ter informações nos dois níveis inclusive. Normalmente, a informação a nível de face é um valor médio dos seus vértices. Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 20

Polígonos Vários modelos são apenas lista de polígonos struct Vertex { float coords[3]; } struct Triangle { struct Vertex verts[3]; } struct Triangle mesh[n]; glbegin(gl_triangles) for ( i = 0 ; i < n ; i++ ){ glvertex3fv(mesh[i].verts[0]); glvertex3fv(mesh[i].verts[1]); glvertex3fv(mesh[i].verts[2]); } glend(); Atenção: Em OpenGL a ordem dos vértices é importante. O default é na direção contrária aos ponteiros do relógio. No quê isto pode impactar? Triângulos são compostos por 3 vértices e malha é composta por n triângulos. Acesso direto aos vértices dentro do triângulo. Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 21

Polígonos Lista de polígonos: Vantagens: Simples de ler, gravar, transmitir, desenhar e etc. Saída comum dos CADs Formato similar ao desenho na OpenGL Desvantagens (informação): Não faz referência aos vizinhos Não indica se o objeto é aberto/fechado Sem informações sobre polígono degenerados. Custo de memória, devido a duplicação de vértices e informações relativas a estes. Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 22

Polígonos Acesso indireto: Não gerar vértices novos para cada polígono, porque: Wastes memory - each vertex repeated many times Difícil de encontrar polígonos vizinhos Difícil de verificar se os polígonos se interseccionam Solução: acesso indireto Colocar todos os vértices em uma lista Cada face armazena os índices dos seus vértices v0 v1 v4 vértices v0 v1 v2 v3 v4 v2 v3 faces 0 2 1 0 1 4 1 2 3 1 3 4 Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 23

Polígonos Vantagem: Fácil de obter informação de conectividade da superfície Economiza em armazenamento O índice pode ter apenas 4 bytes; um vértice 3D tem, em geral, 12 bytes. Cada vértice é usado pelo menos 3 vezes (e, em média 4-6 vezes), mas é armazenado apenas uma vez Normais, coordenadas de textura, cores, etc., podem ser armazenados da mesma forma Desvantagens: Conectividade não é explícita Acesso ao cache não é otimizado Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 24

Polígonos OpenGL e Acesso indireto: struct Vertex { float coords[3]; } struct Triangle { GLuint verts[3]; } struct Mesh { struct Vertex vertices[m]; struct Triangle triangles[n]; } Triângulos são compostos por 3 ponteiros para vértices e malha é composta por m vértices e n triângulos. Acesso indireto aos vértices dentro do triângulo. glbegin(gl_triangles) for para todos os triangulos for para todos os vertices int vi = mesh.triangles[i].verts[j] glvertex3v(mesh.vertecies[vi]); glend(); Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 25

Polígonos OpenGL e acesso indireto (v1): glenableclientstate(gl_vertex_array) glvertexpointer(3, GL_FLOAT, sizeof(struct Vertex), mesh.vertices); glbegin(gl_triangles) for (int i = 0 ; i < n ; i++ ) { glarrayelement(mesh.triangles[i].verts[0]); glarrayelement(mesh.triangles[i].verts[1]); glarrayelement(mesh.triangles[i].verts[2]); } glend(); Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 26

Polígonos OpenGL e acesso indireto (v2): glenableclientstate(gl_vertex_array) glvertexpointer(3, GL_FLOAT, sizeof(struct Vertex), mesh.vertices); for (int i = 0 ; i < n ; i++ ) gldrawelements(gl_triangles, 3, GL_UNSIGNED_INT, mesh.triangles[i].verts); Menos chamadas de funções Em geral é mais rápido Porém, exige correspondência entre vértices, normais e mapeamento de texturas. Another variant restricts the range of indices that can be used even faster because vertices may be cached Can even interleave arrays to pack more data in a smaller space Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 27

Conectividade Informação de polígonos vizinhos é importante para vários algoritmos Cada face armazena ponteiros para seus vizinhos Ou pode-se gerar uma lista de conectividades, mapeando cada aresta com os seus polígonos. Conectividade ajuda em: Detecção de Colisão Simplificação de malhas Subdivisão de superfícies Recortar e extrair partes do modelo Etc. A informação pode ser extraída e armazenada para futuro uso Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 28

Normais Normais indicam o formato da superfície Normais por face: Uma normal por face Flat shading, toda a face tem a mesma cor de preenchimento, portanto, sem considerar as variações de iluminação por região da face. Normais por vértice: Uma normal por vértice smooth shading, pontos intermediários são interpolados pelos pontos dos vértices. Podemos armazenar vetores de normais (similar a vetores de vértices) Índices de vértices e normais podem ser armazenados separadamente. Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 29

Exemplo de objeto Cubo Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 30

Calculando os Vetores Normais Vários modelos não tem normais Ex.: laser scan Normais por face são fáceis de calcular: Produto vetorial de dois vetores normalizados posicionados nas arestas Normais por vértice: Calcular normais das faces Calcular a médias das faces que cada vértice compõe (um exemplo de uso da informação de conectividade) Podemos calcular uma média ponderada considerando a área dos polígonos Podemos definir ângulo máximo para considerar a face na média evitando suavizar cantos Não considerar a normal da face na média se o ângulo entre duas faces é maior do que um ângulo pré-definido (threshold). Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 31

Definindo a estrutura de dados Cores, coordenadas de texturas, weights, etc., podem ser tratados como vértices ou normais Coeficientes de iluminação podem ser definidos por face ou por objeto (raramente por vértice) A Idéia é definir subestruturas: Faces são partes de grupos/objetos Vértices são parte de faces... Slide da apresentação do prof. Christian Hofsetz 02-Mar-11 Leandro Tonietto 32

Definindo a estrutura de dados Diagrama: 02-Mar-11 Leandro Tonietto 33

Exercício prático Implementar as classes do modelo conforme especificado no slide anterior. Implementar um programa que renderize objetos a partir de sua malha poligonal. Esta malha foi preenchida (vértices, grupos e faces) manualmente, portanto, o aluno deve especificar dentro do programa a composição da malha. Não deve carregar de arquivo. Exemplos de objetos para serem modelados e desenhados: Paralelepípedo Esfera Toróide Pirâmide Ou qualquer objeto aproximado por polígonos. 02-Mar-11 Leandro Tonietto 34

Tarefa de programação Implementar um leitor de arquivo no formato OBJ (que tem a descrição de objetos como uma malha poligonal com vértices, normais, textura e faces). Copiar arquivos OBJ de exemplo com o professor. Armazenar as informações lidas em estruturas de dados conforme vimos durante a aula. Plotar polígonos no OpenGL 02-Mar-11 Leandro Tonietto 35

Referências bibliográficas AGOSTON, Max K. Computer Graphics and Geometric Modeling: Implementation and Algorithms. Springer. 2005. WRIGHT Jr., Richard S.; LIPCHAK, Benjamin; HAEMEL, Nicholas. OpenGL Superbible: Comprehensive Tutorial and Reference. 4ed.: Addison-Wesley. 2007. Stephen Chenney: http://www.cs.wisc.edu/~schenney/ courses/cs559-s2002/ Slides sobre CG dos professores: Christian Hofsetz, Cristiano Franco, Marcelo Walter e Soraia Musse. Especificação do formato Wavefront OBJ: http://www.martinreddy.net/gfx/3d/obj.spec 02-Mar-11 Leandro Tonietto 36