Mapeamento de Texturas em Objetos 3D -...

10
Mapeamento de Texturas em Objetos 3D Jerson Seling Figura 1: Mapeamento de um cubo. Introdução Mapeamento de texturas é um método para adicionar detalhes, superfícies texturizadas ou cores a gráficos ou modelos 3D computacionalmente gerados. A aplicação dessa técnica foi pioneiramente usada por Edwin Catmull em sua tese de Ph. D. em 1974 (WIKIPEDIA, 2009). A técnica geralmente é utilizada para atribuir-se imagens de bitmap a objetos 3D. Figura 2: Modelo sem textura (1), modelo com textura (2). Essas imagens geralmente são usadas para colorir-se um objeto (Texture Mapping), porém pode-se usá-las para criar efeitos especiais como iluminação (Light Mapping), relevo (Bump e Normal Mapping) e reflexo (Cube e Spherical Mapping), entre outros. Em um objeto 3D comum, cada vértice tem uma coordenada XYZ, em um objeto 3D com coordenadas de mapeamento de textura, cada vértice terá além das coordenadas XYZ, as coordenadas UV ou UVW. UV Map e UVW Mapping As coordenadas UV se referem a uma coordenada cartesiana em uma imagem de bitmap. Assim como X é a horizontal no espaço 3D, U é a horizontal em uma imagem plana 2D, ou seja, um bitmap. Da mesma forma que Y é vertical, V também é. Figura 3: Coordenadas UV em uma superfície 3D No exemplo da figura 4, a esfera da direita teve suas coordenadas UV relacionadas as latitudes e as longitudes dos vértices do modelo 3D. Figura 4: Esfera sem e com mapeamento UV

Transcript of Mapeamento de Texturas em Objetos 3D -...

Page 1: Mapeamento de Texturas em Objetos 3D - jersonselingjersonseling.wikispaces.com/file/view/Mapeamento+de+Texturas+em... · 3D computacionalmente gerados. ... como usá-las no programa

Mapeamento de Texturas em Objetos 3D Jerson Seling

Figura 1: Mapeamento de um cubo.

Introdução Mapeamento de texturas é um método

para adicionar detalhes, superfícies texturizadas ou cores a gráficos ou modelos 3D computacionalmente gerados. A aplicação dessa técnica foi pioneiramente usada por Edwin Catmull em sua tese de Ph. D. em 1974 (WIKIPEDIA, 2009).

A técnica geralmente é utilizada para

atribuir-se imagens de bitmap a objetos 3D.

Figura 2: Modelo sem textura (1), modelo com

textura (2).

Essas imagens geralmente são usadas para colorir-se um objeto (Texture Mapping), porém pode-se usá-las para criar efeitos especiais como iluminação (Light Mapping), relevo (Bump e Normal Mapping) e reflexo (Cube e Spherical Mapping), entre outros.

Em um objeto 3D comum, cada vértice tem uma coordenada XYZ, em um objeto 3D com coordenadas de mapeamento de textura,

cada vértice terá além das coordenadas XYZ, as coordenadas UV ou UVW.

UV Map e UVW Mapping

As coordenadas UV se referem a uma coordenada cartesiana em uma imagem de bitmap. Assim como X é a horizontal no espaço 3D, U é a horizontal em uma imagem plana 2D, ou seja, um bitmap. Da mesma forma que Y é vertical, V também é.

Figura 3: Coordenadas UV em uma superfície 3D

No exemplo da figura 4, a esfera da direita teve suas coordenadas UV relacionadas as latitudes e as longitudes dos vértices do modelo 3D.

Figura 4: Esfera sem e com mapeamento UV

Page 2: Mapeamento de Texturas em Objetos 3D - jersonselingjersonseling.wikispaces.com/file/view/Mapeamento+de+Texturas+em... · 3D computacionalmente gerados. ... como usá-las no programa

2

Para se criar as coordenadas UV em um objeto 3D, usam-se projeções, o que será visto mais adiante. Porém em algumas ocasiões precisa-se usar coordenadas UVW. A maioria dos modeladores 3D que faz mapeamento de texturas, geralmente usa UVW e não UV, pois o UVW possibilita um maior controle sobre o posicionamento da textura. O W é análogo ao Z, ele é a dimensão da profundidade. Pode-se pensar que uma dimensão de profundidade em uma imagem 2D é inútil, porém isso é um engano, já que esse valor pode controlar a orientação da textura numa face. O UVW também é imprescindível no mapeamento de objetos complexos, como formas orgânicas, sólidos não-platônicos, primitivas não-geométricas e outros objetos de forma irregular. Pois ele permite que se faça o processo de unwrapping da malha 3D mais completo do que simples projeções.

Projeções As projeções são algoritmos que ordenam as coordenadas UV em relação aos polígonos 3D. Existem vários tipos de projeções, porém as mais conhecidas são: planar, cylindrical, spherical e box. A seguir uma breve descrição do funcionamento de cada uma dessas projeções e exemplos de como usá-las no programa 3DS Max. A projeção planar projeta o mapa de um simples plano contra o objeto 3D, como um projetor de slides. Este tipo é útil quando apenas um dos lados do objeto precisa ser mapeado.

Figura 5: Projeção planar

No 3DS Max é possível aplicarem-se projeções através do modifier UVW Mapping.

Figura 6: Modifier UVW Mapping

A projeção Planar é a primeira opção. Pelo uso dela obtêm-se resultados do tipo mostrado na figura abaixo.

Figura 7: Planar Mapping

Na caixa Alignment existem opções que alteram o gizmo de projeção, possibilitando que ele se alinhe aos eixos x, y ou z, como também redimensioná-lo em relação ao tamanho do objeto (Fit) e posicioná-lo no centro do objeto (Center), entre outras opções.

Page 3: Mapeamento de Texturas em Objetos 3D - jersonselingjersonseling.wikispaces.com/file/view/Mapeamento+de+Texturas+em... · 3D computacionalmente gerados. ... como usá-las no programa

3

A projeção cylindrical envolve o objeto 3D em um cilindro, projetando as coordenadas dessa forma. É comum também usar-se projeções planares na base e no topo do cilindro para “tampá-lo”. Este tipo de projeção é útil quando o objeto é semelhante a um cilindro.

Figura 8: Projeção cylindrical

No 3DS Max a segunda opção do modifier UVW Mapping é a Cylindrical.

Figura 9: Cylindrical Mapping

Essa opção tem a alternativa Cap, que faz o “tampamento” das extremidades do cilindro criando um efeito como o mostrado na figura abaixo.

Figura 10: Cylindrical Mapping com Cap

A projeção spherical projeta as coordenadas de forma esférica em volta do objeto. É útil quando o objeto assemelhasse a uma esfera.

Figura 11: Projeção spherical

Este tipo de projeção é a terceira opção do modifier UVW Mapping do 3DS Max.

Figura 12: Spherical Mapping

A projeção box projeta as coordenadas a partir dos seis lados de um cubo. Cada lado projeta um mapa planar, assim o efeito depende da forma do objeto.

Figura 13: Projeção box

Esta é a quinta opção do modifier UVW

Mapping.

Page 4: Mapeamento de Texturas em Objetos 3D - jersonselingjersonseling.wikispaces.com/file/view/Mapeamento+de+Texturas+em... · 3D computacionalmente gerados. ... como usá-las no programa

4

Figura 14: Box Mapping

É possível se alterar as dimensões do box, pois ele não precisa ser necessariamente um cubo, ele pode ser um paralelepípedo.

Unwrapping

O termo wrap não tem uma tradução perfeita, mas em linhas gerais ele significa enrolar, envolver, encobrir e embrulhar. Unwrap é o contrário, ou seja, desembrulhar, descobrir. É isso que se faz quando se deseja texturizar um objeto 3D. Quando faz-se uma projeção em um objeto 3D, obtêm-se um mapa de coordenadas UV ou UVW, esse mapa pode ser transformado em imagem e a partir desta pode-se desenhar e pintar uma textura. Normalmente a aplicação de uma única projeção em todo o modelo não é suficiente, por isso os programas que possibilitam fazer mapeamento de coordenadas permitem que se faça a aplicação de projeções em apenas partes do modelo, por exemplo, fazer uma projeção spherical na cabeça do personagem e uma cylindrical em um braço. Programas como o 3DS Max ainda permitem que o usuário movimente os vértices do mapa de coordenadas isoladamente, possibilitando que se faça o melhor unwrapping possível. No 3DS Max é o modifier Unwrap

UVW que possibilita esse tipo de mapeamento.

Figura 15: Modifier Unwrap UVW

Este modifier permite a edição UVW em três níveis: vértices (Vertex), arestas (Edge) e faces (Face). Ele pode criar projeções quando se usa um desses níveis, como por exemplo, Face e seleciona-se alguma parte do modelo 3D, assim algumas opções do menu Map Parameters se ativarão, e estas opções são os diferentes tipos de projeção vistas. Com uma dessas projeções ativadas, as outras opções do menu são ativadas também, elas fazem coisas como alinhamento do gizmo de projeção nos eixos x, y e z, melhor alinhamento (Best Align), redimensionamento do gizmo em relação ao objeto (Fit), alinhamento em relação a viewport (Align To

View), centralizar o gizmo (Center) e remover todas as alterações feitas nesse gizmo (Reset). No menu Pameters há o botão Edit..., é ele que mostra a janela Edit UVWs que permite a manipulação das coordenadas manualmente.

Page 5: Mapeamento de Texturas em Objetos 3D - jersonselingjersonseling.wikispaces.com/file/view/Mapeamento+de+Texturas+em... · 3D computacionalmente gerados. ... como usá-las no programa

5

Figura 16: Edit UVWs

Essa janela permite que se translade (Move), rotacione (Rotate), escale (Scale) e espelhe-se (Mirror e Flip) coordenadas UVWs ou conjuntos destas entre outras coisas. Há a também opção de renderizar uma imagem de bitmap com o mapa das coordenadas para servir como base para a pintura da textura, ela está no menu Tools, opção Render UVW

Template. Se alguma face, ou todas estiverem selecionadas, há as opções de unwrapping automático, elas estão no menu Mapping. A primeira, Flatten Mapping previne a sobreposição de faces, porém causa distorções na textura. O mapa de um teapot fica como o mostrado na figura abaixo.

Figura 17: Unwrap automático Flatten Mapping

O Normal Mapping é o método mais direto, pois ele aplica várias projeções planas de diferentes posições. Porém a textura resultante pode ter grandes distorções, tanto quanto o Flatten Mapping além de provocar sobreposições, no modo padrão o mapa de um teapot fica como mostrado na figura abaixo.

Figura 18: Unwrap automático Normal Mapping

A última opção é o Unfold Mapping, que não provoca distorções na textura, porém deixa as coordenadas sobrepostas. Este método é ótimo para quando se é necessário fazer o processo de unwrapping de apenas algumas faces. O mapa gerado por este método em um teapot, na sua configuração padrão é como o mostrado na figura abaixo.

Figura 19: Unwrap automático Unfold Mapping

Page 6: Mapeamento de Texturas em Objetos 3D - jersonselingjersonseling.wikispaces.com/file/view/Mapeamento+de+Texturas+em... · 3D computacionalmente gerados. ... como usá-las no programa

6

A melhor maneira de se dessobrepôr faces é selecioná-las como o Face Sub-Object

Mode em Selection Modes e a opção Select

Element marcada, assim pode-se selecionar conjuntos inteiros de faces interligadas automaticamente.

Figura 20: Selection Modes

O processo de unwrapping pode ser resumido nas figuras mostradas.

Figura 21: Modelo 3D a ser texturizado

Figura 22: Mapa UV criado

Figura 23: Textura feita com base no mapa UV

Figura 24: Modelo final

Texture Filtering

A maneira como os pixels (picture

elements) são calculados a partir dos texels (texture elements) é gerenciada pelo processo de texture filtering (filtramento de texturas). O método mais rápido de se usar é a nearest-

neighbour interpolation, que faz a interpolação entre os texels mais próximos. Mas os métodos bilinear interpolation ou trilinear interpolation entre mipmaps são mais usados por terem um resultado melhor, reduzindo problemas como aliasing de textura como visto na figura 13, embora precisem de mais GPU e memória.

Page 7: Mapeamento de Texturas em Objetos 3D - jersonselingjersonseling.wikispaces.com/file/view/Mapeamento+de+Texturas+em... · 3D computacionalmente gerados. ... como usá-las no programa

7

Figura 25: Texture Filtering Nearest

Figura 26: Texture Filtering Bilinear

O processo de texture filtering é útil em principalmente em jogos, pois permite que se use uma imagem de baixa resolução e mesmo assim obtêm-se bons resultados.

Mipmaps

Mipmaps são análogos a LODs (Level

of Detail) quando trata-se de modelos 3D, porém mipmaps são níveis de detalhes de texturas. Eles são uma sequência de texturas onde cada uma tem a resolução progressivamente menor que a antecessora. A largura e a altura de cada imagem, ou nível em um mipmap é uma potência de dois, menor que o nível antecessor. Mipmaps não precisam ser quadrados.

Figura 27: Mipmaps de uma imagem

Eles são a mesma textura, porém com resoluções diferentes. Essas texturas são então revezadas segundo a distância do objeto texturizado e o observador, assim as coisas que estão próximas usam texturas de alta resolução, coisas que estão longe, usam texturas de baixa resolução, economizando memória.

Multitexturização Um objeto 3D pode usar mais de uma textura ao mesmo tempo. Por exemplo, um objeto pode ter um Light Map para evitar que a iluminação seja recalculada a cada vez que a cena for renderizada. Outras técnicas de

Page 8: Mapeamento de Texturas em Objetos 3D - jersonselingjersonseling.wikispaces.com/file/view/Mapeamento+de+Texturas+em... · 3D computacionalmente gerados. ... como usá-las no programa

8

multitexturização são o Bump Map e o Normal

Map, que permitem que se controle diretamente a orientação das faces do objeto (normals) para propósitos de iluminação, dando a impressão que a superfície é mais detalhada do que realmente é, pois estas podem adicionar relevo a um simples polígono. O bump e o normal mapping se tornaram populares quando video games puderam usá-los no final de 2003.

Figura 28: Texture Map e Light Map

Figura 29: Normal Map

Figura 30: Esfera com Light, Texture e Normal Maps

Outros tipos de técnicas usados em multitexturização são as técnicas para representar reflexão, como uma alternativa a GPU usar algum algoritmo raytracer para

gerar mapas de reflexão reais, que são extremamente demorados, o que é inviável já que jogos que precisam que a cena seja renderizada em tempo real. As duas técnicas mais usadas para isso são o cube map (também chamado cubic map) e o spherical map. Eles usam uma imagem que representa um suposto ambiente ao qual refletirão, não precisando usar o ambiente real para criar o mapa de reflexão. Por isso é comum ver essas técnicas serem chamadas de Environment Maps, pois a projeção é estática em relação ao ambiente, ou seja, cada vez que o objeto se movimenta, a projeção é refeita, dando a ilusão de reflexão. O cube mapping necessita de 6 imagens para criar um cubo que envolve o objeto reflexivo ou apenas uma imagem unwrapped como a mostrada abaixo. Há ainda formatos de arquivo como DDS (DirectDraw

Surface) que podem armazenar as 6 imagens em um só arquivo, bem como vários níveis de mipmaps.

Figura 31: Um Cube Map

O cube mapping é bastante flexível, porém a manipulação dele no hardware é custosa.

Figura 32: Modelo com Cube Map

Page 9: Mapeamento de Texturas em Objetos 3D - jersonselingjersonseling.wikispaces.com/file/view/Mapeamento+de+Texturas+em... · 3D computacionalmente gerados. ... como usá-las no programa

9

No 3DS Max é possível se fazer a criação de Cube Maps ao se utilizar o mapa Reflect/Refract no canal Reflect de um material e então marcar como Source (fonte) a opção From File e então no menu Render Cubic Map

Files clica-se na opção To File para designar-se o prefixo do nome do arquivo das imagens, logo então clica-se em Pick Object and Render

Maps, clica-se no objeto que será a fonte dos mapas e o 3DS Max renderiza as 6 imagens.

Figura 33: Render Cubic Map Files

A opção de Source Automatic cria as imagens automaticamente, porém não é possível salvar as imagens geradas em arquivo. As imagens geradas por essa opção também podem ser atualizadas a cada frame, ou seja, para cada renderização, haverá outras 6, isso para permitir que as mudanças no cenário sejam visíveis na reflexão do objeto, como um espelho perfeito. Essa tecnologia de geração de cube maps dinâmicos também pode ser usada em jogos, porém ela é pouco usada por ser demasiadamente custosa para a GPU. A técnica spherical map é a técnica mais usada em jogos. Ela necessita de apenas uma imagem, geralmente esta tem uma aparência diferenciada (uma esfera) para que a reflexão seja bem feita. No 3DS Max essa técnica pode ser usada ao se atribuir um mapa de bitmap ao canal Reflect de um material.

Figura 34: Representação de um Spherical Map

Figura 35: Um Spherical map usado em jogos

Figura 36: Modelo sem Spherical map

Figura 37: Modelo com Spherical map

Page 10: Mapeamento de Texturas em Objetos 3D - jersonselingjersonseling.wikispaces.com/file/view/Mapeamento+de+Texturas+em... · 3D computacionalmente gerados. ... como usá-las no programa

10

Índice Introdução .......................................................1 UV Map e UVW Mapping..............................1 Projeções .........................................................2 Unwrapping ....................................................4 Texture Filtering .............................................6 Mipmaps..........................................................7 Multitexturização ............................................7

Referências Bibliográficas Sites: http://en.wikipedia.org/wiki/Texture_mapping http://en.wikipedia.org/wiki/UV_mapping http://en.wikipedia.org/wiki/UVW_mapping http://en.wikipedia.org/wiki/Normal_mapping Guias de Referências: DirectX Documentation For C++ 3ds Max Reference Documentation oFusion Pro for 3DStudio Max Artigos: Environment Mapping Livros: GPU GEMS 1 GPU GEMS 2 GPU GEMS 3 3D Game Engine Architecture 3D Game Programming All In One