facebook

【2024】MayaのMELの使い方をわかりやすく解説!スクリプト実行~シェルフの登録方法

Mayaでは、繰り返し作業の自動化やワークフローのカスタマイズを行う際にMEL(Maya Embedded Language)を使用します。MELでスクリプトを組み込んだり、シェルフを登録したりすることで、Mayaにおける作業の効率化が可能です。

MELを使用する場合、プログラミングの知識が必要になるため、少し苦手な人も少なくはありません。そこで今回は、MayaのMELでスクリプトの実行からシェルフの登録方法について解説します。

MayaのMELとは?

MayaのMELとは、単純作業の自動化や機能拡張のために使用されるスクリプト言語を指します。

MELでは、カスタムツールの作成やアニメーション、シミュレーションタスクの自動化、他のプログラミング言語とソフトウェアとの連携まで可能です。MELの知識があればワークフローの高速化、効率化、複雑なタスクの簡略化を実現できます。

MELで何ができる?

続いては、実際にMayaのMELで何ができるのか解説していきましょう。

機能の拡張ができる

MayaのMELで機能を拡張すると、タスクの自動化が可能です。

たとえば、3Dモデルを動かすリギングやアニメーション、シミュレーションなどの反復作業を自動化するカスタムツールやインターフェイスを作成できます。さらにMELコマンドを実行することで、ジオメトリやライティング、カメラ、レンダリングを自動化します。

MELでPythonなどのスクリプト言語と組み合わせると、より複雑なワークフローを簡略化できるため、業界標準の機能として活用できます。

膨大な作業を簡素化できる

MayaのMELで単純作業を自動化すると、膨大な作業に費やす時間を短縮できます。MELにスクリプトを記述することで、多数のプロジェクトを手動で選択する工程を自動的に実行可能です。

反復作業は、ヒューマンエラーを起こしやすいため、MELを活用することでミスのリスクを軽減できるメリットがあります。また、MELとMayaのツールを併用すると、複雑なシミュレーションやアニメーションを効率的に作成できます。

MELでツールを作成する場合は、必要なオプションの追加が可能であるため、ワークフローの簡素化に便利です。

Pythonと組み合わせができる

MayaのMELをPythonと組み合わせることで、機能の拡張に役立ちます。

Pythonは、スクリプトや自動化タスクのために、IT業界で多く使用されているプログラミング言語です。Pythonを使用すると、Mayaにおいて複雑で高度なスクリプトや自動化ツールの作成が可能になります。

MELでPythonを使用するメリットは、言語自体、複雑なデータやアルゴリズムを扱うため、簡素化された構文でコードの記述や保守が容易である点です。また、複数のプロジェクトで再利用できるコードライブラリの作成や他のツールで利用できるインターフェイスとして活用できます。

MELのスクリプトの実行方法

では、実際にMayaのMELでスクリプトを実行する方法について解説していきましょう。

ステップ1:MELを開く

MELを開く

Mayaを起動すると、ワークスペースが表示されます。MELを開くには、画面の右下の端にあるセミコロンのアイコンをクリックします。

画面の右下の端にあるセミコロンのアイコンをクリック

アイコンをクリックすると、スクリプトエディタが表示されます。スクリプトエディタでは、独自のMELコードの記述、もしくはコピーアンドペーストでコードの貼付が可能です。

コードの記述ができたら、画面の上部にある「実行」アイコンをクリックするのみです。

ステップ2:MELを入れる

事例として、Maya のシーンに新しい立方体オブジェクトを作成します。Mayaにおける「シーン」とは、作業するデジタル環境を指します。

Maya のシーンに新しい立方体オブジェクトを作成

画面の下半分の「MEL」に「polyCube;」と記述しました。現時点では、ワークスペースに何もない状態です。記述したコードを実行すると立方体が作成されます。

ステップ3:MELでスクリプトを実行する

MELでスクリプトを実行する

コードの記述ができたら、「実行」をクリックします。

コードの記述ができたら、「実行」をクリックします。

スクリプトを実行すると、画面の上半分に結果が表示されます。「pCube1」という名称の立方体がワークスペースに置かれました。

pCube1」という名称の立方体がワークスペースに置かれた

スクリプトエディタでMayaに対して、実行して欲しいことをスクリプト言語で指示を出すとワークスペースに反映されます。

MayaのMELでアニメーションを作成する方法

続いて、MayaのMELでアニメーションを作成する方法を解説します。

ステップ1:スクリプトエディタで動かしたいモデルを作成する

スクリプトエディタで動かしたいモデルを作成する

今回は、立方体の反復移動のアニメーションを作成します。反復処理は、Pythonを使用してMayaに指示を出します。まず動かしたい立方体を作るために、次のコードを記述します。

import maya.cmds as cmds

 

# create a cube

cmds.polyCube()

「cmds」とは、MayaにおけるPythonの構成要素の一つで、3Dモデルやアニメーションを作成するためのコマンドを指します。つまり、「cmds」はコマンド(commands)の略です。

こちらは、Pythonの構文を使用して新しい立方体を生成する「polyCube」コマンドを呼び出しています。スクリプトエディタにおいて「MEL」に記述するとエラーが表示されるため、必ず「Python」に切り替えてから記述しましょう。

ステップ2:モデルのアニメーションを作成する

モデルのアニメーションを作成する

今回は、立方体の横移動を繰り返すアニメーションを作成します。立方体を生成したコードの下に、続いて以下のコードを記述しましょう。

# set keyframes for the cube’s position

cmds.currentTime(0)

cmds.move(0, 0, 0)

cmds.setKeyframe()

cmds.currentTime(10)

cmds.move(5, 0, 0)

cmds.setKeyframe()

 

# play the animation

cmds.playbackOptions(minTime=0, maxTime=10, animationStartTime=0, animationEndTime=10)

cmds.play(forward=True)

こちらのコードでは、キーフレームの値を設定することでモデルの移動の速さを調整できます。初心者の人には良くわからないかもしれませんが、コードの意味を知ることでだいたい理解できるかもしれません。いくつかのコードの意味を一つずつ解説します。

  • currentTime(0)
    アニメーションのタイムラインの現在時刻を「0」に設定するコマンドです。つまり、新しくアニメーションを始めるときにリセットができます。
  • move(0, 0, 0)
    選択したモデルを3D空間の特定の位置に移動させるコマンドです。3つの数値(0, 0, 0)は、それぞれモデルの新しい位置のX, Y, Z座標を表します。この場合、モデルは3D空間の原点である(0, 0, 0)に移動することになります。
  • setKeyframe()
    Mayaのアニメーションにおいて、特定の時点でキーフレームを設定し、モデルの動きや属性の変化を表現するために使用されます。今回は、モデルを移動させるだけなので、具体的な数値は記述していません。
  • playbackOptions(minTime=0, maxTime=10, animationStartTime=0, animationEndTime=10)
    再生オプションと再生する方向を設定するコードです。具体的には、最小・最大フレーム範囲、アニメーションの開始・終了時間などを設定します。今回は、フレーム範囲を0~10に、アニメーションの開始・終了時間を0~10に設定しました。移動の速さを遅くしたい場合は、数値を大きくすると
  • play(forward=True)
    アニメーションを順方向に再生するコードを意味しています。引数の「forward=True」は再生方向を指定しています。

ステップ3:コードを実行する

コードを実行する

コードを記述したら、「実行」をクリックします。ワークスペースに戻るとモデルが横方向に反復移動しています。

ワークスペースに戻るとモデルが横方向に反復移動しています。

モデルがコードの記述どおりに移動しているか確認します。再生を停止する場合は、[Esc]キーを押します。

MayaのMELにPythonを組み込む方法

MayaのMELにPythonを組み込む方法

スクリプトエディタの「MEL」の中に、Pythonのコードを組み込む方法があります。MELと互換性のないコードはエラー表示されるため、スクリプトを実行できません。

たとえば、簡単な事例として「Hello world」を表示させたい場合は、次のようにコードを作ります。

python(“print(‘Hello world’)”)

()の中のコードには、Mayaで実行したい内容を記述します。こちらの記述ルールを活用しながら、Pythonで立方体を生成する手順を紹介します。

ステップ1:スクリプトエディタにPythonコードを記述する

ステップ1:スクリプトエディタにPythonコードを記述する

ワークスペースに新しい立方体を生成するために、スクリプトエディタの「MEL」に以下のPythonコードを記述します。

global proc myMelScript()

{

    python(“import maya.cmds as cmds”);

    python(“cmds.polyCube()”);

}

 

myMelScript();

MEL独自のコードとは少し異なりますが、基本的にPythonコードを組み込む際は()の中に実行する内容を記述します。こちらも一つずつ意味を説明しましょう。

  • global proc myMelScript()
    プロシージャと呼ばれる複数の処理を1つにまとめたものを「myMelScript」という名前で「global」キーワードとして定義したMEL独自のコードです。構文の冒頭に記述することでMayaにおけるツールと連携が可能です。
  • python(“import maya.cmds as cmds”);
    Pythonを使用してMayaで3Dモデルの操作やアニメーションの作成を実行できるコマンドです。
  • python(“cmds.polyCube()”);
    polyCube()関数を呼び出して、新しいポリゴン立方体を作成しています。

ステップ2:スクリプトを実行・保存する

スクリプトを実行・保存する

スクリプトを実行したら、画面上部の「保存」をクリックします。

画面上部の「保存」をクリック

ファイルの場所やファイルの種類、名前を設定して保存します。

ステップ3:モデルを確認する

ファイルの場所やファイルの種類、名前を設定して保存

ワークスペースに立方体が生成されていることが確認できたら完成です。

MayaのMELでシェルフを登録する方法

Mayaのシェルフとは、よく使用するツールやコマンド、スクリプトを便利なボタンとして整理ができる機能を指します。自由にカスタマイズが可能で、インターフェイスにあるシェルフタブをクリックすると簡単にアクセスができます。今回は、MELでシェルフを登録する方法について紹介します。

ステップ1:スクリプトエディタでPythonコードを記述する

スクリプトエディタでPythonコードを記述する

今回は、「My_Shelf」という名前のシェルフを作成し、「My Tool」というラベルのボタンを追加し、ボタンが押されたときに「Hello world!」と表示するようにコマンドを設定します。

スクリプトエディタの「Python」タブを開き、次のコードを記述します。

import maya.cmds as cmds

 

# Create the shelf

shelf_name = “My_Shelf”

cmds.shelfLayout(shelf_name, parent=”ShelfLayout”)

 

# Add a button to the shelf

button_name = “My_Button”

icon = “commandButton.png”

label = “My Tool”

command = “print(‘Hello world!’)”

cmds.shelfButton(button_name, image=icon, label=label, command=command, parent=shelf_name)

Pythonコードでは、()の内容が実行する内容になります。こちらのコードの意味も解説しましょう。

  • shelf_name = “My_Shelf”
    登録するシェルフの名前を記述しています。
  • shelfLayout(shelf_name, parent=”ShelfLayout”)
    Mayaのインターフェイスで新しいシェルフのレイアウトを作成するためのコマンドです。「parent」は「親」を意味します。つまり、指定された名前の新しいシェルフを作成し、Maya のインターフェイスのメインのシェルフの子として追加します。
  • インターフェイスame = “My_Button”
    Pythonスクリプトを使用して、Mayaのシェルフにボタンを追加しています。ボタンの名前は「My_Button」とします。
  • icon = “commandButton.png”
    icon変数の値に、ボタンのアイコンとして使用する画像ファイル名を設定します。この場合、画像ファイル名は「commandButton.png」とします。
  • label = “My Tool”
    Mayaのシェルフに追加されるボタンのラベルを定義します。このラベルは、Mayaのインターフェイスでボタンに表示されます。ラベルは「My Tool」に設定されています。
  • shelfButton(button_name, image=icon, label=label, command=command, parent=shelf_name)
    設定したアイコン、ラベル、コマンドを持つ新しいボタンを、指定されたシェルフ上に作成します。

ステップ2:スクリプトを実行する

スクリプトを実行する

コードを記述できたら、スクリプトを実行します。

ステップ3:シェルフの確認・設定する

シェルフの確認・設定する

ワークスペースの上部にPythonコードで設定した「My_Shelf」がアイコンと一緒に追加されています。アイコンを右クリックして「編集」を選択すると、詳細設定ができるポップアップが表示されます。

シェルフの名前変更やアイコンの色調の変更が可能です。機能として活用する場合は、さらにコードの記述が必要です。

まとめ

MELでスクリプトの実行からシェルフの登録方法まで解説しました。

Mayaのスクリプトエディタでは、MEL独自のコードとPythonの2種類を使用してカスタマイズが可能です。今回は、Pythonコードを使用してアニメーションとシェルフを作成しました。

初心者の方は、Pythonでスクリプトを作成するのがおすすめです。なぜなら、コードの構文がシンプルでわかりやすいからです。

プログラミングの知識が少ない人でも、()の中に実行して欲しい内容を記述することを覚えていれば、抵抗を感じにくくなるでしょう。これからMayaのMELを使って機能の拡張を行う人は、今回紹介した方法を参考にしてみてください。

最新情報をチェックしよう!