Computação Gráfica::Aplicando Texturas em Blender

 

Este tutorial é voltado a Blender 2.69 até 2.78 para Linux - algumas interfaces diferem entre as versões

Desembrulhando um Objeto

O que é Unwrapping?

Desembrulhar um objeto, designado em Blender como UV Unwrapping, é criar uma representação planar deste objeto, com ele todo aberto, cada plano/faceta que representa uma superfício inserida em um plano bidimensional (plano u,v – porisso o nome UV Unwrapping). Imagine um cubo ou dinossauro de papel, daqueles de montar que vem em revistas como a Revista Recreio, quando ele está ainda na revista e tem de ser recortado, ele está desembrulhado, todo aberto em um único plano (a folha de papel de onde você vai recortá-lo). Abaixo um exemplo do site Pinterest:

dinossauro-de-papel

Blender possui um modo de visulaização de desembrulhamento: é neste modo que vamos trabalhar texturas que vamos aplicar aos nosso objetos.

Indo para Modo de Desembrulhamento

Abra o Blender e vá para o modo de visualização 3 viewports que você configurou no nosso tutorial de navegação do Blender:

blender004

Ignore o menu à esquerda ao alto, era para um exemplo no tutorial de navegação. Deixe o cubo padrão lá. Vamos trabalhar com ele, é mais fácil que usar a nossa casa do exemplo de construção. Talvez seja interessante apenas aumentar o seu tamanho. Faça isso:

  1. escalonando-o em torno da origem de um fator de escala 3: [S][3][enter] e
  2. alinhando sua base novamente com a origem levando-o para cima de 3 unidades. Lembre que o eixo vertical é Z em Blender e que a translação em Blender é chamada grab: [G][Z][3][enter].

Agora você vai ter um cubo grande pousado sobre a origem sendo mostrado em todas as 3 viewports:

blender84

Estamos prontos para começar a aprender a usar texturas.

Desembrulhando um Objeto do Jeito mais Simples

A teoria do desembrulhamento (unwrapping) nós já mencionamos acima, usando um dinossauro de papel para ter certeza que você entendeu. Se você não leu, sugerimos que vá para lá ler.  Agora nśo vamos aprender aas finezas de desembrulhar.

Vá para a viewport superior direita e selecione o editor chamado UV Image Editor. Vai ter de aparecer um editor simples, com um quadrado reticulado sem nada em cima:

blender85

Agora clique com o botão esquerdo do mouse na viewport da esquerda para selecioná-la. Antes de mais nada, vá para o modo de edição selecionando edit mode no menu ao pé da viewport ou teclando [tab]. Em seguida tecle [A] para selecionar todo o cubo (não adianta clicar com o botão direito do mouse nele).

Em seguida vá para o menu Mesh que apareceu embaixo (antes de você ter selecionado partes do objeto Cubo que eram meshes ele não existia – é sensível a contexto, como muitos menus e interfaces de Blender), abra-o e selecione  o submenu UV Unwrap e, neste submenu, a opção Unwrap.  Agora vão aparecer um monte de quadrados empilhados um em cima do outro na viewport superior direita: são os meshes que compõem o cubo. Como você mandou desempacotar sem nenhuma heurística (Unwrap simples), ele simplesmente empilhou os meshes lá:

blender86

Você pode também desempacotar se, depois de selecionar tudo com [A], você digitar [U] e selecionar Unwrap do submenu flutuante que vai aparecer.

Para ter certeza de que são vários meshes, você pode selecionar algum vértice com o botão direito do mouse e arrastar: você vai ver que deforma um meshe mas não os  outros:

bad_unwrap1

Não dê [enter] e nem clique com o botão esquerdo do mouse na viewport se você fez esse experimento, você não vai querer meshes deformados. Tecle [esc] para anular a deformação.

Essa forma de desempacotar não é uma boa ideia. Vamos testar outra, abrindo o objeto nas costuras (seams).

Desembrulhar abrindo o objeto nas costuras

Para isso:

  1. Mude do modo de seleção/edição de vértices padrão do Blender para o modo de edição de arestas, selecionando o ícone central do menu de três ícones na barra inferior;
  2. depois abra o menu Mesh novamente e selecione Mesh -> Edges -> Mark seams para explicitar as costuras do do cubo:

blender87

Toque: Uma explicação mais detalhada, com mais opções e uma justificativa com exemplos para o que vamos ensinar a seguir, você vai achar no Tutorial de Unwrapping/Textura dos Thilakanatha Studios – http://thilakanathanstudios.com/2015/10/blender-uv-mapping-complete-beginner-tutorial/

3. Gire o seu cubo até estar vendo-o de baixo. Para isso coloque o cubo em visão de topo com [Num 7] e depois vá girando com [Num 8] ou [Num 2].

4. Selecione agora apenas a face inferior. Você pode fazer isso facilmente primeiro des-slecionando o cubo com [A] e depois clicando com  [Shift] + botão direito do mouse em cada uma das arestas inferiores, pois você está em modo de edição de arestas (icone central dos três modos de edição, lembra?).

blender88

5. Desconecte as costuras representadas por estas arestas, indo para Mesh -> Edge -> Clear seam, como mostra a figura abaixo, ou simplesmente [E] e Clear seam no menu flutuante que aparecer. Estas arestas vão mudar de cor como mostra a figura abaixo:

blender89

6. Agora volte a olhar o cubo de cima e selecione uma aresta qualquer com o botão direito do mouse (sem [Shift] – você não quer selecionar de novo as inferiores), apagando-a também com Mesh -> Edge -> Clear seam.

blender891

7. Agora, por fim, selecione o objeto de novo com [A] e desembrulhe novamente: [U] -> Unwrap. No editor de desempacotamento vai aparecer o cubo desembrulhado bonitinho como você espera que um cubo pareça:

blender892

Você está pronto para criar um shader baseado em textura e espalhá-lo sobre o objeto desempacotado.

Criando um Shader baseado em Textura

Finalmente vamos para a parte emocionante…

Começe abrindo o Node Editor na viewport inferior direita:

blender893

Node Editor do Blender é similar ao editor do Unreal Engine 4 que você já viu na disciplina: permite definir estruturas de dados e relacionamentos/agregações entre objetos de forma gráfica.

Aprendendo a Usar o Node Editor: Criando um Shader Simples

Os exemplos desta seção ṕossuem capturas de tela de Blender 2.69. Para a versão 2.78 a aparência dos nodos mudou.
O exemplo no seu computador pode ter uma aparência diferente.

Criando um Nodo para O Shader

Crie um novo nodo para shader clicando no ícone do Shader, como mostra a flecha.

  1. Se não aparecer nenhum shader padrão, crie um clicando no [+].  Caso aparecer algum, simplesmente selecione-o;
  2. Selecione a opção “Usar Nodos” no ícone circulado que mostra duas caixinhas ligadas. Vai aparecer uma eswtrutura de nodos simples no Editor de Nodos:

blender894

Dê um zoom in (com a roda do mouse ou no menu View) para enxergar melhor. Vamos agora precisar colocar um shader dentro desse seu nodo que ainda não save fazer nenhum tipo de shading. Para isso vamos inicialmente escolher cores simples. Crie um novo shader no botão marcado:

blender895

Crie um Shader para a sua Cor

Vai aparecer um shader com todas as cores brancas. Clique agora na cor difusa e vamos configurá-la, lembrando de deixar o cubo  todo selecionado com [A] (clique na viewport do cubo para selecioná-lo, em eseguida clique de volta na viewport de nodos):

blender897

Vai abri a interface de seleção de cor difusa. Escolha algo do seu agrado, estamos só treinando. Quanod estiver satisfeito com a cor, clique do lado de fora do seeltor de cores::

blender898

Pronto. Para atribuir a cor ao objeto selecionado, não esqueça de selecionar o objeto todo com [A] e de dar Assign (marcado. no painel à direita):

blender899

Pinte outras Partes do Objeto com Outras Cores

Vamos agora criar mais cores para pintar partes específicas do seu Cubo. Daremos cores diferentes a duas faces do Cubo. Comece selecionando apenas uma face do Cubo da forma como deve ser feito, selecionando primeiro o modo de seleção de faces no Editor 3D e depois selecionando uma face inteira, clicando nela com o botão direito do mouse.

Você deve ter observado que, quando apenas uma face está selecionada, o Editor UV mostra apenas esta face.

Agora crie mais um novo nodo tipo shader, clicando em [+] na lista de nodos de shader e repita os passos anteriores, criando uma nova cor para este shader com [+] no nodo e dando uma nova cor a ele. Que tal verde abacate para contrastar com o vinho que havíamos escolhido antes?

blender901

Aplicando a nova Cor a apenas uma Face

Se você seguiu todas as instruções anteriores, agora você está com apenas uma face selecionada e um novo shader selecionado em sua lista de nodos.  Para deixar esta face verde, clique em Assign (marcado. no painel à direita):

blender902

Vamos ver como ficou com uma renderização a sério? Mude do modo 3D para o modo de renderização no menu inferior da viewport 3D:

blender903

Ficou ruim, não? Se você rodar, vai ver que só há uma face iluminada, o resto está preto.  É que a luz padrão do Blender é bem direcional e nós também esquecemos de uma coisa importante: a terceira componente, de luz ambiente! Por default em Blender ela sempre é setada para zero em um novo material que você cria. Temos de mudar isso.

Selecione a o material de cor vinho. Para deixar o seu painel mais enxuto, retraia as abas de luz difusa e de luz especular. Vamos nos concentrar na aba de luz ambiente, marcada com uma flecha no desenho acima.  Ela é chamada de Shading e a componente de luz ambiente é chamada de luz emissiva (Emit).

Vamos dar agora um valor de 0,2 para a luz ambiente tanto da cor vinho quanto da cor abacate. Deve ficar como abaixo:

blender904

Ficou melhor, não?

Só para ver como ficaria se não tivéssemos nem luz difusa e nem luz especular, clique a caixinha Shadeless em ambos os materiais (vinho e abacate), como marcado abaixo. Vai ficar sem sombra e sem nuances de luz como abaixo, pois todas as faces serão consideradas emissivas:

blender905

Que tal treinar isso agora recolorindo a sua Casa Simples feita no Tutorial de Criação de um Objeto Arquitetônico Simples em Blender?

Modificando a Iluminação

Ao invés de adicionar componentes emissivas (de ambiente) à sua cor, você pode também alterar a forma como blender ilumina um objeto. No exemplo abaixo mudamos a fonte de luz de lugar, levando-a mais para o canto do cubo e mais para longe, de forma que ela pudesse iluminar mais e modificamos características dela, como, por exemplo, a intensidade, que foi triplicada no exemplo abaixo:

blender906

Para fazer isto, selecione a fonte de luz no painel da hierarquia de objetos da cena, mude para modo de visualização de sólidos para poder enxergar onde está o objeto fonte e luz e vá para a visualização do plano de topo [Num 7]:

blender907

Vendo onde está a fonte de luz (será o ponto marcado na cena com um sistema de coordenadas), você pode arrastá-la pelos eixos ou com grab [G] até uma posição melhor. Experimente também modificar o tipo de comportamento de atenuação da luz: por default Blender usa atenuação pelo inverso do quadrado da distância (o modelo padrão em Física). Você pode mudar para diversos modelos adaptativos ou para atenuação pelo inverso da distância linear, uma atenuação muito mais suave, modificando o parâmetro na caixinha com o menu que mostramos aberto na figura. Experimente!

Veja aqui alguns tutoriais que ensinam como trabalhar com Shaders e versões mais novas do Blender:

Aplicando uma Textura

Observe que todas estas suas brincadeiras com shaders de cor simples não afetaram a visão UV do objeto desembrulhado. Ela somente será afetada quando passarmso a usar uma textura. Agora é o momento.

Forma mais simples: sem usar Nodos

Existe uma forma muito simples de aplicar uma textura em um objeto desempacotado: basta caregá-la enquanto ele estiver selecionado, desde que tenha sido desempacotado antes.

Para demosntrar isso vamos primeiro pegar uma textura qualquer. Por exemplo, uma foto de uma parede de tijolos. Selecione todo o objeto com [A].  Carregue a textura para dentro do UV Editor no menu Image -> Load Image. A textura vai automaticamente ser adaptada debaixo do objeto desempacotado:

blender908

Agora vá para a viewport 3D e selecione o mode de renderização de textura, como mostra a figura abaixo:

blender909a

Pronto! Se você olhar a hierarquia de objetos da cena, no painel à direita, vai ver que o cubo possui dois atributos:

  • um material que é o Shader que você fez há pouco e
  • outro material que é a textura que você acabou de carregar.

Outro jeito simples: Fazendo carregar a Textura para cada Face

A invés de desembrulhar de forma complicada, se para a textura que você está usando tanto faz, v,Você pode também fazer a textura aprecer como está abaixo (exemplo em Blender 2.78).:

blender 912

Para isso você só necessita selecionar o objeto [A] e desfazer todas as costuras com Mesh -> Edges -> Clear seam:

blender911

…antes de aplicar um desembrulhamento simples com Mesh -> UV Unwrap -> Unwrap:

blender 910

Você vai ver que Blender empilha todas as faces uma em cima da outra no UV Editor e cada face vai receber a mesma cópia da textura. Aí é só carregar a textura para um shader padrão, como fizemos acima.

Toque: Se você vai executra o exemplo aqui para treinar, carregue um cubo novo para não estragar o desembrulhamento bonito que fizemos acima.

Fazendo do Jeito Certo: Aplicar Nodo de Textura no Objeto Desembrulhado

O arquivo deste exemplo está aqui.
  1. Carregue ou crie o seu Sólido;
  2. Desembrulhe o Sólido como mostramos acima;
  3. Crie uma Textura;
  4. Selecione o Objeto;
  5. Crie um novo Material no Editor de Nodos;
  6. Adicione a textura ao material no Editor de Nodos;
  7. Aplique transformações  (rotação, escalonamento) na visão do sólido no Editor UV até a textura ficar no tamanho e orientação que você deseja

Deve ficar assim ao final:

blender 930

Observe que neste exemplo escalonei o UV Map 2x e o rotacionei de 90º de forma a que os tijolos estejam do jeito que eu quero. Se você não usar um UV Map para a texturização, não vai conseguir fazer isso.

Links Úteis

Material em Forma de Texto

Livros sobre Blender Online

Páginas de Manual

Tutoriais em Texto

Vídeos

Sobre o Autor

possui graduação em Ciências da Computação pela Universidade Federal de Santa Catarina (1989) e Doutorado Acadêmico (Dr. rer.nat.) em Ciências da Computação pela Universidade de Kaiserslautern (1996). Atualmente é professor Titular da Universidade Federal de Santa Catarina, onde é professor do Programa de Pós-graduação em Ciência da Computação e dos cursos de graduação em Ciências da Computação e Sistemas de Informação. Tem experiência nas áreas de Informática em Saúde, Processamento e Análise de Imagens e Engenharia Biomédica, com ênfase em Telemedicina, Telerradiologia, Sistemas de Auxílio ao Diagnóstico por Imagem e Processamento de Imagens Médicas, com foco nos seguintes temas: analise inteligente de imagens, DICOM, CBIR, informática médica, visão computacional e PACS. Coordena o Instituto Nacional de Ciência e Tecnologia para Convergência Digital - INCoD. Foi o criador e primeiro Coordenador do Núcleo de Telessaúde de Santa Catarina no âmbito do Programa Telessaúde Brasil do Ministério da Saúde e da OPAS - Organização Pan-Americana de Saúde e criador do Núcleo Santa Catarina da RUTE - Rede Universitária de Telemedicina.