25 August 2012

dpUnityExport


[EN] Hi all. After set a lot of attributes and do this many times at the same way..., I decided write a simple Python script in order to help export animations from Maya to Unity3D! Thanks to my teachers Joé Bissonnette, Olivier McClish and Étienne Dubois. Now, I am releasing it freely to help you too, if you need to simplify your pipeline.
To install it, you just need download this file here, put the extracted file in the folder like: C:/ Program Files / Autodesk / Maya2012 / Python / lib / site-packages / on Windows or Users / yourUserName / Library / Preferences / Autodesk / maya / 2012-x64 / scripts / on Mac. Then, call the script using the code below as Python in the scriptEditor on Maya. You will get the UI and there are some information to set up as Naming (character and animation), Folder (to export), etc.
The main idea for this script is: save a new scene to "_bake", import references, bake joint animation using the timeline, set some scale attributes, delete unnecessary nodes keeping the hierarchy and export as FBX file. It will create a FBX with a good name like:
 characterName + @ + animationName.
We also need the FBX of the Tpose in the same folder in order to Unity identify easily the animations. See the image below as an example. I hope you like it!


[FR] Bonjour. Après configurer plusieurs atribues plusieurs fois de la même manière..., j'ai décidé écrire un script simple en Python pour aider à exporter des animations du Maya pour l'Unity3D! Merci aux mes profs Joé Bissonnette, Olivier McClish et Étienne Dubois. Maintenant, je le publique gratuitement pour vous aider aussi si vous avez besoin de simplifier votre pipeline.
Pour l'installer, il faut faire le téléchargement de ce fichier la, mettre son contenu « extracté » dans le dossier comme C:/ Program Files / Autodesk / Maya2012 / Python / lib / site-packages / pour le Windows ou Users / yourUserName / Library / Preferences / Autodesk / maya / 2012-x64 / scripts / pour le Mac. Depuis, appeler le script en utilisant le code en Python dessous dans le scriptEditor dans le Maya. Vous allez avoir l’UI et il y a quelques informations comme Nom (personnage et animation), Dossier (pour l’exporter), etc.
L'idée principale du script est: enregistrer une nouvelle scène "_bake", importer les références, baker les animations des joints en utilisant la timeline, configurer quelques attribues de scale, effacer des nodes qui ne sont pas nécessaires et exporter comme un fichier FBX. Il va créer un fichier FBX avec un bon nom comme:
nomDuPersonnage + @ + nomDeLAnimation.
Aussi, nous avons besoin d'avoir le FBX de la poseT dans le même dossier pour aider l'Unity à trouver facilement les animations. Voir l'image en bas comme un exemple. J'espère que vous aimez.


[PT] Olá pessoal. Depois de configurar varios atributos varias vezes do mesmo modo…, decidi escrever um simples script em Python para ajudar a exportar animações do Maya para o Unity3D! Obrigado aos meus professores Joé Bissonnette, Olivier McClish e Étienne Dubois. Agora, estou publicando-o gratuitamente pra ajuda-los a simplificar sua pipeline.
Para instala-lo, baixe o arquivo aqui, coloque o conteudo extraido no diretorio como : C:/ Program Files / Autodesk / Maya2012 / Python / lib / site-packages / no Windows ou Users / yourUserName / Library / Preferences / Autodesk / maya / 2012-x64 / scripts / no Mac. Então, chame o script usando o codigo em Python abaixo no scriptEditor no Maya. Surgirá a UI e terão algumas informações como Nome (personagem e animação), Pasta (para exportar), etc.
A ideia principal do script é: salva uma nova cena « _bake », importa as referencias, bake as animações de joints usando a timeline, configure alguns atributos de escala, apaga alguns nodes desnecessarios e exporta como arquivo FBX. Ele vai criar um arquivo FBX com um bom nome, tipo :
nomeDoPersonagem + @ + nomeDaAnimacao.
Precisa tambem do arquivo FBX da poseT no mesmo diretorio para que o Unity encontre facilmente as animações. Veja a imagem abaixo como exemplo. Espero que gostem.



# Folder:



# Code:
import maya.cmds as cmds
import dpUnityExport as dpUE
reload(dpUE)
dpUE.UI()

2 comments:

Roger Santos said...

Muito bom Danilo, eu mexo com Unity... foi um achadasso!! rs

Helber Soares said...

Nossa! Legal demais brother. Deu até vontade de me envolver mais com o Unity. Obrigado por disponibilizar.