Chameleon - Adaptative Unwrapping for Interactive Texture Painting
Transcrição
Chameleon - Adaptative Unwrapping for Interactive Texture Painting
Adaptative Unwrapping for Interactive Texture Painting Takeo Igarashi & Dennis Cosgrove Joana Torturella Valadão COPPE COPPE // Sistemas Sistemas Objetivo • Apresentar um método para gerar dinamicamente uma textura bitmap eficiente e seu UV-mapping associado em um sistema de pintura de modelos 3D interativo. • Protótipo Motivação • Dificuldades do modo tradicional de se trabalhar com textura em 3D → Determinação manual da textura (UV-mapping) e aplicação da textura 2D na geometria 3D → Mapeamentos pré-definidos X figuras genéricas → Acerto de inúmeros parâmetros para que a textura seja melhor aplicada ao modelo 3D → Dificuldade de se acrescentar detalhes específicos na superfície → Dificuldade de utilização por usuários inexperientes Considerações sobre a Técnica Proposta • Unwrapping dinâmico • Textura associada a cada ação de pintura • Vantagens → Brush Strokes sem distorção → Textura resultante é compacta e robusta → Alocação dinâmica ⇒ Multiresolução Trabalhos Anteriores • C. Bennis, et. al.: Piecewise surface flattening for nondistorted texture mapping • J. Maillot, et. al.: Interactive texture mapping • M. Conway, et. al.: Alice: Lessons Learned from Building a 3D System for Novices • T. Igarashi, et.al.: Teddy: A Sketching Interface for 3D Freeform Design • V.J. Milenkovic: Rotational polygon containment and minimum enclosure • H. Hoppe, et. al.: Lapped Texture Trabalhos Anteriores • • • • AMAZON 3D Paint Deep Paint 3D (Texture Weapons) Painter 3D P. Heckbert: Survey of Texture Mapping O Protótipo Chameleon • Funciona como um sistema padrão de pintura 3D, exceto por não necessitar de um UV-mapping pré-determinado, facilitando o uso por usuários inexperientes. O Protótipo Chameleon • Funcionalidades: → Movendo o modelo → Zoom e Textura → Rotação → Pintando → Mudando o pincel e a cor → Os Botões Implementação ¾Painting Strokes • Idéia central: UV-mapping dinâmico • A pintura realizada com o pincel é feita em 2D. Ao rotacionar o objeto, é feita uma projeção da pintura no modelo 3D • A projeção: → Identificação dos polígonos → Nova textura e pintura → Atualização coordenadas → Associação da textura Implementação • Projeção (continuação): → Operações pixel a pixel não são necessárias → Modo “Laser” - Textura frente e verso - Problema - Solução: uma textura para cada lado - Escolha: textura única para gastar menos espaço Implementação ¾ Exibindo para o usuário (Feedback for incoming strokes): → Primeira solução: pintar em 2D sobre modelo 3D - Não foi bem aceito pelos ususários → Solução implementada - Criação de um arquivo de textura temporário - Associação temporária de todos os polígonos com a textura temporária, incluindo as coordenadas UV Implementação ¾Exibindo para o usuário (continuação): • Realiza a pintura (2D) nesta textura temporária • Quando se inicia a rotação, a textura temporária, juntamente com as coordenadas UV temporárias, são descartadas • Problema: pintura de áreas escondidas → Solução: geração de múltiplas cópias temporárias do bitmap texture, e atribuição de cada cópia a uma parte separada das fronteiras Implementação ¾ Armazenando (Packing): • Geração de um bitmap de todas as texturas geradas • Problema: arrumar os pedaços da textura (patches) de forma a ocupar o mínimo possível de espaço • Implementação: Patches Resultados