簡體   English   中英

Maya Python-將對象樞軸設置到選擇中心

[英]Maya Python - Set object pivot to selection center

我正在嘗試將所選對象的軸樞軸移動到所選對象的頂點的中心。

當我運行代碼時,我沒有收到任何錯誤,並且幾乎所有工作都按預期進行,但是(obj)我選擇的對象的樞軸似乎沒有將自身設置為定位器xform(piv)。

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]) )

在這方面需要一些幫助。 可以發現我所缺少的任何額外的眼睛將不勝感激。

我認為主要問題是,當您使用obj = cmds.ls(*sel, o=True) ,它僅捕獲對象的形狀節點,而不是其變換。 您可以使用cmds.listRelatives來獲取形狀的變換。 您也不需要創建定位器,因為集群已經為您提供了位置。

這似乎對我有用,盡管您可能要考慮選擇部分的一些其他錯誤檢查,因為它假設很多。

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]) )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM