2017-10-07 10 views
1

Je suis un novice du blender et j'ai utilisé le script suivant pour exporter tous les poids blendshape par image d'un objet dans un fichier texte - chaque nouvelle ligne apporte un cadre dans la séquence d'animation. Comme vous pouvez le voir, c'est très facile dans Blender mais maintenant j'essaye de faire la même chose avec Maya. Auparavant, j'ai essayé de ramener le modèle 3D dans différents formats; DAE et FBX (essayé ascii et bin et différentes versions d'années) mais Blender ne les importera pas (recevoir de nombreuses erreurs à chaque fois).Écrire des poids blendshape pour un objet par image en maya dans un fichier texte

Donc, fondamentalement, ce que je demande est de savoir comment faire la même chose dans maya via python ou MEL? J'ai vérifié l'api de constructeur de mouvement mais n'ai aucune idée par où commencer.

Bravo à l'avance.

Editer: D'accord, je l'ai compris. Étonnamment tout aussi facile une fois que vous maîtrisez la cmds lib.

import maya.cmds as cmds 

filepath = "blendshape_tracks.txt" 
file = open(filepath, "w") 
startFrame = cmds.playbackOptions(query=True,ast=True) 
endFrame = cmds.playbackOptions(query=True,aet=True) 

for i in range(int(startFrame), int(endFrame)): 
    vals = "" 
    cmds.currentTime(int(i), update=True) 

    weights = cmds.blendShape('blendshapeName',query=True,w=True) 

    vals = "" 
    for w in weights: 
     v = str(round(w, 8)) + " " 
     vals += v  
    vals = vals[0:-2] 
    file.write(vals + "\n") 

Répondre

0

Répondre à sa propre question.

import maya.cmds as cmds 

filepath = "blendshape_tracks.txt" 
file = open(filepath, "w") 
startFrame = cmds.playbackOptions(query=True,ast=True) 
endFrame = cmds.playbackOptions(query=True,aet=True) 

for i in range(int(startFrame), int(endFrame)): 
    vals = "" 
    cmds.currentTime(int(i), update=True) 

    weights = cmds.blendShape('blendshapeName',query=True,w=True) 

    vals = "" 
    for w in weights: 
     v = str(round(w, 8)) + " " 
     vals += v  
    vals = vals[0:-2] 
    file.write(vals + "\n")