maya官方手冊_python指令查詢

閱讀時間約 4 分鐘

如何使用maya官方手冊中的python指令手冊?

剛進入一個新軟體或領域,最痛苦的莫過於找資料,有時更是連資料都不知道怎麼找,該如何下關鍵字?搜尋方向是否正確?
這篇主要分享一些我學習maya的python的過程中累積的經驗,方便看到這篇文章的讀者能更快進入狀況。
首先maya的python庫有分成兩種類型,一種是maya原生的maya.cmds,另一種則是後來加入的pymel。現在的pymel也已經得到官方的維護,兩種在執行速度上也無太大差異,pymel似乎有整合一些OpenMaya的功能,但就初學來說基本沒差異。目前我個人是推薦使用pymel,github上查到的程式碼也有很大一部分使用pymel,如果真的很在乎執行速度的話,只能從更複雜的OpenMaya下手。
再來需要注意的是,maya從2022版本開始內建的python解釋器版本為python 3.7,不再支援2.7的寫法(用python 2執行有機會再說),如果在網路上查資料時要稍微注意一下自己的maya版本是否相符。
首先要面對的就是官方手冊,進到這裡,會一次列出所有python的指令,配合網頁瀏覽器使用ctrl+F搜尋較為方便,再來就要先了解一下maya指令的基礎結構,先來看一個函式。
import pymel.core as pm

obj_pos = pm.getAttr("pCube1.translate")
print(obj_pos)

>>> [0.0, 0.0, 0.0]
getAttr算是最常使用的函式之一,用於取得物件上的屬性的值,該範例內表示取得cube1的translate屬性,也就是座標值,返回包含xyz值的list。
跟其他python庫不同的是,在maya內的各種python指令操作,目標對象幾乎都以字串的形式作為參數輸入,且會用「.」作為階層表示,鮮少有其他資料類型當作參數輸入(即使有,也常常是list裡包裹字串)。
然後在輸入參數後加入各種flags來改變函式返回的值,例如下列:
import pymel.core as pm

obj_pos = pm.getAttr("pCube1.translate",lock=True)
print(obj_pos)

>>> False
加入lock標誌後,返回的值變成布林值,表示該屬性是否處於鎖定的狀態。另外還有許多函式可以使用edit與query標誌,表示該函式用於查詢還是編輯。
知道基礎的結構後,就可以針對問題查找關鍵字,當然能熟悉一下maya的軟體使用以及一些3D的基礎概念是最好的。
現在假設一個問題,先以最單純的情況練習,如果使用者已經手動選到某一個頂點,我該怎麼取得該頂點的世界座標之xyz值?
目標是頂點,關鍵字也許能從point或vertex下手,嘗試用point搜尋後你會看到一個函式名稱叫做pointPosition,他可以返回任何點的座標位置,包含曲線或locator等等。
官方文件解說
從範例及說明中可以得知,第一個參數需要一個對象,也就是頂點的名稱字串,並且可使用標誌來決定要返回本地座標還是世界座標。以下列程式碼為例,可得到該頂點的世界座標。
import pymel.core as pm

vtx_pos = pm.pointPosition("pCube1.vtx[5]",w=True)

print(vtx_pos)

>>> [0.5, 0.5, -0.5]
這大約就是maya的python函式操作邏輯,其他功能只要了解相關詞彙就能找到關鍵的函式,例如權重類常用到skin,動畫類可能用到ani,多邊形可能用到poly之類的。
甚麼?你不知道當個美術學這個幹麻?
假設你從討厭的同事接手模型,卻發現模型沒有對稱,但同事死賴帳不認.正當你準備吵架大戰一觸即發時,你就可以把頂點座標截圖貼在工作群組裡打臉對方並說"數學可以還我清白!"
截圖maya腳本編輯器畫面以示清白!
在美術團隊裡當唯一一個會使用腳本編輯器的人,超酷的好嗎。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Sigen Chang的沙龍 的其他內容
如果是對maya有興趣,為了控制maya而學習python的人,初入maya的python世界應該會一頭撞上這道牆。 初學python的人應該也跟我一樣,會知道python有一大堆酷炫的第三方函式庫可以用,使用一段時間後自然而然就會習慣這些函式庫的使用方式,許多函式庫設計得非常智慧非常易用。
如果是對maya有興趣,為了控制maya而學習python的人,初入maya的python世界應該會一頭撞上這道牆。 初學python的人應該也跟我一樣,會知道python有一大堆酷炫的第三方函式庫可以用,使用一段時間後自然而然就會習慣這些函式庫的使用方式,許多函式庫設計得非常智慧非常易用。
你可能也想看
Google News 追蹤
Thumbnail
在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
Python的模組和庫是可重用的程式碼塊,可透過import語句引入。特定部分可以透過from和import引入,並可使用as指定別名。第三方模組可透過pip工具安裝並在程式碼中使用。此外,也可以創建自定義模組並在其他Python文件中引用。
Thumbnail
在Python中,我們可以用def關鍵字定義函數,並透過函數名稱呼叫它。函數參數可以是必填、關鍵字、默認或不定長度的類型。return語句負責結束函數並回傳值。全域變數可以在整個程序中使用,而區域變數只能在特定函數內使用。我們還可以在一個文件中定義函數,然後在另一個文件中呼叫它。
NumPy(Numeric Python)是Python中用於科學計算的核心庫之一。它提供了高性能的多維陣列對象(即ndarray)以及用於處理這些陣列的各種函數和工具。 在NumPy中,有幾個常用的指令可以用來創建陣列
Thumbnail
本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
Thumbnail
在Python中,import是一個關鍵字,用於將其他模組或套件中的程式碼引入到當前的程式中以供使用。 這個關鍵字允許你在你的程式中使用其他地方定義的變數、函式和類等。 當你使用import時,Python會搜索指定模組或套件的位置,並將其中的程式碼載入到你的程式中,這樣你就可以在程式中使用它們
Thumbnail
Python 提供了一系列內建函式,其中一部分涉及數學和數學操作。 以下是一些常用的內建函式和數學相關的函式: 基本數學運算: abs(x): 返回 x 的絕對值。 result = abs(-5) print(result) # 輸出: 5 max(iterable) 和 min(
Thumbnail
在 Python 中,dir() 函式用於列舉對象的所有屬性和方法。這包括對象的內建屬性、方法以及自定義的屬性和方法。以下是一個簡單的示例: 列舉所有屬性與方法 class MyClass: def __init__(self): self.attribute1 = 42
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
Thumbnail
在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
Python的模組和庫是可重用的程式碼塊,可透過import語句引入。特定部分可以透過from和import引入,並可使用as指定別名。第三方模組可透過pip工具安裝並在程式碼中使用。此外,也可以創建自定義模組並在其他Python文件中引用。
Thumbnail
在Python中,我們可以用def關鍵字定義函數,並透過函數名稱呼叫它。函數參數可以是必填、關鍵字、默認或不定長度的類型。return語句負責結束函數並回傳值。全域變數可以在整個程序中使用,而區域變數只能在特定函數內使用。我們還可以在一個文件中定義函數,然後在另一個文件中呼叫它。
NumPy(Numeric Python)是Python中用於科學計算的核心庫之一。它提供了高性能的多維陣列對象(即ndarray)以及用於處理這些陣列的各種函數和工具。 在NumPy中,有幾個常用的指令可以用來創建陣列
Thumbnail
本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
Thumbnail
在Python中,import是一個關鍵字,用於將其他模組或套件中的程式碼引入到當前的程式中以供使用。 這個關鍵字允許你在你的程式中使用其他地方定義的變數、函式和類等。 當你使用import時,Python會搜索指定模組或套件的位置,並將其中的程式碼載入到你的程式中,這樣你就可以在程式中使用它們
Thumbnail
Python 提供了一系列內建函式,其中一部分涉及數學和數學操作。 以下是一些常用的內建函式和數學相關的函式: 基本數學運算: abs(x): 返回 x 的絕對值。 result = abs(-5) print(result) # 輸出: 5 max(iterable) 和 min(
Thumbnail
在 Python 中,dir() 函式用於列舉對象的所有屬性和方法。這包括對象的內建屬性、方法以及自定義的屬性和方法。以下是一個簡單的示例: 列舉所有屬性與方法 class MyClass: def __init__(self): self.attribute1 = 42
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。