Computação Gráfica::Exportando o seu Modelo para Unity3D

Importar um modelo animado em Blender em Unity3D é bem simples.
Vamos fornecer instruções passo-a-passo abaixo.

Criando um novo Projeto em Unity3D para Importar o Objeto em Blender

O video abaixo, da coleção Learn Blender (https://Blender101.com) feito por Darrin Lile, explica como fazer uma importação de um projeto animado em Blender. Assista ao Video:
 


Esse método de importação, apesar de supostamente usar a engine de conversão para .fbx do Blender de forma transparente, funciona mesmo entre sistemas operacionais diferentes.  No nosso exemplo, abaixo, estamos usando a animação do Pokèmon Heracross que fizemos no capítulo de importação de MoCaps e que foi produzida em Linux e a importamos em uma instância do Unity3D 5.5 rodando em Windows. Sem problemas:

importar-blender1

Atenção: Não vai funcionar igual para todos os sistemas operacionais. Abaixo alguns toques para cada ambiente:

Importando Blender para Unity3D em Windows

Pré-Requisitos:

  1. Blender v.2.78 ou posterior instalado normalmente no Windows. O Unity3D vai necessitar do conversor .blend -> .fbx do Blender pré-instalado. Importante: o Windows tem de conseguir achar o Blender. Teste isso digitando blender na barra de comandos do Windows e veja se ele acha o executável;
    importar-blender-windows1
  2. Unity3D v.5.5 ou posterior instalado.

Passos:

  1. Crie um novo projeto e dentro dele uma nova cena e a salve. Nós chamamos o nosso projeto de “Blender Import Test” e a cena de “Blender Scene.unity”.
  2. Arraste o arquivo .blend contendo o modelo animado em Blender para dentro dos Assets do Projeto. Unity vai criar uma nova pasta com os materiais do arquivo .blend e uma cópia do arquivo .blend. Se você clicar na flecha “>” no canto direito do ícone representando o arquivo .blend você verá as componentes dele, como mostra a imagem acima.
  3. Abra o inspetor em cima do .blend e vá para a aba Rig. Lá voce tem de converter a animação de uma genérica para uma humanoide. Depois de selecionar Humanoid, clique em Configure e espere. Tem que aparecer um sinal de “OK” do lado do botão configure como mostra a figura acima. Se tiver dúvidas até aqui, reassista o vídeo acima.
  4. Tome o personagem em Blender importado e arraste-o para a centa. Vai ficar como na imagem abaixo

importar-blender2

Importando Blender para Unity3D em Linux

Pré-Requisitos:

  1. Blender v.2.78 ou posterior instalado normalmente no Linux. O Unity3D vai necessitar do conversor .blend -> .fbx do Blender pré-instalado. Importante: o Linux tem de conseguir achar o Blender. Teste isso digitando which blender em uma janela de comandos do Linux e veja se ele acha o executável;
    blender-import-l01
  2. Unity3D v.5.5 ou posterior instalado.

Passos:

  1. Crie um novo projeto e dentro dele uma nova cena e a salve. Nós chamamos o nosso projeto de “New Unity Project” e a cena de “PokemonAnimadoLinux.unity”.
  2. Conversão: Arrastar o arquivo .blend contendo o modelo animado em Blender para dentro dos Assets do projeto não funcionou nos testes que fizemos em Linux. O que fizemos:
    1. Saia do Unity salvando o projeto;
    2. Copie manualmente o arquivo .blend para dentro do diretório Assets do seu projeto Unity;
    3. Inicie novamente o Unity e abra o projeto;
    4. Unity vai automaticamente achar o novo arquivo .blend no meio dos Assets do projeto, vai converter tudo (abre uma janela de diálogo mandando esperar a conversão) e criar uma nova pasta com os materiais do arquivo .blend. Se você clicar na flecha “>” no canto direito do ícone representando o arquivo .blend você verá as componentes dele.
  3. Abra o inspetor em cima do .blend e vá para a aba Rig. Lá voce tem de converter a animação de uma genérica para uma humanoide. Depois de selecionar Humanoid, clique em Configure e espere. Tem que aparecer um sinal de “OK” do lado do botão configure como mostra a figura acima. Se tiver dúvidas até aqui, reassista o vídeo acima.
  4. Tome o personagem em Blender importado e arraste-o para a centa. Vai ficar como na imagem abaixo:

blender-import-l02

Usando as Animações do Boneco Importado em Unity3D

Vamos agora ver como usar as animações que importamos. Se você clicar em uma delas em Assets, vai ver que não acontece nada como o personagem. Para que ele se mexa, você tem de criar um Controller que associe as animações com o personagem. Para isso vamos fazer o seguinte:

  1. Vá para a cena e clique no personagem para selecioná-lo;
  2. Va para a aba Inspect e veja o painel Animatior:  no mome do controlador de animação está escrito None (Runtime Animator Controller). Ainda não há nenhum controlador associado a este personagem.
    blender-import-l03
  3. Crie um novo controlador de animação e associe-o ao seu personagem: No painel dos Assets, crie um animador com um clique com o botão direito do mouse [BDM] -> Create -> Animator Controller.  Vai ser criado um ícone representando um grafo nos Assets. Renomeie-o para PlayerController.
  4. Clique de volta no seu personagem e arraste o ícone do PlayerController para dentro da caixinha do controlador de animação onde está escrito None (Runtime Animator Controller). Vai aparecer agora o nome do PlayerController:
    blender-import-l04Agora você está pronto para editar código do PlayerController. Isso pode ser feito com o editor visual do Unity3D;
  5. O controlador de animação é uma máquina de estados. Para editar visualmente o PlayerController, dê um clique duplo no ícone do seu controlador de animação e a aba Animator do editor gráfico da máquina de estados do animador vai abir em cima do seu novo controlador (ainda vazio) mostrando os três estados básicos da máquina de estados padrão de animação do Unity: Any StateEntry e Exit
  6. Arraste o ícone da animação Idle que você criou para o seu boneco para lá. Você vai ver que ela vai automaticamente conectar ao estado Entry:
    blender-import-l05
  7. Agora é só ir de volta para a cena e dar um Play:
    blender-import-l06
  8. Você pode também editar o controlador e colocar a sequencia longa com tudo inclusive a cambalhota lá:
    blender-import-l07

Próximos Passos: Importar as Texturas do Boneco

A rotina de importação Blender -> Unity3D não importa automaticamente as texturas dos objetos em Blender. Isso tem de ser feito à mão. Agora você pode importar essas texturas ou então pintar o seu boneco manualmente. O video Blender Character to Unity 01 da coleção Learn Blender (https://Blender101.com) feito por Darrin Lile, mostrado acima, explica isso na sua parte final.

Inicialmente, volte ao Blender e olhe as texturas do seu boneco, abrindo o editor de texturas, o editor chamado UV Image Editor:

heracross-texturas02

No caso da nossa Pokèmon Collection, as texturas estão em uma pasta Textures dentro da pasta de cada Pokèmon. Você vai ter de copiá-las manualmente dalí para a pasta Assets do seu Projeto Unity3D. Se você tem dúvidas de como trabalhar com texturas, revise o nosso tutorial Computação Gráfica::Aplicando Texturas em Blender.

Veja abaixo o resultado quando usamos Unity3D com o nosso Pikachu Animado:

Pikachu-Textura-Unity01

O Heracross dos exemplos de animação acima tem alguns problemas de modelagem e conexão, que ficam óbvios quando você tentar colocar as texturas nele:

Heracross-Textura-Unity02

Ao usar um modelo achado na Internet para animá-lo no Blender e depois importar para uma aplicação em Unity3D, sugerimos sempre:

  1. Carregar primeiro no Unity3D para ver se as texturas estão em ordem e identificar onde estão possíveis problemas;
  2. Ao associar com uma esqueleto e uma animação e realizar os consertos de conexão, caso sejam necessários, levar em conta os problemas de textura que identificar.

Lembre-se que, se você apagar vértices, as texturas não vão mais “saber” como se mapear no objeto.

 

 

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.