python有用嗎,python運用maya_Maya中Python腳本的使用(一)

 2023-10-08 阅读 30 评论 0

摘要:一、Maya中使用Python的基礎知識。 Maya支持在任何使用MEL命令的地方使用Python樣式的腳本。通過Python腳本可以訪問所有的內置Maya命令(如sphere、Is等)。 在Maya程序里調用Python和調用MEL有很多不同之處,因為它們二者的語言編寫方式存在著很大不同。下面就來介紹在M

一、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,如下圖(右)所示。

1566466862741527512.png

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命令為例來指定時間范圍和索引范圍。

15664669221420924846.png

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模塊中,后綴類型變化的簡單對照。

15664669711240931522.png

15664669902149116437.png

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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/129282.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息