Python For Maya學習筆記1

2021-09-05 12:17:59 字數 1489 閱讀 5715

-**python for maya artist friendly programming

#from maya import cmds

import maya.cmds as cmds

#變數selection為選擇的物體。

selection = cmds.ls(selection=true)

#如果沒有選擇,則變數selection顯示dag物體的完整路徑名。

if len(selection) == 0:

selection = cmds.ls(dag=true, long=true)

#selection列表進行由長到短排序

selection.sort(key=len, reverse=true)

#用for迴圈一行行列出所選的列表中的內容(unicode 字串)

#然後把字串通過split函式進行拆分,然後索引取最後一位。

for obj in selection:

shortname = obj.split('|')[-1]

#因為maya模型是由shape節點和transform節點組成

#選擇模型時,只選中的是transform節點,子項中的shape節點沒選中,這裡就涉及到了子項的選擇。

#通過listrelatives命令得到變數obj中帶完整路徑的子項。

#maya中骨骼和組是沒有子項的,會返回none。所以後面有加了個空列表,獲取空。

children = cmds.listrelatives(obj,children=true, fullpath=true) or

#如果子項有內容,則得到子類的型別。如果沒有則得到變數obj的型別

#因為obj是列出了所有大綱中的內容,所以不會漏掉。

#注意這裡,children是列表,child為unicode字串。具體不清楚為啥要有轉換?

#這裡有個bug,如果組裡面有(joint)其它東西,則不能正確顯示組的型別。

if len(children) == 1:

child = children[0]

objtype = cmds.objecttype(child)

else:

objtype = cmds.objecttype(obj)

#如果obj的型別為***則suffix(字首)為***。

if objtype == 'mesh':

suffix = 'geo'

elif objtype == 'joint':

suffix = 'jnt'

elif objtype == 'camera':

print 'skipping camera'

continue

else:

suffix ='grp'

newname = shortname + '_' + suffix

#改名字

cmds.rename(obj, newname)

學習學習再學習

如果乙個技能足夠複雜 比如從零學程式設計 那就不要指望讀完一本書就可以打天下。多買幾本書同類的書 因為每個作者的出發點是不一樣的,哪怕對同乙個概念都有不同的解釋說明。理解知識的重要過程之一就如牛的反芻一樣,要嚼一遍 嚥下去 再吐出來 再嚼一遍 再嚥下去 所以,既然一本書可以讀幾遍,那麼同一話題多應該...

學習 學習 再學習

原本要使用vs2005開發乙個b s專案的,沒有想到只能先暫時停停了,居然跟不上技術的發展了,呵呵,一直使用delphi delphi也沒能跟上 沒有想到轉到vs2005上竟然有這麼多要學的東西,當然目的是了做乙個好的系統。最近一直在學習asp.net ajax,雖然專案停了,但是我覺得值得,有很多...

只是學習 學習 再學習

通過做 讓我學會了很多東西 什麼 flash div css html js as 雖然都只是皮毛 不過 算是了解那麼一點點吧 哈哈 我還突然發現 我的 數學和英語 進步了不少 而且還都是很實用的 比在學校的進步可快多了 那句話說的很不錯 在你了解了一些皮毛之後你會發現很多東西你都必須去學。因為少一...