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
0
A
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.
Merci beaucoup, je vais expérimenter avec cela. Très sympa. – winteralfs
Si vous le trouvez utile, vous devez marquer la réponse comme acceptée pour les personnes qui la rencontrent à l'avenir – theodox