Exportando modelos do Blender para a Unreal Engine 4
Há alguns anos atrás, quando eu estava fazendo minha própria engine de jogo 3D, acabei utilizando o Blender para a criação dos meus modelos. Na época, o blender 2.4 me era bem estranho, já que minha primeira experiência com programas de modelagem foi o 3D Studio Max, e apanhei um pouco dele inicialmente, mas como eu não tinha condições para comprar o 3DS, o jeito foi aprender o Blender. Até que comecei a utilizar ele bem, mesmo ainda não muito confiante, mas depois de ter criado um plugin para exportar os modelos no formato que eu utilizava na minha engine comecei a apreciá-lo mais.
Passado alguns anos, e voltando a necessidade de criar modelos para jogos, primeiro fiz uma avaliação de qual ferramenta me daria segurança de trabalhar com rapidez, e depois de testar as versões mais recentes de Maia e 3DSMax, fiquei surpreso ao ficar mais a vontade com o Blender. A interface está bem mais amigável, clara, e surpreendentemente trabalho com ele muito mais rápido do que com os concorrentes. Com a vantagem de ser gratuito, acabei optando por ele de novo.
Infelizmente, a Unreal Engine 4 trabalha apenas com o formato .fbx, e tem plugins que facilitam muito a integração da engine com Maia e 3DSMax. Então, para utilizar o Blender, alguns cuidados devem ser tomados para que a engine importe os modelos criados nele sem problemas.
Criando o arquivo inicial padrão
Para facilitar o trabalho e não precisar ficar ajustando tudo toda vez que criar um novo arquivo, a melhor opção é modificar o arquivo de inicialização do Blender com as configurações que usaremos em todos os modelos.
Abrindo o Blender e criando um novo arquivo, a primeira coisa que gosto de fazer é apagar todos os objetos padrões (a câmera, o cubo e a luz direcional) que existem no arquivo inicial do Blender.
Depois precisamos ajustar as unidades de coordenadas. A UE4 utiliza centímetros como unidade padrão. Alguns preferem fazer a conversão de unidades no momento de exportar os modelos, mas acho assim mais burocrático. Para fazer o ajuste, é só ir na guia "Scene" e selecionar o preset "Centimeters" na área "Units" e pronto.
A última coisa a se fazer é criar um preset de exportação para os modelos que devemos exportar no formato FBX. Usando os ajustes padrão do exportador, mudo as seguintes opções:
- Na aba Main:
- Selected Objects marcado;
- Forward: para -Y;
- Up: para Z;
- E logo abaixo, deixo marcado apenas objetos do tipo Empty, Armature, Mesh e Other;
- Na aba Geometries:
- Use Modifiers Render Settings desmarcado;
- Smoothing em Faces;
- Finalmente, na aba Armature:
- Desmarque Add Leaf Bones;
- Primary Bone Axis para X Axis;
- Secondary Bone Axis para -Y Axis;
O resto não precisa ser alterado.
O motivo para a mudança dos eixos na aba Armature é para que os eixos dos ossos do esqueleto estejam alinhados com o padrão de socket da engine, que utiliza o eixo X positivo como "para frente" e o eixo Z positivo como "para cima". Assim, você pode atrelar objetos nos esqueletos diretamente, sem se preocupar em criar sockets e depois ajustar sua rotação.
Terminado os ajustes, é só utilizar o comando Ctrl+U, ou no menu Arquivo, Save Startup File. Costumo também gravar este arquivo como backup em um local de fácil acesso caso tenha que reconfigurar o Blender por algum motivo.
Cuidados ao exportar os modelos
Primeiramente, verifique com o modificador Triangulate se todas as faces de seu modelo estão sendo transformadas em triângulos de forma satisfatória. Às vezes algumas faces podem não ter vértices coplanares, fazendo com que o modelo, ao ser importado na UE4, tenha erros ao transformar estas faces em triângulos. Mas a triangulação pode fazer com que apareçam outros erros, principalmente no cálculo de tangentes, quando estas dependem do fato da superfície ser composta por mais de três vértices. Uma solução seria fazer a triangulação manualmente, ou utilizar o comando de fazer as faces serem coplanares no menu Cleanup.
Outro cuidado é com a intenção de uso do modelo na engine. Modelos de projéteis e outros objetos que serão usados diretamente com o uso do eixo X da UE4 como orientação devem ser rotacionados para terem o eixo X positivo como "frente". Apesar da própria UE4 ter a capacidade de fazer essa rotação durante a importação do modelo, ela não lida bem com isso no caso do modelo conter uma animação de esqueleto.
Ajustes para importação dos modelos na UE4
Geralmente a única opção que deve ser ajustada é a importação de normais e tangentes. Tanto Blender como a UE4 usam o mesmo espaço de tangente, MikkTSpace. Por causa disso, para manter a aparência do modelo o mais próximo possível do que é mostrado dentro do Blender, o melhor é importar tanto as normais quanto as tangentes calculadas na exportação do arquivo FBX, principalmente para modelos com esqueletos, já que do contrário a UE4 não é capaz de manter os grupos de suavização do modelo.
Plugins do Blender recomendados
- https://github.com/ekaj2/uvmap_tools - Ferramentas para manipular a lista de mapas de UV.
- https://github.com/fedackb/yavne - Um add-on para manualmente calcular as normais dos modelos de baixa ou média complexidade geométrica. Excelente para modelos mecânicos, podendo criar cantos com aparência arredondadas com apenas uma face.
- https://github.com/amb/blender-scripts/blob/master/mesh_curves.py - Ferramenta que gera informações sobre curvatura e codifica nos canais de cor de vértice. Ótimo para criar materiais que usam dessa informação para definir efeitos, oclusão ambiente baseada em vértices, etc.