Renderização em Tempo Real de Pêlos Aplicados Sobre Malhas Tridimensionais Arbitrárias Obtidas de Objetos Reais

Documentos relacionados
Survey de técnicas. detalhadas: Análise e Comparação

Bruno Pereira Evangelista. Pontifícia Universidade Católica de Minas Gerais

vértices dessas células. Exemplos de malhas estruturadas e não-estruturadas são apresentados na Figura 2.

Introdução Introdução

A terceira dimensão. A terceira dimensão. Modelagem tridimensional. A terceira dimensão Wilson de Pádua Paula Filho

3 Fundamentos. 3.1 Pipeline de renderização em OpenGL

Geração Procedural de Terrenos em GPU

Figura 1.1: Partição do espaço contendo a esfera S.

Introdução. 1 Introdução

O Problema da Colisão. Profa. Dra. Soraia Raupp Musse

Prof. Fernando V. Paulovich 3 de agosto de SCC Computação Gráca

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

INF2610 Renderização em Tempo Real. Waldemar Celes. 23 de Março de 2017

SISTEMAS DE INFORMAÇÕES GEOGRÁFICAS Aula 2. SIG- Eng. Cartográfica Prof. Luciene Delazari

Resumo. Computação Gráfica: Uma Proposta de Plano Pedagógico. Áreas Correlatas. Definição. Uma Visão Integrada da C.G.

4 Técnicas de Renderização HDR

4 Impostores com Relevo

Mapeamento de Texturas

Capítulo 3. Descrição e visualização do modelo 25

Um Sistema de Animação Baseado em Movimento Capturado

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

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

PEF 5743 Computação Gráfica Aplicada à Engenharia de Estruturas

MODELAGEM GEOMÉTRICA

Tópicos Especiais em Engenharia de Software (Jogos II)

Representação de Objectos. & Estruturas de Dados. ! Os modelos são cada vez mais complexos

2 Técnicas e Trabalhos Relacionados

Introdução Geral a Computação Gráfica. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina de Computação Gráfica

Computação Gráfica - 09

DADOS EM GEOPROCESSAMENTO

2 Conceitos Básicos e Trabalhos Relacionados

Técnicas de Mapeamento

5 Resultados e Aplicações

Processamento de Malhas Poligonais

Computação Gráfica - 11

Os testes foram efetuados em um processador Intel i7 de 2.8 GHz com 12Gb de memória RAM utilizando uma Nvidia GeForce GTX 480.

Computação Gráfica e Processamento de Imagens. - Sistemas 3D (conceitos básicos) Prof. Julio Arakaki


Reconstrução de cenas a partir de imagens através de Escultura do Espaço por Refinamento Adaptativo

Visualização Interativa de Modelos Massivos de Engenharia na Indústria de Petróleo com o Algoritmo de Voxels Distantes

Visualização de terrenos em GPU

Leandro Moraes V. Cruz. 25 de novembro de Instituto de Matemática Pura e Aplicada VISGRAF. Modelagem de Terrenos baseada em Fotograas

Aplicação de Tags em Objetos de Sistemas de Visualização em Tempo Real

Modelagem Geométrica

TRATAMENTO EFICIENTE DE VISIBILIDADE ATRAVÉS DE ÁRVORES DE VOLUMES ENVOLVENTES. Mauricio Hofmam

Mapeamento de Texturas

Introdução ao Processamento e Síntese de imagens Rendering 2016

Computação Gráfica. Representação e Modelagem

Visualização Distribuída utilizando Agrupamentos de PCs 10

Técnicas de renderização com textura

Fundamentos e Conceitos Básicos

1.1(a): Malha de triângulos aproximando a forma de um golfinho. 1.1(b): Barco modelado com superfícies paramétricas (neste caso, NURBS).

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

IMPLEMENTAÇÃO E OTIMIZAÇÃO DE UMA BOUNDING INTERVAL HIERARCHY PARA UM RAYTRACER DE TEMPO REAL USANDO CUDA

5 Iluminação Baseada em Imagem

Um Algoritmo para a Visualização de um Terreno com Objetos

QuadLOD: Uma Estrutura para a Visualização Interativa de Terrenos

Fluxo de Trabalho Básico Modelar o ambiente Atribuir materiais aos objetos Adicionar luzes Posicionar câmeras Renderizar a cena Animar

3 Visualização de TetraQuads

Lista de exercícios. 4) Defina o conceito de função de eficiência luminosa. (Victor)

Proposta de Dissertação de Mestrado Modelagem Computacional, UFJF

Exame de Época Especial Computação Gráfica

4 Extração direta das PELs

Modelo. Modelos de Objetos por Malhas Poligonais. Modelos Geométricos. Modelagem Geométrica

Computação Gráfica - 13

Rendering de Polígonos. Determinação de Superfícies Visíveis. Back Face Culling. Back Face Culling. Back Face Culling. Back Face Culling.

Processamento de Malhas Poligonais

DADOS EM GEOPROCESSAMENTO

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

Resumo. Ray Tracing. Introdução. Ray Casting Básico. Idéia

Determinação de Superfícies Visíveis

SCE-201 Computação Gráfica. Representação de Objetos Tridimensionais Modelos Poligonais

Imagem e Gráficos. vetorial ou raster?

Figura 1.1: Um reservatório natural de petróleo típico: dificuldade para investigar áreas de interesse.

GPU (Graphics Processing Unit) Bruno Padilha Gregory De Bonis Luciana Kayo

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

Processamento Gráfico

3.1 Linha de Produção Utilizada

Computação Gráfica - 09

Shading (sombreamento) & Smooth Shading

Visão Computacional. Alessandro L. Koerich. Programa de Pós-Graduação em Engenharia Elétrica Universidade Federal do Paraná (UFPR)

Introdução ao Processamento e Síntese de imagens -Linhas e superfícies escondidas

SISTEMAS DE INFOMAÇÃO GEOGRÁFICA Reconhecer conceitos associados aos SIG/GIS Estabelecer um conjunto de procedimentos em função da análise a efectuar

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 7. Iluminação

5 Frustum culling em GPU

Esse tipo de visualização sempre exige uma preocupação adicional com eficiência pois o número de polígonos necessário para representar fielmente a

Um Estudo das Técnicas de Obtenção de Forma a partir de Estéreo e Luz Estruturada para Engenharia

Visualização de terrenos em GPU

2 Rendering baseado em imagens e as plataformas celulares

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA

PMR3507 Fábrica digital

PMI 3331 GEOMÁTICA APLICADA À ENGENHARIA DE PETRÓLEO

Shading (sombreamento) & Smooth Shading

INF1339 Computação Gráfica Tridimensional. Waldemar Celes. 2 de Agosto de 2010

Computação Gráfica. Exame de Época Especial de. Nº Nome:

5 Comparação e Resultados

Engenharia Informática Computação Gráfica

Transcrição:

Renderização em Tempo Real de Pêlos Aplicados Sobre Malhas Tridimensionais Arbitrárias Obtidas de Objetos Reais Bruno Evangelista Orientador: Renato Ferreira

Introdução Pêlos possuem um papel importante na criação de criaturas virtuais realistas

Introdução Pêlos de criaturas reais são complexos e difíceis de representar computacionalmente Pêlo Lontra: 200,000 fios/cm 2

Introdução Os principais desafios existêntes no uso de pêlos estão relacionados a sua: Representação Geração Aplicação Simulação Renderização

Curvas Representação dos Pêlos Representação contínua dos pêlos Modelagem amigável para artistas Grande volume de dados

Nalu Demo [Nalu 2006] [Sintorn 2008]

Volumes Representação dos Pêlos Representação discreta dos fios Volume de dados fixo e geralmente inferior ao necessário para armazenar curvas Restrições no controle e animação dos pêlos Modelagem NÃO amigável para artistas

[Swaaij 2006] [Kajiya 1989]

Geração / Aplicação dos Pêlos Artistas Qualidade dos resultados depende da qualidade técnica dos artistas Requer intervenção humana e pode demandar muito tempo para ser finalizada

Geração / Aplicação dos Pêlos Algoritmos Qualidade dos resultados depende da qualidade do algoritmo e da semente utilizada no mesmo Necessário intervenção humana para avaliar o resultado do algoritmo com diferentes sementes*

Pêlos gerados por um sistema de partículas [Lengyel 2001] [Isidoro 2002]

Renderização dos Pêlos A metodologia de renderização depende de como os pêlos são representados Volumes: Traçado de Raios (ray-tracing) Geometrias: Rasterização Curvas: Discretização (segmentos linhas) [Rasterização / Traçado de Raios]

Desafios: Renderização dos Pêlos Área da geometria inferior a área de um pixel da imagem gerada Pequeno espaçamento entre as geometrias Novas abordagens propostas: Renderização de camadas/superfícies paralelas Renderização de volumes

Objetivos Criação e aplicação automática de pêlos sobre malhas arbitrárias obtidas a partir de objetos do mundo real Renderização das malhas contendo pêlos em tempo real

Motivação Modelagem e mapeamento de pêlos ainda é um trabalho manual realizado por artistas Poucos trabalhos científicos apresentam algoritmos para o mapeamento de pêlos Lengyel 2001

Sumário Trabalhos Relacionados Scanning e Reconstrução de Malhas Algoritmo Proposto Pré-processamento das Malhas Arbitrárias Geração dos Pêlos Renderização das Malhas com Pêlos Mapeamento e Iluminação dos Pêlos Resultados Conclusão

Trabalhos Relacionados

Trabalhos Relacionados Renderização de pêlos Renderização através de volumes [Kajiya 1989, Neyret 1995, Neyret 1996, Neyret 1998, Hirche 2004, Porumbescu 2005, Swaaij 2006, Jeschke 2007] Renderização através de camadas paralelas [Lacroute 1995, Meyer 1998, Lengyel 2001, Isidoro 2002, Decaudin 2004, Sheppard 2004, Wyatt 2007, Yang 2008]

Renderização através de volumes Algoritmo: Geração de um volume sobre cada face da malha (Shell Space) Geração de um volume contêndo pêlos (Textura 3D) Mapeamento entre espaço da textura e Shell Space

Renderização através de volumes [Jeschke 2007]

Renderização através de volumes Problemas: Como gerar o Shell Space? Como mapear o espaço da textura para o Shell Space? Como tirar proveito das GPUs modernas?

Renderização através de camadas Algoritmo: Geração de várias camadas paralelas da malha Volume discreto de camadas Geração de um volume contêndo os pêlos (Textura 3D) Mapeamento de camadas do volume para camadas da malha

[Decaudin 2004] [Meyer 1998]

Renderização através de camadas Problemas: Como gerar as camadas paralelas? Como definir o número ideal de camadas, e o espaçamento entre elas? Como tratar a descontinuidade entre as camadas?

Trabalhos Relacionados Mapeamento automático de pêlos [Lengyel 2001] Mapeamento dos pêlos utilizando uma extensão do algoritmo Lapped Textures [Praun 2000] Renderização dos pêlos através da renderização de camadas paralelas da malha

Mapeamento de pêlos [Lengyel 2001]

Mapeamento de pêlos [Lengyel 2001] Problemas: Parametrização diferente para cada camada Trechos disjuntos em cada camada* Necessário definir trecho da textura a ser repetido e direção de crescimento*

Scanning e Reconstrução de Malhas

Scanning e Reconstrução de Malhas As malhas utilizadas neste trabalho foram obtidas/extraídas de objetos reais Alta complexidade geométrica* Diferentes topologias (forma, curvatura, conectividade)

Scanning e Reconstrução de Malhas Malhas obtidas através do repositório de scanning de Stanford Utilizadas em diversos trabalhos científicos Representadas como um arranjo de faces triângulares Este trabalho não foca no processo de scanning

Bunny Buddha Armadillo Dragon

Scanning e Reconstrução de Malhas Também foram gerados e avaliados diferentes níveis de detalhes para cada uma das malhas

Algoritmo Proposto

Pré-Processamento das Malhas

Pré-Processamento das Malhas Torna as malhas arbitrárias de entrada aptas a aplicação e renderização de pêlos Aplica otimizações sobre as malhas Remoção de vértices duplicados e indexação Reordenação de vértices para maximizar uso do cache de vérties pós-processados

Níveis de Detalhe Malha Centralização da Posição dos Vértices Geração de Normais Contínuas Detecção de Vértices Duplicados e Indexação Reordenadação de Índices para Cache Malha Otimizada e Apta a Renderização de Pêlos

Centralização da Posição dos Vértices Os vértices da malha podem estar localizados em qualquer posição espacial Mapeamento dos pêlos requer que os vértices estejam ao redor do centro do mundo Objetivo: Posicionar o centro da malha* no centro do mundo Calcular a menor esfera que envolve a malha

Centralização da Posição dos Vértices

Centralização da Posição dos Vértices

Geração de Normais Contínuas Os vértices da malha podem não possuir vetores normais Necessários para geração de camadas paralelas Necessários para aplicação e iluminação dos pêlos Normais devem ser contínuas entre faces adjacentes para gerar resultados corretos

Problemas na Extrusão Problemas na Iluminação Malha Contêndo Normais Descontínuas Extrusão das Normais

Geração de Normais Contínuas Objetivo: Gerar uma normal única para todos os vértices incidentes numa mesma posição espacial Problema: Como gerar a normal única? 1. Somatório das normais e normalização 2. Somatório das normais únicas e normalização

Geração de Normais Contínuas 1. Pequenas Deformações 2.

Geração de Normais Contínuas

Detecção Vértices Duplicados e Indexação A malha de entrada é representada por uma lista de faces triângulares Três vértices disjuntos (não compartilhados) definem cada face Tamanho malha = Num Faces * 3 * Vértice Objetivo: Reduzir os dados da malha

Detecção de Vértices Duplicados e Indexação Soluções estudadas: Reduzir os dados de cada vértice (ex: Float -> Half) Compartilhar vértices entre faces da malha Reduzir os dados de cada vértice Permite reduzir o tamanho da malha em 50% Geralmente implica em perda de precisão

Detecção de Vértices Duplicados e Indexação Compartilhar vértices entre faces da malha Cada vértice é compartilhado na média por 6 faces (malha fechada) [Hoppe 1999] Permite redução dos vértices de até 83.3% (5/6) Quando TODOS os vértices incidentes na mesma posição espacial são idênticos Requer o armazenamento de uma lista de índices

Detecção de Vértices Duplicados e Indexação

Resultados Indexação Malhas avaliadas: Cube, Torus, Bunny, Dragon, Armadillo, Buddha Quatro níveis de detalhe avaliados*

Resultados Indexação Compartilhamento de vértices entre faces Malha Num. Vértices Num. Faces Vértices/ Faces Cube 8 12 0.667 Torus 192 384 0.500 Bunny (0) 34,834 69,451 0.501 Armadillo (0) 172,974 345,944 0.500 Dragon (0) 434,856 871,414 0.499 Buddha (0) 542,612 1,108,716 0.498

Resultados Indexação Redução das Malhas Número Vértices Média Desvio Padrão Mínimo Máximo < 65,536 75.92% 1.91 74.9% 81.8% >= 65,536 66.74% 0.05 66.7% 66.8%

Reordenação de Índices Tempo de renderização está relacionado a execução dos estágios 1. Processamento Vértices [+Vertex Setup] 2. Rasterização (Produz Fragmentos) 3. Processamento Fragmentos [+Pixel Setup] 4. Output Merger (Fusiona Fragmentos) Custo de execução dos estágios: [1.] Complexidade geométrica [2.~4.] Número de pixels ocupados pelo modelo*

Objetivo: Reordenação de Índices Reduzir o tempo de renderização da malha Possíveis soluções: Reduzir o número de vértices processados Reduzir o número de pixels gerados Reduzir o número de pixels processados (reduzir overdraw)

Reordenação de Índices Reduzir o número de vértices processados Utilizar cache de vértices pós-processados Reordenar uso dos vértices para maximizar localidade espacial ACMR (Average Cache Miss Ratio) Número médio de cache miss por face Triângulos: ACMR = 3 (Constante) Triângulos indexados: ACMR = [0.5, 3]

Reordenação de Índices Algoritmos para reordenação de índices D3DX (Direct3D Extensions) [Hoppe?] [Lin 2006]

Resultados Reordenação Problemas: [Lin 2006]: Malhas maiores que 346,000 faces não puderam ser processadas (Dragon 0, Buddha 0) [D3DX] Erro ao processar algumas malhas (Bunny 0, Armadillo 2, Buddha 3) As malhas que apresentaram problema não serão avaliadas nos resultados

Resultados Reordenação Desempenho em FPS (1280x800) Malhas Média Original Média Indexada Média Lin Média D3DX Todas 476.69 478.84 495.53 517.30 > 22.000 Vértices 265.25 287.75 325.75 399.50 Malhas Indexada/Original Lin/Original D3DX/Original Todas 1.00 1.04 1.09 > 22.000 1.08 1.45 1.50

Geração dos Pêlos

Geração dos Pêlos Pêlos estreitos são gerados proceduralmente, e armazenados em uma textura 2D Pêlos estreitos necessitam de uma única camada Pêlos gerados são transformados em mapas de ambiente Mapas utilizados: Cubo e Esfera

Geração dos pêlos: Geração dos Pêlos Posição dos pêlos gerada por uma função noise Número de pêlos controlado por um parâmetro de densidade (N = Densidade * L * A) Controle de vizinhança entre os pêlos Pêlos armazenados em uma textura RGBA Posições vazias = branco transparentes Posições com pêlos = branco opacas

Geração dos Pêlos Pixels pretos ilustram posições cuja cor é branco transparentes

Mapa de Ambiente Geração dos Pêlos Representa o ambiente ao redor de uma cena Endereçado por uma direção na cena (vetor 3D) Idéia: Criar um ambiente de pêlos, e mapealos para os objetos da cena

Mapa de Esfera Geração dos Pêlos Armazenamento compacto Representa o ambiente em uma única direção Mapa de Cubo Requer armazenamento de seis mapas (6x esfera) Representa o ambiente independente de direção

Geração dos Pêlos -Z +Y +X +Z

Geração dos Pêlos

Renderização dos Pêlos

Renderização dos Pêlos Baseado na renderização de camadas paralelas da malha Algoritmo: 1. Geração de camadas paralelas da malha Implementado como um vertex shader (HLSL) 2. Mapeamento dos pêlos e shading das camadas Implementado como um pixel shader em HLSL Saída do VS é utilizada como entrada no PS*

Renderização dos Pêlos Vertex Shader Executado uma vez para cada vértice da malha Malha deve ser renderizada N vezes, de acordo com o número de camadas desejadas Objetivos: Gerar uma nova camada paralela (a partir da extrusão da malha de entrada*) Gerar entradas necessárias no Pixel Shader

Renderização dos Pêlos Vertex Shader Extrusão Geração Dados PS Pixel Shader Malha Entrada Extrusão Extrusão Geração Dados PS Geração Dados PS Pixel Shader Pixel Shader

Extrusão da Malha Translada cada vértice da malha na direção do seu vetor normal P = P + V normal * N camada * Distância Distância = [K 1 * Raio malha ) * K escala ] / Total camadas Realizada em tempo real Permite modificar o número de camadas e a distância entre elas em tempo real

Renderização dos Pêlos Pixel Shader Executado para cada ponto da superfície de cada camada paralela Camadas são processadas em nível crescente de extrusão

Camada N Mapeamento de Ambiente Mapeamento de Ambiente Mapa de Pêlos Esfera Cubo Mapa de Coloração Esfera Cubo Iluminação Difusa/Especular Modulação M1 x M2 x I Resultado Final

Mapeamento de Ambiente Mapas de ambiente acessados/endereçados através de um vetor 3D N

Mapeamento de Ambiente Mapas de ambiente acessados/endereçados através de um vetor 3D N

Mapeamento de Ambiente Vetor de acesso ao mapas de pêlos deve ser: 1. Independente de visão 2. Diferente para cada vértice de uma mesma face 3. Capaz de endereçar um número de amostras diferentes proporcional a área de cada face (MUNDO IDEAL)

Mapeamento de Ambiente Abordagens avaliadas para geração do vetor: 1. Posição do Vértice (norm., sem transformações) 2. Normal do Vértice (sem transformações) 3. Combinação dos itens 1 e 2

Resultados Mapeamento Posição Vértice (Normalizado)

Resultados Mapeamento Vetor Normal

Resultados Mapeamento Vetor Normal + Posição Vértice

Iluminação dos Pêlos Importante para o realismo dos pêlos Modelos empíricos apresentam baixo realismo Modelos fisicamente reais são caros para execução em tempo real Solução adotada: Modelo proposto por Kajiya [Kajiya 1989] Iluminação de cilindros + Phong (empírico)

Iluminação dos Pêlos [Sheppard 2004]

Ambiente Virtual Criado Visualização, navegação e configuração da renderização das malhas em tempo real Implementado utilizando C++ e DirectX 10 Principais recursos Configuração dos parâmetros de qualquer estágio em tempo real (pré-proc., geração pêlos, etc) Controle de câmera e luz (adaptativo aos modelos) Suporte a malhas no formato OBJ

DEMO Ambiente Virtual Criado

Parâmetros fixados: Resultados Finais Indexação + Reordenação D3DX/Lin Mapa de pêlos no formato de cubo (256x256) Parâmetros avaliados: Densidade dos pêlos [10%, 20%] Altura dos pêlos [2%, 5%] Número camadas utilizadas [8, 16]

Resultados Finais Malhas Num. Faces Núm. Camadas Altura Pêlos FPS Bunny 16,303 8 10% 133 Bunny.. 8 20% 126 Bunny.. 16 10% 78 Bunny.. 16 20% 74 Buddha 293,232 8 10% 37 Buddha.. 8 20% 37 Buddha.. 16 10% 20 Buddha.. 16 20% 20

Resultados Finais Possível obter desempenho interativo para malhas extremamente detalhadas Desempenho: Altura dos pêlos +10% / Desempenho -5% Número de camadas +100% / Desempenho ~-42%

[16 Camadas, Altura 2%, Densidade 10%]

[8 Camadas, Altura 2%, Densidade 20%]

Conclusão Algoritmo apresentado é robusto e pode ser aplicado em tempo real Renderização de camadas paralelas apresenta uma boa relação entre qualidade/desempenho Mapeamento dos pêlos proposto (através de mapas de ambiente) apresenta poucas falhas Algoritmo proposto apresenta uma alternativa ao algoritmo de Lengyel

Perguntas? Bruno P. Evangelista bpevangelista@gmail.com bevangelista@tectoydigital.com www.brunoevangelista.com "De fato, que aproveitará ao homem ganhar o mundo inteiro mas perder sua alma?", Mateus 16, 26

Trabalhos Futuros Suporte a tipos de pêlos não estreitos Suporte a altura não uniforme dos pêlos Remoção de pêlos de partes da malha

Resultados (Indexação)

Resultados Reordenação