Fotorealismo Marlus Souza [email protected] Samuel Arcoverde [email protected] 2 Fotorealismo (Hiper-Realismo) • Movimento artístico surgido nos Estados Unidos no final dos anos 60. • É um estilo baseado em fazer pinturas a partir de fotografias. ▫ Grande abrangência de detalhes. ▫ Mais explorados: reflexões e geometria. ▫ “Too perfect to be real.” Richard Estes 3 Glennray Tutor 4 Audrey Flack 5 Duane Hanson 6 E a computação? POV-Ray 3.6 9 Computação Gráfica Campo da Ciência da Computação que estuda métodos para sintetização e manipulação digital de conteúdo visual. ISO (International Standards Organization): Conjunto de métodos e técnicas utilizados para converter dados para um dispositivo gráfico, via computador. Necessidade humana de visualização de dados. 10 Computação Gráfica Computação Gráfica Dados Modelagem Geométrica Imagens Visão Computacional Processamento de imagens 11 Tríade Fundamental da CG Geometria Animação Renderização 12 Como representar os objetos? • Superfícies. • Malhas. • Curvas. • Parametrização. • Reconstrução. • Processamento de malhas out-of-core. 13 Como representar as cores e texturas? • Transporte / Visibilidade. • Shading – variar cor e brilho. • Scattering – interação da luz em um ponto. 14 Como representar o movimento? • Animação de personagens. • Simulações físicas: ▫ Tecido. ▫ Fluidos. O Começo • Sketchpad ▫ Tese de doutorado de Ivan Sutherland (1962 – MIT). ▫ Editor gráfico ▫ CAD "A display connected to a digital computer gives us a chance to gain familiarity with concepts not realizable in the physical world. It is a looking glass into a mathematical wonderland." http://www.youtube.com /watch?v=mOZqRJzE8xg Aplicações [1] • Física Computacional Aplicações [2] • Jogos Aplicações [3] • Medicina Aplicações [4] • CAD Aplicações [5] • Cinema http://www.youtube.com/w atch?v=5f-MYl-HzNw E várias outras áreas… • • • • • • • • Biologia Computacional Arte Digital Educação Design RA/RV Meteorologia Análise de Dados … História • 1968 ▫ Ray Casting • Década de 70 ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ Renderização Scanline (Scanline Rendering) Modelo de Sombreamento de Goraud e Phong Mapeamento de Textura (Texture Mapping) Mapeamento de Ambiente (Environment Mapping) Mapeamento de relevo (Bump Mapping) Z-buffering Volumes de Sombra (Shadow Volumes) Buffer de Sombra (Shadow Buffer) Ray Casting • Arthur Appel, 1968. • O Termo “Ray Casting” foi usado pela primeira vez em 1982 por Scott Roth. • Técnica de renderização que cria uma perspectiva 3D em um mapa 2D. • Idéia: ▫ Lançamento de raios a partir do observador de forma a perceber qual a distância a que estão os objetos que compõem a cena. • A alta velocidade de cálculo tornou este modelo muito popular na implementação de jogos 3D. Exemplos http://pixellove.eu/wega/ Exemplos http://www.youtube.com/watch?v=C00n4rDUMNo História • 1968 ▫ Ray Casting • Década de 70 ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ Renderização Scanline (Scanline Rendering) Modelo de Sombreamento de Gouraud e Phong Mapeamento de Textura (Texture Mapping) Mapeamento de Ambiente (Environment Mapping) Mapeamento de relevo (Bump Mapping) Z-buffering Volumes de Sombra (Shadow Volumes) Buffer de Sombra (Shadow Buffer) Renderização Scanline • Bouknight, 1970. • Algoritmo para determinar quais superfícies ou partes de superfícies não são visíveis de um determinado ponto de vista. ▫ Renderização feita linha por linha em vez de polígono por polígono ou pixel por pixel. • Vantagem: ▫ Não é necessário traduzir as coordenadas de todos os vértices da memória principal para a memória em uso. Exemplos História • 1968 ▫ Ray Casting • Década de 70 ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ Renderização Scanline (Scanline Rendering) Modelo de Sombreamento de Gouraud e Phong Mapeamento de Textura (Texture Mapping) Mapeamento de Ambiente (Environment Mapping) Mapeamento de relevo (Bump Mapping) Z-buffering Volumes de Sombra (Shadow Volumes) Buffer de Sombra (Shadow Buffer) Flat Shading • Calcula a cor de 1 ponto e sua cor é a mesma para toda a face. • É bastante rápido, já que elimina todos os efeitos dos modelos de sombreamento. • Porém, os modelos ficam com uma aparência quadrada. Exemplos Gouraud Shading • Henri Gouraud, 1971. • Suavidade na exibição de objetos com superfícies curvas representados por polígonos. • Em cada vértice é calculado um vetor normal estimado, que é a média das normais das faces que compartilham o vértice. • A cor é calculada para cada vértice. ▫ O cálculo da cor dos pontos internos da face é feita por interpolação. • Problema – efeitos luminosos muito localizados: ▫ Pontos de brilho especular são atenuados. ▫ Efeitos luminoso no meio do polígono podem ser complicados. Exemplos Phong Shading • Bui Tuong Phong, 1975. • Funcionamento semelhante ao do Gouraud Shading. • Normal da superfície é interpolada linearmente para se obter a cor final de cada pixel. • Melhora o modelo de Gouraud: ▫ Mantém o brilho especular. ▫ Resolve problema do meio do polígono. • Mais custoso que os dois anteriores. Exemplos Exemplos Flat Gouraud Phong Outros modelos: http://www.youtube.com/watch?v=YKCyquHPidQ História • 1968 ▫ Ray Casting • Década de 70 ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ Renderização Scanline (Scanline Rendering) Modelo de Sombreamento de Gouraud e Phong Mapeamento de Textura (Texture Mapping) Mapeamento de Ambiente (Environment Mapping) Mapeamento de relevo (Bump Mapping) Z-buffering Volumes de Sombra (Shadow Volumes) Buffer de Sombra (Shadow Buffer) Mapeamento de Textura • Edwin Catmull, 1974. • Método para adicionar textura (imagem 2D) a um polígono, modelo ou gráfico 3D. • Assim promove o aumento de realismo e a redução da complexidade do modelo. • Problema: Perspectiva. Exemplos Exemplos Exemplos http://www.youtube.com/watch?v= CZLGsTmB3sk&feature=related História • 1968 ▫ Ray Casting • Década de 70 ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ Renderização Scanline (Scanline Rendering) Modelo de Sombreamento de Gouraud e Phong Mapeamento de Textura (Texture Mapping) Mapeamento de Ambiente (Environment Mapping) Mapeamento de relevo (Bump Mapping) Z-buffering Volumes de Sombra (Shadow Volumes) Buffer de Sombra (Shadow Buffer) Mapeamento de Ambiente • Blinn e Newell, 1976. • Simulação de objetos refletindo o seu arredor. • Método eficiente de simular uma superfície espelhada através de texturas pré-calculadas. • Mais comuns: ▫ Spherical E.M. ▫ Cubic E.M. • Problema comum: ▫ O objeto não se reflete. Exemplos Exemplos http://www.youtube.com/watch?v=uhNFiiRMOtU História • 1968 ▫ Ray Casting • Década de 70 ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ Renderização Scanline (Scanline Rendering) Modelo de Sombreamento de Gouraud e Phong Mapeamento de Textura (Texture Mapping) Mapeamento de Ambiente (Environment Mapping) Mapeamento de relevo (Bump Mapping) Z-buffering Volumes de Sombra (Shadow Volumes) Buffer de Sombra (Shadow Buffer) Mapeamento de Relevo • Blinn, 1978. • Técnica da CG para simulação de superfícies irregulares. ▫ Superfícies com rugosidades, saliências, etc. • É feita através da alteração do vetor normal de cada pixel da imagem Exemplos Exemplos http://www.youtube.com/watch?v=njFurl4uwm8 História • 1968 ▫ Ray Casting • Década de 70 ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ Renderização Scanline (Scanline Rendering) Modelo de Sombreamento de Gouraud e Phong Mapeamento de Textura (Texture Mapping) Mapeamento de Ambiente (Environment Mapping) Mapeamento de relevo (Bump Mapping) Z-buffering Volumes de Sombra (Shadow Volumes) Buffer de Sombra (Shadow Buffer) Z-buffering • Edwin Catmull, 1974. • Gerenciamento das coordenadas de profundidade de uma imagem em gráficos 3D. • Geralmente implementado em hardware. • Uma das soluções para o “Problema da Visibilidade”. • Problema: ▫ Z-fighting. Exemplos Exemplos http://www.youtube.com/watch?v=UVGdOFVbvBo História • 1968 ▫ Ray Casting • Década de 70 ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ Renderização Scanline (Scanline Rendering) Modelo de Sombreamento de Gouraud e Phong Mapeamento de Textura (Texture Mapping) Mapeamento de Ambiente (Environment Mapping) Mapeamento de relevo (Bump Mapping) Z-buffering Volumes de Sombra (Shadow Volumes) Buffer de Sombra (Shadow Buffer) Volumes de Sombra • Frank Crow, 1977. • Técnica utilizada em gráficos 3D para acrescentar sombras em cenas já renderizadas. ▫ Sombras proporcionam maior realidade às cenas. ▫ Divide o mundo virtual em dois: com sombra e sem sombra. • “Sombra perfeita”. Exemplos http://www.youtube.com /watch?v=utdoRSeKg64 História • 1968 ▫ Ray Casting • Década de 70 ▫ ▫ ▫ ▫ ▫ ▫ ▫ ▫ Renderização Scanline (Scanline Rendering) Modelo de Sombreamento de Gouraud e Phong Mapeamento de Textura (Texture Mapping) Mapeamento de Ambiente (Environment Mapping) Mapeamento de relevo (Bump Mapping) Z-buffering Volumes de Sombra (Shadow Volumes) Buffer de Sombra (Shadow Buffer) Buffer de Sombra • Lance Williams, 1978. • Buffer de sombras de forma a tornar mais rápida a renderização de sombras. ▫ Garantir qualidade e/ou precisão da imagem se torna mais caro. ▫ Requerem grande quantidade de memória. ▫ GeForce 4 e Blender. • Self-shadowing. Exemplo História • Década de 80 ▫ Traçado de Raios (Ray Tracing) ▫ Traçado de Raios Distribuído (Distributed Ray Tracing) ▫ Traçado de Caminhos (Path tracing) ▫ Radiosidade (Radiosity) • Década de 90 ▫ Subsurface Scattering ▫ Mapeamento de Fótons (Photon Mapping) Ray Tracing • Turner Whitted, 1980. • Algoritmo para síntese de imagens 3D. • Simulação do trajeto que a luz faria no mundo real. ▫ Algoritmo reverso: Alto custo computacional. • Alto grau de realismo. • Método recursivo. ▫ Computação lenta: Número de interseções entre raios e objetos. Custo de cada cálculo de interseção. ▫ Ideal para aplicações em que a imagem pode ser renderizada lentamente, ou previamente. ▫ Não recomendado para aplicações em tempo real. Será? Exemplos História • Década de 80 ▫ Traçado de Raios (Ray Tracing) ▫ Traçado de Raios Distribuído (Distributed Ray Tracing) ▫ Traçado de Caminhos (Path tracing) ▫ Radiosidade (Radiosity) • Década de 90 ▫ Subsurface Scattering ▫ Mapeamento de Fótons (Photon Mapping) Ray Tracing Distribuído • Robert Cook, Thomas Porter e Loren Carpenter, 1984. • Ray Tracing – Limitações: ▫ ▫ ▫ ▫ Sombras bem delineadas. Todos os objetos em foco. Objetos em movimento aparecem congelados. Reflexão e refração “perfeitas”. Materiais perfeitamente lisos. Ray Tracing Distribuído • Ray Tracing Distribuído: ▫ Evita simplificações para que a imagem se torne mais suave e real. • Efeitos: ▫ ▫ ▫ ▫ ▫ Borramento por movimento (Motion Blur). Profundidade de Campo (Depth of Field). Penumbra (Soft Shadows). Superfícies Brilhosas (Glossy Surfaces). Superfícies Translúcidas. Borramento por movimento http://www.youtube.com/watch?v=R9FfkIGWoC4 Profundidade de Campo Penumbra Superfície Brilhosa 30% reflexão Sem superfície brilhosa 16 raios 4 raios 64 raios Superfície Translúcida Transparente Translúcido 4 raios Translúcido 16 raios História • Década de 80 ▫ Traçado de Raios (Ray Tracing) ▫ Traçado de Raios Distribuído (Distributed Ray Tracing) ▫ Traçado de Caminhos (Path tracing) ▫ Radiosidade (Radiosity) • Década de 90 ▫ Subsurface Scattering ▫ Mapeamento de Fótons (Photon Mapping) Path Tracing • James Kajiya, 1986. ▫ Apresentado no mesmo artigo da “Equação de Renderização”. • Técnica para renderização de gráficos fotorealísticos. • Tenta resolver a equação de renderização. • Imagem de qualidade superior às renderizadas com RayTracing. ▫ Maior custo computacional. Exemplo Ray-traced: Resolução: 500 x 500 Tempo de renderização: 132s Objetos/Polígonos: 10 / 7 Raios Primários/Secundários: 250000 / 76435 Velocidade: 2470 raios/s Caminho máximo: 10 jumps Path-traced: Resolução : 500 x 500 Tempo de renderização : 2h 10m Objetos/Polígonos : 10 / 7 Raios Primários/Secundários : 250000 / 1979333402 Velocidade: ~254000 raios/s Raios por Pixel: 2000 Caminho máximo : 30 jumps História • Década de 80 ▫ Traçado de Raios (Ray Tracing) ▫ Traçado de Raios Distribuído (Distributed Ray Tracing) ▫ Traçado de Caminhos (Path tracing) ▫ Radiosidade (Radiosity) • Década de 90 ▫ Subsurface Scattering ▫ Mapeamento de Fótons (Photon Mapping) Radiosidade • Cindy Goral, Kenneth Torrance, Donald Greenberg e Bennett Battaile, 1984. • Algoritmo de Iluminação Global. ▫ Tenta resolver a equação de renderização. • Baseado em conceitos de transferência de calor e conservação de energia. • Não modela reflexão especular. • Elevado realismo. Exemplos http://vimeo.com/3741726 Exemplos História • Década de 80 ▫ Traçado de Raios (Ray Tracing) ▫ Traçado de Raios Distribuído (Distributed Ray Tracing) ▫ Traçado de Caminhos (Path tracing) ▫ Radiosidade (Radiosity) • Década de 90 ▫ Subsurface Scattering ▫ Mapeamento de Fótons (Photon Mapping) Subsurface Scattering • Pat Hanrahan, Wolfgang Krueger, 1993. • Mecanismo em que a luz penetra a superfície de um objeto translúcido em um ponto, se dispersa e deixa a superfície em outro ponto. • Ideal para renderizar materiais como mármore, leite e pele. • Dá ao objeto uma aparência mais leve. Exemplo http://www.youtube.com/watch?v=pLeymBNSMu8 História • Década de 80 ▫ Traçado de Raios (Ray Tracing) ▫ Traçado de Raios Distribuído (Distributed Ray Tracing) ▫ Traçado de Caminhos (Path tracing) ▫ Radiosidade (Radiosity) • Década de 90 ▫ Subsurface Scattering ▫ Mapeamento de Fótons (Photon Mapping) Mapeamento de Fótons • Henrik Jensen, 1995. • Algoritmo de dois passos que resolve a equação de renderização. • Mais rápido que o Path Tracing. • Efeitos: ▫ Cáusticas. ▫ Interreflexões Difusas. ▫ Meios Participativos. Cáustica • Efeito de refração da luz em um meio transparente. Interreflexão Difusa • Energia luminosa atinge a superfície e reflete em todas as direções. ▫ “Color Bleeding”. Meios Participativos • Cálculos necessários para representar imagens com vapor, fumaça, poeira, etc. 86 Renderizadores • • • • • • • • • • Mental Ray V-Ray Kerkythea 3Delight Indigo LightRay POV-Ray Fryrender Brasil R/S Light Studio 87 MENTAL RAY • Criado pela Mental Images, comprada pela NVIDIA. • Tem como clientes: ▫ Audi, Honda, Renault, Volkswagen. ▫ DreamWorks, SONY. Hulk, Matrix, O dia depois de amanhã. ▫ Electronic Arts. • Scanline rendering, photon mapping, final gathering, motion blur (vários tipos), programmable shaders, shade trees… Maya 3DS Max SolidWorks Houdini 88 MENTAL RAY 89 V-RAY • Engine de Renderização criado pelo ChaosGroup em 1997. • Iluminação global: Path Tracing, Photon Mapping, Irradiance Cache e Light Cache. • É usado na produção de filmes, jogos e em arquitetura. Maya 3DS Max V-Ray • • • • Free, “physically based renderer”. Renderização em rede (TCP/IP). Spectral sky e sunlight. Horas do dia realísticas (pôr do sol, nascer do sol, etc). • Algumas bibliotecas usadas: ▫ TinyXML, Intel Jpeg library, Lib3ds, Libpng. Indigo • Primeira versão em 2005, depois de 8 meses de trabalho. • Freeware. • Kernel e bibliotecas do Phos (render engine antigo). • Bump mapping, Clip mapping e Edge Outlining. • Path Tracing, Photon Maps/Mesh Maps. SketchUp 3DS Max Kerkythea Brazil R/S • Brazil Rendering System criado pela SplutterFish. • Photon Mapping, Irradiance Cache, Cartoon Shading, Skin Shader, Sub-surface Scattering, Rendertime Displacement Mapping, 3D Motion Blur. • Hulk, Os incríveis, Sin City, Aeon Flux, Van Helsing, X-Men 2, Minority Report. 3DS Max Brazil R/S Hardwares Gráficos • Retirando o processamento de imagens do processador, ganha-se em velocidade. • Mais fácil de fazer Pipeline e de Paralelizar. • No começo: Rasterização. Depois, Geometria. Evolução dos Hw Gráficos • IBM(87’): Controladores VGA (Video Graphics Array). ▫ Processamento ainda na CPU. VGA é usado como frame buffer. • 90’: GPU (Graphics Processing Unit). ▫ Termo introduzido pela NVIDIA: “VGA” já era inapropriado. • 91’: Super Nintendo, Neo Geo. ▫ Rasterização de 1 triângulo 3D por frame. • 1ª Geração de GPUs. ▫ 94-98 (NVIDIA TNT2, ATI Rage, 3dfx Voodoo). ▫ Rasterização de triângulos pré-transformados. • 2ª Geração de GPUs. ▫ 1999-2000 (GeForce). ▫ Transformação de vértices (OpenGL e DirectX 7). ▫ Cálculo de Iluminação por vértice. GEOMETRIA Evolução dos Hw Gráficos • 3ª Geração de GPUs. ▫ ▫ ▫ ▫ 2001 (GeForce 3, GeForce 4 Ti, Radeon 8500). 600-800 estágios de pipeline. Programação ao nível de vértice/fragmento. DirectX 8.x e diversas extensões proprietárias do OpenGL. • 4ª Geração de GPUs. ▫ 2002-2003(GeForce FX, ATI Radeon 9700). ▫ Programação ao nível do pixel. ▫ Introdução das linguagens de alto nível para placas gráficas Cg (C for graphics), GLSL. ▫ Número de instruções por programa (vértice/fragmento) aumenta drasticamente. ▫ DirectX 9.x, OpenGL 2.0. Evolução dos Hw Gráficos • MULTI-GPU/SLIs (Scalable Link Interface). • NVIDIA, 2004. • Split Frame Rendering, Alternate Frame Rendering e SLI Antialiasing. ATI Crossfire Evolução dos Hw Gráficos • Physics Processing Units (PPUs). ▫ Unidades de processamento dedicadas a cálculos de física. • AGEIA, criou a Physx, e foi comprada pela NVIDIA em Fevereiro/08. ▫ Age of Empires III, Gears of War. • Havok FX. ▫ Crossfire e SLI. ▫ Half-Life 2, Dead Rising. ▫ Depois da compra pela Intel, sumiu. Ageia Physx PPU 102 Futuro • Avanços de hardware trazem, cada vez mais, o fotorealismo a vários segmentos. ▫ ▫ ▫ ▫ ▫ Medicina. Arquitetura. Indústria de Games. Indústria do Cinema. ... 103 Futuro • Uso intensivo da computação distribuída na Computação Gráfica. Futuro • http://www.youtube.com/watch?v=vg0lzlguHmE Perguntas?