Amazon10/19まで!プライム感謝祭開催中!セール会場へ

MayaでPythonスクリプトを実行する方法|選択オブジェクトを取得する入門例

MayaのPython入門 / 選択を取得するコード / 実行・エラーの確認まで

MayaのPythonは、Script EditorのPythonタブから実行できます。最初はシーンを一括変更するコードより、選択したオブジェクトの名前や種類を表示するコードから始めると、実行範囲と結果を確かめやすくなります。

ここではMaya 2026の公式ドキュメントにあるmaya.cmdsを使い、現在の選択を調べる短い例を紹介します。Maya内部で動かすコードなので、通常のターミナルのPythonへ貼り付ける手順とは異なります。

目次

Script EditorでPythonタブを開く

「Windows」→「General Editors」→「Script Editor」を開きます。日本語UIではウィンドウ・一般エディタに相当するメニューです。画面右下のScript Editorボタンからも開けます。

入力欄にはMELとPythonのタブがあります。Pythonタブを選び、次の1行を入力して実行します。タブや履歴欄の役割はAutodesk公式のScript Editor解説でも確認できます。

print("Hello Maya")

履歴欄にHello Mayaと表示されれば、Pythonを実行する場所を確認できています。コードを選択して実行する場合は、その選択範囲が実行対象になります。長いコードの一部だけを選んでいないか確認してください。

選択したオブジェクト名を表示する

練習用シーンでキューブなどを作り、オブジェクトモードで選択してから、次のコード全体を実行します。ここでは名前を取得して表示するだけで、移動・削除・名前変更は行いません。

import maya.cmds as cmds

selected = cmds.ls(selection=True, long=True) or []
print("Selected count:", len(selected))
for node in selected:
    print(node)

selection=Trueは現在選択している対象を取得する指定、long=TrueはDAGノードの階層を含む長い名前を返す指定です。詳細はlsコマンドの公式リファレンスを参照してください。

キューブを1個選んだ場合はSelected count: 1に続いて、たとえば「|pCube1」のような名前が表示されます。実際の名前はシーンにより変わります。何も選択しなければ件数は0になり、for文の中は実行されません。

コードを4つの役割に分けて読む

部分役割
import maya.cmds as cmdsMayaのコマンドをcmdsという名前で使う
cmds.ls(…)条件に合う対象の名前を取得する
len(selected)取得した項目数を数える
for node in selected取得した項目を一つずつ扱う

「対象を取る」「件数を確認する」「一つずつ処理する」という順番は、一括リネームや書き出しにも応用できます。最初から処理を実行せず、対象だけをprintで確認する段階を挟むと、意図していないノードを巻き込むのを防ぎやすくなります。

ノードの種類も確認する

次の例ではコンポーネントや属性の指定を除いてオブジェクト名を取得し、nodeTypeで種類を表示します。キューブ本体を選ぶ場合とShapeノードを選ぶ場合では、返る種類が異なります。

import maya.cmds as cmds

nodes = cmds.ls(selection=True, objectsOnly=True, long=True) or []
if not nodes:
    print("Select an object first.")
else:
    for node in nodes:
        print(node, "->", cmds.nodeType(node))

OutlinerでキューブのTransformを選んだ場合、種類は通常transformです。画面にポリゴンが見えていても、選択したノード自体がmeshとは限りません。この違いを把握してから、メッシュ限定の処理へ進みます。戻り値はnodeTypeの公式説明で確認できます。

よくあるエラーと確認箇所

表示最初に確認すること
SyntaxErrorPythonタブか、括弧や引用符が揃っているか
IndentationErrorfor文やif文の中の字下げが崩れていないか
NameError: cmdsimportの行も含めて実行したか
No module named mayaMaya内のPythonとして実行しているか
件数が0になるコードを実行する前に対象を選択したか

コピー時に全角の引用符へ置き換わると、Pythonの文字列として認識されないことがあります。エラーの最後の行だけでなく、示された行番号の前後を見ます。分からないときはHello Mayaの1行へ戻し、実行環境とコードの問題を切り分けましょう。

自動化へ進む前に確認すること

次の段階で名前変更やファイル出力を加えるなら、未選択・複数選択・同名オブジェクト・名前空間付きのデータを試します。1個のキューブで成功しただけでは、実際の複雑なシーンで対象を正しく取れるとは限りません。

コードはPythonファイルにも保存し、実行例と対応するMayaのバージョンを残します。既存のMELコードをPythonへ移す場合は文法をそのまま貼り替えず、MayaでのPython使用方法にあるフラグの指定方法などを確認してください。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

3DCGのおすすめ書籍

3DCG用PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次