Maya Python

maya python はここから始まる。スクリプトエディタの基本機能と使い方を詳しく解説

ヒストリペインとインプットペイン
✖アイコンでペイン内の文章を消去できる
その横のアイコンでペインの表示切り替え

スクリプトエディタの起動方法

ウィンドウメニューから立ち上げる

スクリプトエディタは Window > General Editors > Script Editor から立ち上げることができます。

日本語の場合は ウィンドウ > 一般エディタ > スクリプトエディタ から開きます。

スクリプトエディタの起動

右下の UI から立ち上げる

右下のスクリプトエディタのアイコンからも起動できます。

スクリプトエディタの起動_02

こちらの方が便利です。

ヒストリペインとインプットペイン

スクリプトエディタは大きく分けて二つのペインとメニューバーで構成されています。個人的には「ペイン」という言葉をあまりつかわないんですが、公式でこの名前になっていますのでペインで説明していきます。

ヒストリペインとインプットペイン
POINT
  • ヒストリペイン (上段)  | maya ⇒ ユーザー
  • インプットペイン (下段)  | ユーザー ⇒ maya

ヒストリペインの機能

冒頭で「デザイナーでもプログラミングがしやすい環境が整っているのが maya の特徴」とお話ししましたが、その特徴のひとつがこのヒストリペインにあります。

手動作業時のヒストリペインの働き

ヒストリペインは maya の反応が履歴として残る場所です。手動で行った動作の反応も履歴として残ります

試しにいつものように手動でキューブを作り、スクリプトエディタを確認してみます。

ヒストリペインには手動で行ったコードが生成される

スクリプトエディタに2行ほど追加されるはずです。
重要なのが最初の一行目。

polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1;

これは「 MEL 」という言語でキューブを作る際のコードです。追記された上記のコードを MEL スクリプト として実行すると、全く同じキューブが作成されます。

MELタブで実行すると全く同じものが作成される

maya プログラミングの最も簡単な流れ

maya でプログラミングができるデザイナーが多い理由はヒストリペインの優秀さにあります。

手動で行った内容がコードとしてヒストリペインに表示され、そのコードを MELコマンドとして流用することも、それをヒントに python による手続き方法を調べることもできるようになっています。

ヒストリペインに表示されるコマンドからプログラミング開発が可能

他のソフトウェアに比べ、maya は非常に直観的にコードのヒントを調べることができます。手動で行ったことに対してコードのヒントを常に出力してくれるのは maya 特有の機能です。ただし、全てのものがヒストリペインに表示されるわけではありません。手動で表示されないものに関しては様々な場所から情報を集めていく必要があります。

また、ヒストリペインには他にもプログラミングに必要な情報が山ほど表示されます。ヒストリペインは maya でプログラミングを行う際にかなりの頻度で見ていく場所になります。

POINT
  • 上段のヒストリペインは maya プログラミングの要

スクリプトエディタの表示機能

スクリプトエディタの機能をいくつか紹介していきます。ただ、覚える必要がある機能は限られています。
このスクリプトエディタでコードを書くのは短文の場合だけで、慣れてある程度長文を書くようになると、テキストエディタやコードエディタと呼ばれる専門のソフトウェアを使用します。
そのため、ここではよく使う機能に絞って紹介していきます。

表示されている文の削除

表示されている文章を全て消したいときにはツールバーにある ✖ 印のついたアイコンから消すことができます。

✖アイコンでペイン内の文章を消去できる

最もよく使用するのは ① です。手動で消さない限りヒストリペインの文章は消えません。

ヒストリペインの文が消えるタイミング

  • maya が終了したとき
  • 手動でヒストリペインの文字を消去したとき

先ほどキューブを作成した時にヒストリが追加されたように、手動で作業を進めていたとしてもヒストリは溜まり続けていきます。履歴が増えて見づらいときは上記の方法で消去するようにしてください。

ペインの表示切り替え

各ペインの表示/非表示を切り替えることもできます。

その横のアイコンでペインの表示切り替え

文字の拡大/縮小

各ペインで Ctrl を押しながら中ボタンをスクロールさせることで文字の拡大 / 縮小を行えます。見づらい場合は調整してください。

Echo All Command

ヒストリペインは maya の履歴が残っていく場所、という説明をしましたが、一部の履歴は膨大な量になるため表示されていません。確認可能な履歴をすべて表示するためには、Echo All Command を ON にする必要があります。

Echo All Command は処理負荷が高いので注意

ON にすると大量の文章が表示されるようになります。ヒストリペインが見づらくなるため、前述したヒストリペインの文章の消去方法と一緒に覚えるといいと思います。

Echo All Command を ON にしてもそれらしいものが出てこない場合、ヒストリペインではで確認できないもの、ということになります。結構多いです。

簡単な python コードを書いてみる

では、インプットペインを使って超簡単な python コードを書いてみます。
今回は他のサイトや本に倣い、「 Hello world 」という文字をヒストリペインに出力させるコードを書いてみます。

Hello world と言ってください

python コードを書く場所は、インプットペインの python タブの中です。

python2 → python 3 互換コード

maya 2022 から python のバージョンが変更され、maya 2020 以前 と maya 2022 以降 ではコードの書き方が違います。
そこで、python2 の maya でも python 3 の maya と同じコードが使えるようにします。

python2 の環境で python3 のコードを扱えるようにする

現在 maya 2020 以前の maya を使用されている方は下記のコードをインプットペインの python タブに張り付けてください。
また、今後 maya 2020 以前の maya を使用する可能性がある方も、同様に次のコードを先頭にコピペしておくようにしてください

from __future__ import print_function

上記のコードは maya 2020 以前 の maya で、maya 2022 以降の書き方ができるようにするための文です。

今のところ下図のような形になります。

※ maya2022 以降のバージョンしか使わない、という方は不要です。

print 関数を使う

では、実際に「Hello world」という文字をヒストリエディタに出力するコードを書きます。といっても1行だけです。

print('Hello world')

Backspace の下のエンターキーで改行 を行ってこれを張り付けてください。
(テンキーのエンターは書いた文字が消えてしまうと思います。)

張り付けたあと、3行ほど改行を加えて空けておいてください。そのほうが実行したときに見やすくなります。

今のところインプットペインに記入しているのは下記のコードです。

from __future__ import print_function
print('Hello world')


プログラムの実行

プログラムを実行するには、テンキーのエンターを押すか、Ctrl + エンターです。
Bckspace 下のエンターのみの押下は改行です。

まず最初にインプットペインに書いた文が記載され、その分に続いて実行結果が出力されます。
きちんと「Hello world」と出力されているのがわかるかと思います。
先ほど改行を加えたのはコード文と実行結果を分けて見やすくするためです。

Hello world と言ってください

プログラムを実行するとインプットペインに書いていた文は消えてしまいますが、インプットペインで文字が打てる状態で Ctrl + Z を押すと戻せます

POINT
  • Backspace 下のエンターで改行
  • テンキーのエンターあるいは Ctrl + エンターでコードの実行
  • インプットペインは Ctrl + Z が使える

関数とは

関数というのは、自販機に備え付けられているボタンやお金の投入口 です。

関数は自販機のボタン

自販機のボタンは、購入手続きを簡易化するためのボタンです。自販機がない場合はスーパーやコンビニに行って飲み物を購入する必要がありますが、自販機があることによって手軽に飲み物を買えます。その代わり、自販機では飲み物しか買えません。

関数はこのボタンを押せばこう動く、ということがあらかじめプログラミングされているもので、我々はボタンを押すだけでその機能を利用する事ができます。今回利用した print 関数は、()内に入れた内容をパソコンに出力させるためのボタン です。それ以外の機能を持っていません。

この関数というボタンの押し方はこう。

関数名(内容)

Hello world を別の文字に変えてもちゃんと出力されるはずです。
「 ’ 」(シングルクオーテーション)で囲む ようにしてください。python は「 ' 」 で囲んだものを文字として認識します。
文字列については下記のページで分かりやすく解説されています。
文字列 | Python-izm
(いずれここでも maya python 向けの文字列の記事を書く予定です。)

print 関数以外にも様々な関数が用意されており、同じ書き方をします。
maya プログラミングは基本的にこの関数を利用して maya に指示を出していきます

POINT
  • 関数は実行するだけで手続きができる優れもの
  • 使い方 | 関数名(内容)

python2 と python3 での print 文の書き方の違い

さきほど python のバージョンが 2 から 3 に変わったという話をしましたが、python2 での書き方も覚えておく必要があります。
なぜなら、今ネット上にある maya のコードはほぼ全て python2 で書かれているものばかり だから
です。(2021年7月現在)
会社で使用されているコードも python2 の可能性が高いです。そのままでは maya 2021 以降のバージョンで動かなくなるため、コードを流用する際は python3 に変換する方法を知っておく必要があります。

maya2022 から python3に移行した

これまで python2 の maya で上記のコードを書く場合、次のような形で記述していました。

print 'Hello world'

python2 では print は関数ではありませんでした。python3 では print は関数になっています。
そのためこの書き方だと python2 の mayaでは動きますが、python3 の mayaではエラーになります。
python 3 で print を使う場合は次のようになります。

ptint('Hello world')

ただ、このコードだと python 2 の maya でエラーが起きます。
そこで、先ほどのように、

from __future__ import print_function
print('Hello world')

1行目の文を入れることで、python2 の maya でも python3 の書き方で書けるようになります。

python2 の環境で python3 のコードを扱えるようにする

python2 → python3 へのコードの書き方の違いはこの print 文が一番大きな変更点 です。他は些細なものがほとんどなので、とりあえずはここだけ抑えておくといいと思います。

インプットペインの機能

途中でお話ししましたが、このインプットペインで長文のコードを書くことはおすすめしません。
専用のコードエディタを使用する方が便利です。いつかコードエディタについての記事も書くと思います。

とはいえ短文であったり、一部のコードを試したい場合にはインプットエディタも使いますので、よく使う機能だけご紹介しておきます。

タブの追加

デフォルトで立ち上げたときは MEL と Python の 2 つのタブがあると思いますが、このタブは任意で追加できます。

+アイコンからタブの追加ができる

MEL か Python か聞かれますので、Python コードを書く場合は Python を選択してください。

タブの削除

タブを削除するには Delete Tab で削除します。

Delete Tab でタブの削除

maya 2020 からは Tabs というメニューが追加され、そこに Delete Tab が入っています。
また、2020 からタブの名前横の✖ボタンからも削除できるようになっています。

TAB キーのインデント化

Command > Use tabs for indent で TAB キー によるインデントの扱いを変更できます。
ここは完全に好みですが、私はこのチェックを入れるようにしてます。

Use Tabs for Indent でインデントの扱いを変えられる

プログラミングには「インデント」と呼ばれる、スペースキー4つ分の空白があり、特別な意味を持っています。
このチェックを入れておくと、TAB キーで作られる空白4つが1つの塊として扱えるようになります。
インデントを消すときに Delete 4回押すか、1回で済むかの違いだけですが、地味に便利です。

一部分だけ実行する

ドラッグした状態でプログラムを実行すると、ドラッグした部分のみ実行することができます。

ドラッグされていない分は実行されない

このとき、ドラッグされていない部分は実行されません。エラーの原因になることもありますので注意してください。

また、この機能を利用して全文をドラッグした状態で実行すると、インプットペインの文章を消さずにコードを実行することができます。
全文をドラッグするにはショートカットが割り当てられており、 Ctrl + A で全文選択ができます。

まとめ

スクリプトエディタで簡単なプログラムを組んでみました。

今回特に重要だった部分は、ヒストリペインの使い方と、関数の使い方です。
どちらも何度も使っていくものになりますので、優先して身につけましょう。

-Maya Python
-, , ,