mercredi 13 juin 2012

pyton pymel cacheFile

yo,

La prod du labo (canal+) fut la première expérience a supinfocom où nous avons utilisé le couple maya max. Maya pour l'anim et max modé et rendu. 
Maya ne gérant pas ça, j'ai du faire un petit outil d'export de point cache par lot.



Apprenant au fur et a mesure j'ai commencé par utiliser la pré fonction mel:
   
doCreateGeometryCache 6 {  0 , $valueStart, $valueEnd, 
"OneFilePerFrame", "1", $path,"0",$name,"0", "add", "0", "1", "1","0","1",
"mcc","0" } ;

Les arguments: {
    (0 custom start/end, 1 render globals, 2 timeline),
    (start value),
    (end value),
    (type d'enregistrement "OneFilePerFrame", "OneFile"),
    (0/1 refresh caching), (chemin d'enregistrement),
    (0/1 appliqué le cache a chaque mesh),
    (le nom du cache file),
    (0/1 utilisé le nom comme prefix),
    (le type d'action: "add", "merge", "mergeDelete", "replace"),
    (0/1 forcer l’écriture du fichier),
    (0/1 force une simulation si presente),
    (simulation rate),
    (sample mulitplier),
    (0/1 double float),
    (nom du format),
    (0/1 local ou world space),
}


Puis je suis passé au pymel et j'ai compris le gain de performance par rapport au mel (peut etre x10 dans ce cas la).
La fonction utilisé est celle ci:

   
pm.cacheFile(f = 'nomDuFichier', fm='OneFile', st=startFrame, 
et=endFrame, points=geometryObj, dir=dirPath)
Les arguments presenté ici sont le minimun pour  un export de cache mais en lisant l'aide on comprend qu'on peut arriver a beaucoup de choses.
Le gain de temps est flagrant, de plus mieux adapté pour de l'export pour un logiciel autre que maya puis qu'il load pas les caches sur la geometry a la différence du mel.

Petit tips sur le quel je me suis pris pas mal la tete, sur une list (ls) de type 'mesh' comment ne pas lister les "deformShape" ou les "origShape" ... (les nodes de shapes utilisé pour les blendshapes, skin ...)
Enfet ce type de node s'appelle des nodes intermédiaires et il existe un flag dans le 'ls' qui est 'ni' (non intermediate).

 
slCache = pm.ls("*_m_*", ni = True, type ='mesh')


Petit exemple d'utilisation:


cache files tool maya from colin laubry on Vimeo.





Aucun commentaire:

Enregistrer un commentaire