一、Maya中使用Python的基礎知識。
Maya支持在任何使用MEL命令的地方使用Python樣式的腳本。通過Python腳本可以訪問所有的內置Maya命令(如sphere、Is等)。
在Maya程序里調用Python和調用MEL有很多不同之處,因為它們二者的語言編寫方式存在著很大不同。下面就來介紹在Maya里使用Python的-些基礎知識。
1.1在Maya里輸入Phthon命令
以下是在Maya里調用Python命令的幾種方法。
python有用嗎、01腳本編輯器。
為了方便同時在Maya中使用MEL和Python腳本,腳本編輯器中有MEL和Python的不同編譯器。只要進入MEL編譯器,就直接把命令發送到MEL處理器;同樣,進入Python編譯器,就直接啟用Python處理器執行命令。
在返回Python結果前面使用注釋#字符來標識。在腳本編輯器中,可以使用自動拼寫功能來幫助查找指令。
02命令框與工具架。
當希望執行一個指令的時候,可以通過單擊命令框的后綴來選擇進入MEL還是Python指令,如下圖(左)所示。
如果要把命令放入工具架,那么可以使用鼠標中鍵拖動MEL腳本或Python腳本,將其移動至工具架上,此時系統會彈-一個對話框,提示保存腳本類型是MEL還是Python,如下圖(右)所示。
python爬蟲。03 Maya的Python模塊。
Python的指令大部分已經綁定在本機的Maya命令中,比如Cmds模塊。為了訪問這些命令,
必須進入下面的Python編澤器進行腳本編輯:
import maya.cmds
這是允許用戶使用的Maya命令。
例如:
python怎么做、maya.cmds.Is()
maya. cmds. sphere( radius=4)
當然也可以把模塊用更簡短的形式導入Maya,
例如:
import maya.cmds as cmd
cmad.sphere()
maya教程?導入maya.cmds后,自動保存在userSetup.py文件中,用戶可以按自己喜歡來修改它的名
字,例如下面的例子:
import maya.cmds as mc mc. sphere()
或者把Maya命令導入并作為頂層指令使用:
from maya.cmds import
之后就可以直接調用Maya命令:
python和java?Is() sphere( radius=4 )
把Maya命令導入并作為頂層指令使用會覆蓋掉Python內置和其他模塊。
1.2 后綴(命令格式)
Python后綴處理方式和在MEL后綴處理方式也有很大不同。MEL被設計成Shell命令方式的語法。在Python中 的Maya命令的格式語法已經完全符合了Python的執行方式。
01 簡單的后綴。
MEL中創建球體命令如下:
python 類。sphere -radius 4;
在Python中,半徑后綴被改寫,而這更像是數據傳遞:
maya.cmds.sphere( radius=4 )
02 多組數據。
如果一個后綴多個數據的話,那么必須把數據轉化成表或數組。下面是一個后綴中有3個數據的例子:
#元組:
qpython?maya.cmds.ambientLight( rgb=( 0.2, 0.3, 0.4))
#列表:
maya.cmds.ambientLight( rgb=[0.2, 0.3, 0.4])
03 判定格式(真/假)。
一般的命名后綴必須賦于相關的數值,但是Maya的后綴并不都需要數值,例如Is-sl, 為了保持相同的語法,在Maya中的Python規定要求給不帶數值的后綴賦于布爾真假值( True/False )。如果布爾值為假,那么后綴就為空;如果其值為真,則后綴需要被執行。例如:
#列出選擇 :
maya渲染、maya.cmds.Is( selection=True )
#不列出選擇:
maya.cmds.Is( selection=False )
04 命名多個后綴。
有些后綴使用時需要多個后綴在同一條命令中。例如在MEL中的定義:
Is -type nurbsSurface -type transform;
python maya、Python需要使用已經定義過格式類型的后綴,并賦于其列表或數組變量:
maya.cmds.Is( type=["nurbsSurface' 'transform'] )
在上面例子中,后綴帶有多個值,并且被多次使用,它的值是列表或數組。數組可以代替列表,這樣可以使用由數組組成的列表、列表組成的數組或數組組成的數組。例如,在MEL中的curveOnSurface命令:
curveOnSurface -d3 -uv 00 -uv 0.30.5 -uv 0.5 0.6-uv 0.9 1.0 surface1;
在Python中:
maya cmds.curveOnSuriace( 'surface1',d=3,uv=[(0,0).(0.3,0.5),(0.5,0.6),(0.9, 1,0)])
python和maya的聯系、如果過多地使用后綴,Python則會返回一個重復關鍵后綴的錯誤。
05 范圍。
Maya命令中有3種類型的范圍:時間、索引和浮點。在Python中必 須使用元組指定所有范圍。任意元組都可能有一一個或兩個值。具有一個值的元組指定為一個值(加括號并后跟逗號) ;多個單值元組使用集表示法指定。
時間范圍也支持單位。若要指定單位,必須使用字符串。由于每個值是單獨解析的,因此可以混合使用單位。
以下是有效的時間范圍:
(1,)(1,10) ("1sec',' 10sec") ("1min:2min')
python腳本編寫?下表以cutKey命令為例來指定時間范圍和索引范圍。
06 對Maya某些命令標志的更改。
對Maya命令所做的某些標志更改是必需的,因為Python中的多用途標志的參數必須以列表傳遞給標志。對于其中必須混合并匹配多用途標志的命令而言,這將導致出現問題。由于Python每個多用途標志的參數均以單獨的列表提供,因此無法將這些參數混合使用。已擴展依賴于此的幾個命令,以便單個多用途標志可以處理各個多用途標志的作業。
這些命令包括:
●polyAppendVertex :可用于取代point、vertex和hole標志 的新append標志。
●polyAppend :可用于取代point、edge和hole標志 的新append標志。
python編譯環境有哪些、●polySplit :可以用于取代facepoint和edgepoint標志的新insertpoint標志。
●polyCreateFacet:經過修改后可用于指定洞的現有point標志。
●roundConstantRadius :可替換使用應該混合使用的sidea和sid b的新side標志。
CommandsPython參考文檔中記錄了所有這些標志的使用。
在所有情況下,這些標志都是向后兼容的。所有舊標志仍保留在原位。
1.3 參數和對象
python制作3d游戲、除了標志,Maya命令還使用參數和對象。參數是命令所需的固定類型的值。例如,move命令使用3個參數表示移動的X、Y和Z值。對象是命令在其上操作的實體(例如,場景中的某個對象或UI元素)。基于當前的選擇列表,一個命令針對的對象數量是變化的,并且有時對象是隱式的。
對象和參數將如同在MEL中一樣傳遞給命令,但傳遞的順序必須如下所示:
command arguments object flags/named arguments
這不同于MEL, MEL中的排序要求對象顯示在參數列表結尾處。但是,Python要求命名參數顯示在所有其他參數之后。
1.4 后綴類型對照表
下表為在Maya Python模塊中,后綴類型變化的簡單對照。
maya腳本編輯器怎么打開、1.5 標準輸入( stdin )實現
Python支持從STDIN (標準輸入)進行讀取。在Python中, 這是通過從sys.stdin進行讀取或調用raw_ input來實現的。
Maya會使用其自身的實現來覆蓋sys stdin。如果要使用Python自身的標準輸入對象,可通過引用sys._ stdin__ 來實現此目的。
示例:
在Script Editor (腳本編輯器)中輸入以下內容之一來顯示Python STDIN對話框:
●使用raw input
python for maya,raw_ input()
●使用sys.stdin
import sys
inp = sys. stdin.eadline()
●自定義命令提示
import maya.cmds as cmds
inp = cmds.promptDialog(message= hello')
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态