2016-10-06 5 views
1

Ich versuche, das ausgewählte Objekt Pivot in die Mitte der Objekte ausgewählten Eckpunkte zu verschieben.Maya Python - Set Objekt Pivot zu Auswahl-Center

Wenn ich den Code ausführen, erhalte ich keine Fehler und fast alles funktioniert wie beabsichtigt, aber der Drehpunkt von (Obj) mein ausgewähltes Objekt scheint nicht auf die Locator XForm (PIV) gesetzt.

import maya.cmds as cmds 

sel = cmds.ls(sl=True) 
print sel 
obj = cmds.ls(*sel, o=True) 
print obj 

selVerts = cmds.ls(sl=True) 
tempClstr = cmds.cluster() 
pos = cmds.xform(tempClstr[1], q=True, ws=True, rp=True) 
loc = cmds.spaceLocator() 
cmds.move(pos[0], pos[1], pos[2]) 
cmds.delete(tempClstr) 

piv = cmds.xform (loc[1], piv=True, q=True, ws=True) 
print piv 
cmds.xform(obj, ws=True, piv=(piv[0], piv[1], piv[2])) 

Benötigen Sie Hilfe auf dieser schnell. Alle zusätzlichen Augen, die erkennen können, was ich vermisse, würden sehr geschätzt werden.

Antwort

2

Ich denke, das Hauptproblem war, dass, wenn Sie obj = cmds.ls(*sel, o=True) verwendeten, es nur den Formknoten des Objekts erfasste anstatt seiner Transformation. Sie können cmds.listRelatives verwenden, um die Transformation der Form zu erhalten. Sie müssen den Locator auch nicht erstellen, da der Cluster Ihnen bereits die Position angibt.

Dies scheint für mich zu arbeiten, obwohl Sie möglicherweise einige zusätzliche Fehlerprüfung für den Auswahlbereich betrachten möchten, da es viel annimmt.

import maya.cmds as cmds 

sel = cmds.ls(sl=True) 
shapes = cmds.ls(sel, o=True) 
obj = cmds.listRelatives(shapes[0], f=True, parent=True)[0] 

selVerts = cmds.ls(sl=True) 
tempClstr = cmds.cluster() 
piv = cmds.xform(tempClstr[1], q=True, ws=True, rp=True) 
cmds.delete(tempClstr) 

cmds.xform(obj, ws=True, piv=(piv[0], piv[1], piv[2]))