2017-08-31 4 views
0

J'utilise Python et Maya 2015, et j'étais curieux de savoir comment enregistrer dynamiquement les transformations d'un objet pendant qu'un utilisateur est en train de draguer le widget de transformation Maya. Je suis également curieux de savoir comment, lors de l'utilisation d'un script, un utilisateur pourrait lancer le widget de transformation, puis le script enregistrerait les transformations d'entrée de l'utilisateur pour un objet et utiliserait ces nombres dans d'autres zones du script. Merci.Enregistrement de données de transformation dynamique d'entrée utilisateur sur un objet dans Maya en utilisant Python

Répondre

0

Il n'y a pas un moyen facile de le faire. Vous pouvez cependant truquer avec la commande draggerContext pas très bien documentée. Fondamentalement, vous souhaitez créer un draggerContext et le rendre actif à l'aide setToolTo

import maya.cmds as cmds 

def on_drag(): 
    # handler for the drag action 
    dragPosition = cmds.draggerContext('dragger', q=True, dragPoint=True) 
    button = cmds.draggerContext('dragger', q=True, button=True) 
    modifier = cmds.draggerContext('dragger', q=True, modifier=True) 

    # print out the values... 
    print dragPosition, button, modifier 
    message = str(dragPosition[0]) + ", " + str(dragPosition[1]) 
    cmds.draggerContext('dragger', edit=True, drawString=message) 

# Define draggerContext with press and drag procedures 
cmds.draggerContext('dragger', dragCommand=on_drag, cursor='hand'); 

cmds.setToolTo('dragger') 

Dans cette version, vous souhaitez remplacer l'impression avec le code pour déplacer l'objet sélectionné et enregistrer la position. draggerContext a des options pour vous permettre d'obtenir la projection correcte de l'emplacement du curseur dans 3-espace, mais vous devrez faire un effort pour vous assurer que le comportement correspond à ce que vous voulez.

+0

Merci beaucoup, je vais expérimenter avec cela. Très sympa. – winteralfs

+0

Si vous le trouvez utile, vous devez marquer la réponse comme acceptée pour les personnes qui la rencontrent à l'avenir – theodox