Non-Photorealistic Rendering Ricardo Guerra Marroquim.

Post on 17-Apr-2015

121 views 2 download

Transcript of Non-Photorealistic Rendering Ricardo Guerra Marroquim.

Non-Photorealistic Rendering

Ricardo Guerra Marroquim

Apresentação

• Motivação

• Detecção de Silhuetas

• Pen-and-Ink Illustration

• NPRQuake

• Watercolor

• WYSIWYG NPR

• Bibliografia

Motivação• Até então ....

– Técnicas de renderização realísticas– Criação de um modelo geométrico– Projeção do modelo 3D para 2D– Computar modelo de iluminação– Detalhamento (sombras, texturas)– .....

• É possível gerar uma imagem que seja confundida com uma imagem real, uma fotografia por exemplo?

Motivação

• Nem sempre imagens fotográficas são a melhor escolha de representação

• “De que serve a fotografia para um mecânico quando ele tem o motor em sua frente” [Landsdown]

• “Arquitetos rabiscam sobre as imagens computadorizadas para criar a impressão de esboço, assim os clientes não tem a falsa impressão de integralidade.” [Markosian]

Motivação• Em algumas situações realismo não é prioridade:

– Cartoons

– Pinturas artísticas

– Desenhos Técnicos

– Visualização Cientifica

• É possível gerar uma imagem que seja confundida com um desenho feito a mão por uma pessoa?

Motivação

• Menos detalhes -> Melhor visualização e entendimento das imagens

• Menos tempo para criar e renderizar

• Ocupa menos espaço

• Expressão artística

Exemplos

Detecção de Silhuetas

• Aaron Hertzmann – “Introduction to 3D Non-Photorealistic Rendering : Silhouettes and Outlines” – SigGraph 99 Course

• Algoritmos para detecção de contornos de objetos em 2D e 3D.

Detecção de Silhuetas• Maneira simples :

– Renderizar a cena de uma visão escolhida– Detectar as bordas da imagem– Desenhar as bordas

• Porém as bordas de uma fotografia geralmente não correspondem as silhuetas desejadas.

• Uma imagem muita detalhada pode produzir muitos contornos que são irrelevantes para o formato do objeto

• Nenhuma borda é detectada entre dois objetos sobrepostos com a mesma cor

Depth Map• Depth Map (Mapa de Profundidade) : imagem

onde a densidade de cada pixel é proporcional a profundidade daquele ponto na cena

• Uma maneira melhor de detecção de silhuetas:– Renderizar a imagem

– Extrair o mapa de profundidade

– Detectar as bordas no mapa de profundidade

• Problema : não detecta bordas entre dois objetos que estão na mesma profundidade.

Normal Map• Normal Map : Os valores RGB do ponto

correspondem aos valores XYZ da normal naquele ponto.

• Como calcular o mapa de normais : – Colocar cor branca no objeto– Colocar uma luz vermelha no eixo X, uma verde no eixo

Y e uma azul no eixo Z, todas apontando para o objeto.– Colocar luzes com intensidades negativas nos lados

opostos de cada eixo.– Cada luz irá iluminar um ponto no objeto proporcional

ao produto escalar da normal da superfície com o eixo da luz.

Combinando Depth Map e Normal Map

Combinando Depth Map e Normal Map

Detecção de Silhuetas em Malhas

• Em malhas a silhueta consiste em todas arestas que ligam uma face de um polígono invisível com uma de um polígono visível.

• Método mais simples percorre toda malha para verificar as normais cada vez que a visão é modificada.

• Outros algoritmos randômizados são mais eficientes.

Detecção de Silhuetas em Superfícies

• Em superfícies suaves a silhueta consiste nos pontos onde a normal da superfície e perpendicular ao vetor da câmera.

Detecção de Silhuetas em Superfícies

• As superfícies são geralmente aproximações ou interpolações de uma malha

Detecção de Silhuetas em Superfícies

• Primeiro deve-se computar o produto escalar normalizado da normal da superfície com o vetor da câmera em cada vértice da malha:

• Depois computa-se o sinal do produto em cada vértice:

• Encontra-se todos pares de vértices na malha com sinais diferentes. Para encontrar o ponto aproximado da silhueta faz-se uma interpolação linear dos vértices:

Detecção de Silhuetas em Superfícies

• Depois conecta-se todos os pontos encontrados formando uma curvas de silhuetas

Pen-and-Ink Illustration

• Georges Winkenbach e David Salesin - “Computer-Generated Pen-and-Ink Illustration” - SigGraph 94

• Propriedades das ilustrações “Pen and Ink”

• Stroke Textures

Pen-and-Ink Illustration• Propriedades dos desenhos:

– A pena não tem variação de cor ou tonalidade, todo sombreamento deve ser feito utilizando traços.

– É manualmente difícil e trabalhoso preencher grandes áreas.

– Ideal para contornos, cada traço pode ter variações na pressão da pena e irregularidades do traçado.

– Imagens simples e diretas.

Pen-and-Ink Illustration• Dualidade dos traços:

– Normalmente a renderização de textura e tonalidade são feitas separadamente.

– Neste caso é preciso que o mesmo traço seja utilizado para textura e tonalidade.

• Combina informações 2D e 3D:– Normalmente as informações utilizadas para renderizar

são 3D e depois projetadas em 2D.– Nas ilustrações pen-and-ink as informações da projeção

2D são tão importantes quanto as informações em 3D.• Precisamos considerar as áreas das projeções para computar a

densidade dos traços.• É preciso usar as adjacências em 2D para criar os contornos

Pen-and-Ink Illustration

Pen-and-Ink Illustration

• Strokes (Traços) :– Coleção de diferentes tipos de traços, cada um

com uma prioridade diferente.– A renderização é feita em ordem de prioridade,

quando se atinge uma tonalidade aceitável não precisa mais renderizar os traços de menor prioridade.

• A escolha da tonalidade certa é feita de acordo com a resolução e o tamanho da imagem.

Pen-and-Ink Illustration• Os traços são escolhidos para prover uma textura e

tonalidade de acordo com o tamanho da ilustração e da resolução da impressão.

• Para desenhos pequenos é preciso de apenas alguns traços sem muitos detalhes de sombreamento.

Pen-and-Ink Illustration• Indicação : Em uma ilustração é importante que a

idéia da textura seja passada sem que seja necessário desenhar todos os traços requeridos.– Desta forma a figura final é mais clara e econômica.

• Neste método o usuário deve escolher em que regiões o desenho deve ser mais detalhado. Nas outras áreas é utilizado o princípio de indicação.

• Cada região escolhida é projetada e associada a textura da superfície em 3D. Quando existem várias regiões de detalhe algumas perturbações são introduzidas para que os padrões não sejam repetidos.

Pen-and-Ink Illustration

Pen-and-Ink Illustration

• Existem também alguns efeitos para os esboços:– O esboço de contornos influenciam as texturas

aplicadas naquela área.– Algumas linhas de contorno são retiradas,

especialmente quando duas áreas adjacentes do desenho possuem texturas bem distintas.

– As texturas de sombras são aplicadas de acordo com a direção da luz.

Pen-and-Ink Illustration

NPRQuake

• Grupo sobre a orientação do professor Michael Gleicher da Universidade de Wisconsin

• Objetivo : Estilização do QuakeGL

• Substituição das rotinas de desenho para alterar traçados e sombreamento

• Três estilos : Sketch, BluePrint, Brush

NPR Quake

• Sketch:– Simulação de uma pessoa rascunhando o

cenário rapidamente– Primeiro desenha os polígonos da parede– Desenha um número arbitrário de retas

deslocadas aleatoriamente das bordas (impressão de rabiscos)

– Adiciona transparência as retas para aumentar realismo

NPR Quake

NPR Quake

• Blue Print :– Simulação de uma planta de construção– Desenhado de forma parecida com a do Sketch

mas sem os deslocamentos das retas– Adicionado alguns detalhes como setas

direcionais da planta e algumas medidas

NPR Quake

NPR Quake

• Brushstroke:– Substitui as bordas dos polígonos por traços de

pincel– Não tem sombreamento– Diferentes larguras e tipos de texturas para

representar os traços

NPR Quake

Aquarela

• Cassidy Curtis, Sean Anderson, Joshua Seims, Kurt Fleischer, David Salesin – “Computer-Generated Watercolor” – SigGraph 97

• Como simular os efeitos de uma aquarela automaticamente.

Aquarela

• Algumas propriedades da aquarela:– Em pinturas que utilizam tinta e água ao invés

do papel tradicional, utiliza-se um feito de pano prensado para absorver melhor o líquido.

– A aparência final de uma aquarela é o resultado do movimento do pigmentos no meio, da absorção do pigmento e da água, e da evaporação da água.

Aquarela• Modelo :

– A imagem é representada como várias pinceladas ordenadas em um pedaço de papel. Cada pincelada pode conter diferentes tipos de pigmentos em diferentes regiões da imagem.

– Uma estrutura de dados, “glaze”, é utilizada para guardar estas quantidades.

– Cada “glaze” é criada independentemente por uma simulação de fluidos para computar o fluxo da tinta pelo papel.

– Também são criadas mascaras para denotar as áreas que foram atingidas por água.

Aquarela

• A simulação do fluído é realizada em três camadas:

Aquarela• Os valores são discretizados em uma matriz

representando o plano do papel com os seguintes valores:– Máscara de Água : 1 se região está molhada, 0 se não– Velocidade u,v da água na direção x e y– Pressão p da água– Concentração gk de cada pigmento k na água– Concentração dk de cada pigmento k depositado– A inclinação do papel definida como o gradiente da

altura do papel.– Propriedades físicas do papel como viscosidade.

Aquarela• A superfície do papel é gerada por uma função

randômica. • Um processo pseudo-aleatório gera as alturas de

cada ponto no papel. 0 < h < 1

• Cada ponto do papel também terá associado um valor correspondente a sua capacidade de armazenamento de água.

Aquarela• Movendo água pelo papel:

– A mascara de água delimita a região onde ocorre o fluxo da água

– Quando uma região tem seu limite de água ultrapassado ela é transbordada para as regiões vizinhas.

– A textura do papel influência nos fluxos de água.

– As mudanças locais de uma região devem ter influências globais no modelo.

Aquarela• Efeitos aplicados na aquarela :

– a) Drybrush :• Quando o pincel está quase seco ele pode ser aplicado de

forma a aplicar tinta somente nas áreas mais altas do papel deixando alguns espaços na pincelada.

– b) Escurecimento das bordas – “Edge Darkening”:• Quando a tinta é aplicada em um papel seco os pigmentos

tendem a migrar para as bordas. A água evaporada na borda é reposta pela água do interior. Este movimento leva os pigmentos para as bordas escurecendo-as.

– c) Backrun :• Quando uma quantidade de água é espalhada em uma região

ainda humida o pigmento é empurrado para fora daquela região.

Aquarela• Efeitos (cont.) :

– d) Granulação :• Quando o pigmento utilizado é granulado ele realça as

variações de altura do papel.

– e) Flow patterns : • Quando a tinta é aplicada em um papel molhado a superfície

permite que o pigmento se espalhe livremente.

– g) Color Glazing : • Várias pinceladas muito finas sobrepostas. Cada pincelada é

aplicada depois que a anterior tenha secado. Mistura ótica das cores ao invés de física.

Aquarela

• Original :

• Simulação :

Aquarela• Os pigmentos são criados utilizando um coeficiente de

absorção e um de espalhamento para cada componente RGB.

• Estes coeficientes são escolhidos pelo usuário especificando a aparência de um pigmento sobre uma região branca e uma região preta.

Aquarela

• “Automatic image watercolorization”

• Primeiro deve-se destacar os elementos mais importantes da imagem e escolher um pigmento para cada.

• A conversão é feita em duas etapas:– Color separation– Brushstroke planning

Aquarela• Color Separation:

– Algoritmo força-bruta para encontrar um nível de densidade para cada pigmento.

– Dado uma lista ordenada de n pigmentos, a espessura de cada pigmento é divida em m faixas.

– Cada combinação mn é guardada em uma árvore 3D de acordo com seus valores RGB.

– Para cada pixel a separação de cores é computada procurando na árvore o pigmento mais próximo da cor desejada.

– Estes pixels computados são guardado na imagem “target glaze”

Aquarela

• Brushstroke planning:– Controla o glaze acrescentando novas

pinceladas– Controla o fluxo da água aumentando ou

diminuindo a pressão da água aonde o pigmento foi adicionado

Aquarela

Aquarela

WYSIWYG NPR• Robert Kalnins, Lee Markosian, Barbara Meier,

Michael Kowalski, Joseph Lee, Philip Davidson, Mathew Webb, John Hughes, Adam Finkelstein – “WYSIWYG NPR: Drawing Strokes Directly on 3D Models” – SigGraph 2002

• WYSIWYG – What You See Is What You Get• Estilização automática de um modelo de uma

malha triangular a partir de alguns traços de exemplo

WYSIWYG NPR

WYSIWYG NPR

• Background– Pode escolher a cor ou uma imagem de fundo

• Base coat– Um sombreamento que desenha os triângulos

em um determinado estilo• “Toon shader”

• Solid Color

WYSIWYG NPR• Traços :

– O caminho do traçado é representado como uma spline CatmullRom.

– Renderizados como “triangle strips” que seguem o traçado.

– Como os triangles strips geralmente se misturam um pouco com a superfície não é utilizado o z-buffer.

– A visibilidade é computada utilizando um ID de referencia. Cada face da malha, silhueta e borda é renderizada utilizando uma cor única.

WYSIWYG NPR• Papel

– Utiliza os campos de altura da aquarela

• Simulação de efeitos do papel– Pode ser aplicado efeito

em qualquer primitiva semi-transparente : imagem de fundo, toon shader, ou traço.

– Aonde a altura do papel é maior o pigmento é absorvido mais facilmente

WYSIWYG NPR• Decal Strokes :

– Desenha-se diretamente na superfície do desenho.

– Representado como “Spline Curves” com os pontos de controle projetados na superfície e renderizados como os outros traços.

• Outra forma seria de realizar o texture mapping:– Problemas:

• Seria necessário parametrizar a superfície

• O tamanho do traço dependeria da obliqüidade da superfície

WYSIWYG NPR• As bordas do objeto podem ser redesenhadas a

partir de alguns traços de exemplo.• Uma lista é gerada com cada vértice do traçado e

um deslocamento perpendicular ao pixel gerado.• Os deslocamentos são reduzidos quando a imagem

é distanciada da câmera.

WYSIWYG NPR• Rubber-stamping : Um traçado exemplo é repetido pelo resto

da figura• Geração de novos traços sintetizados a partir de alguns

exemplos– O algoritmo de síntese utiliza uma cadeia de Markov

aonde cada estado corresponde a um deslocamento do traço exemplo

WYSIWYG NPR

• Silhueta, diferentemente das dobras de um objeto, são dependentes do ângulo de visão.

• Um traço padrão de silhueta é desenhado, quando uma aparece ele é usado para desenha-la.

• Utiliza o algoritmo de detecção de silhuetas em malhas de Hertzmann.

WYSIWYG NPR• Structured Hatching

– Sombreamento utilizando linhas paralelas

– O tamanho e quantidade de linhas varia com a distância do objeto da câmera

• Free Hatching– Como não existe padrão

no sombreamento é necessário que seja feito para várias distancias diferentes do objeto

WYSIWYG NPR

• Mobile Hatching– O sombreamento se move na figura de acordo

com a posição da luz– Utiliza-se um modelo de “luz escura” para

calcular o sombreamento.

Bibliografia• C. Curtis, S. Anderson, J. Seims, K. Fleischer, and D. Salesin, 1997.

Computer-generated watercolor. SigGraph 97.

• G. Winkenbach and D. Salesin, 1994. Computer generated pen-and-ink illustration. SigGraph 94.

• J. Lansdown and S. Schofield. Expressive rendering: A review of nonphotorealistic techniques. IEEE Computer Graphics and Applications, 15(3):29-37, Maio 1995.

• R. Kalnins, L. Markosian, B. Meier, M. Kowalski, J. Lee, P. Davidson, M. Webb, J. Hughes, A. Finkelstein. Wysiwyg npr: drawing strokes directly on 3D models. SigGraph 2002.

• A. Mohr, E. Bakke, A. Gardner, C. Herrman, S. Dutcher. NPRQuake, http://www.cs.wisc.edu/graphics/Gallery/NPRQuake/whatIsIt.html

FIM