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