2017-03-21 2 views
0

Je suis très nouveau à PyMel (Done Python avant) et j'ai trouvé la documentation disponible très compliquée, et en étant simplement toujours MEL et pas Python. Très frustrant de faire quoi que ce soit ici.PyMel Maya Python - Set Joint emplacement

Je cherche un moyen de définir l'emplacement absolu d'une de mes articulations, ainsi que l'orientation de son os.

Le joint que je veux manipuler se trouve ainsi:

theJoint = ls("LeftArm")[0] 

Maintenant, en utilisant

theJoint.setAngleX(45) 

Je suis en mesure de mettre sa rotation par rapport au parent. Mais ce que je dois faire est de définir la position dans les coordonnées absolues de l'espace mondial, ainsi que la rotation.

Il n'existe aucune méthode setPositionX() ou setTransform(X) pour moi d'utiliser, donc je me demande si je suis même au bon endroit.

Comment je m'acquitte de cette tâche, et plus important encore: Où commencerais-je réellement à chercher des bibliothèques de commandes correctes et utiles? C'est très frustrant de le faire sans avoir à travailler sur des exemples ou de petites démos en se basant toujours sur l'objet sélectionné par le contexte, ce que je ne peux pas faire.

Répondre

1

Lorsque vous définissez l'attribut en utilisant pymels attribut objets (syntaxt comme mynode.rotate.set() vous chiffres piquer directement dans les attributs, mais les chiffres ne sont que des chiffres, se aval interpreteed comme si vous les aviez tapé dans la zone de canal

.

Vous pouvez utiliser les versions de Pymel des commandes xform, move et rotate pour définir des valeurs absolues, de la même manière que dans les docs Maya ordinaires, par exemple, pour faire pivoter Joint2 à 0,0,10 dans espace mondial, indépendamment de ce que fait le parent:

import pymel.core as pm 
example = pm.PyNode('joint2') 
pm.rotate(example, [0,0,10], a=True, ws=True) 

Le drapeau a est 'absolu' et le ws est 'worldspace' (docs here pour la rotation). move et xform ont également des options pour les valeurs absolues et l'espace virtuel. Donc, pour positionner un joint en WorldSpace ce serait

pm.move(example, [1,2,3], a=True, ws=True) 

xform est un peu plus complexe et a plus d'options, mais fait les mêmes choses aussi bien que vous permettant de définir des pivots.