NPR: Pen-and-Ink Helder Geovane Gomes de Lima [email protected] Artigo Original Computer-Generated Pen-and-Ink Ilustration ● ● ● Georges Winkenbach David H. Salesin SIGGHRAPH 1994 Introdução Por que usar ilustrações? ● ● ● ● ● ● Omitir detalhes Focar aspectos relevantes Simplificar as formas Evidenciar pequenos detalhes Economia de armazenamento Fácil reprodução Introdução ● ● Por que pen-and-Ink? – As convenções estão bem documentadas O que foi produzido? – Como implementar princípios desta técnica em um sistema automatizado Sobre pen-and-Ink... ● ● ● ● ● ● Cor/tom: não disponíveis Grandes áreas: demorado para preencher Clarear um tom: é quase impossível Para esboços: são ideais devido a expressividade de cada traço: – Pressão e regularidade Tom e textura: Expressos simultaneamente Em textos: Combinam muito bem Pen-and-Ink: Traços ● ● ● ● ● Traços finos: clareza Traços largos: pouco detalhe Posição da caneta: muda frequentemente, podendo girar Não-mecânicos: é bom variar espessura Ondulações: para um desenho esquemático ou apenas um rascunho Pen-and-Ink: Tons e texturas ● O tom: – – ● ● ● obtido com diversos traços razão entre tinta preta/papel branco Variação entre tons: é mais importante que a exatidão de um tom Forma dos traços: indica textura, geometria e a luminosidade Basta uma “indicação”: não se deve preencher toda uma superfície com o mesmo tom Pen-and-Ink: Contornos ● Não existem contornos em imagens reais! – ● ● ● Incluídos para indicar a forma, onde não houver textura, ou sua variação Basta “indicá-los”: assim como as texturas Contornos espessos: sombras e destaques Extremos: podem ser deslocados para não parecer mecânico Implementação ● Leva em conta a relação tom x textura: – – ● Renderização realística: coisas independentes NPR com Pen-and-Ink: dados simultaneamente Combina informações 2D e 3D: – O tamanho da área projetada: determina a densidade dos traços por textura – O contraste entre regiões adjacentes: influencia o traçado dos contornos Pipeline: parte típica ● ● ● ● Modelo: – Poligonal em 3d Textura: – Stroke Textures em lugar de imagens Visibilidade: – BSP Tree Sombras: – BSP Tree shadow volumes (Chin & Feiner) Pipeline: Novidades ● ● ● ● Sub-divisão espacial 2d das superfícies visíveis usando uma estrutura de halfedge Ao renderizar texturas é usado um tipo de hatching em lugar de scan converting O clipping é baseado em traços em vez de pixels, para evitar uma aparência mecânica Outlining: os contornos são colocados tanto na fronteira quanto no interior dos polígonos Uma breve descrição ● Cálculo de superfícies visíveis e sombras ● Projeção dos polígonos para NDC ● Geração de uma BSP tree 2D ● Renderização de cada superfície visível ● Associação das texturas procedurais com as superfícies (com o tom adequado) ● Clipping dos traços ● Contornos O algoritmo M: modelo (uma coleção de polígonos) ● BspTree: Representação dos polígonos projetados para NDC ● PlanarMap: Uma partição de NDC em vértices, arestas e faces procedure RenderScene(M): (BspTree, PlanarMap) <-- VisibleSurfaces(M) for each visible surface S in M do Strokes <-- Texture(S, Tone(S)) for each stroke s in Strokes do Render (ClippedStroke (s, BspTree)) end for Render(ConstructMinimalOutline(S, PlanarMap)) end procedure ● Stroke Textures ● ● ● ● Stroke texture: uma coleção de traços Traço S: definido por um caminho P(u) Forma da caneta: dada pela função N(p) Ondulação e pressão: indicados através de funções Cw(u) e Cp(u) Stroke Textures ● Uma lista de texturas é usada para obter os diferentes tons de uma textura Resolução ● ● Texturas dependem da resolução Consegue-se evitar situações como: “Engrossamento” das linhas “Excesso”de linhas Resolução ● Exemplo de textura dependente da resolução: Indicação é semi-automática Indicação é semi-automática Indicação é semi-automática Indicação ● A quantidade de textura em cada ponto, é determinada pelo campo: ● O campo é perturbado por um pequeno valor aleatório para não parecer muito regular Mais sobre o contorno... ● Cada stroke texture está associada com seu próprio estilo de contorno Mais sobre o contorno... ● Minimiza-se o uso de contornos ● São acentuados onde há relevos ou sombras ● Dependem da direção do observador Resultados ● Foi usado ThinkC em um Macintosh Quadra 700 ● A ilustração consiste de 1073 polígonos ● Foi computada e impressa em 30 min. – 22 min. foram gastos para obter o mapa planar – O restante foi gasto na renderização em 600dpi Resultados Perguntas?