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