スタジオブロス TECH BLOG

スタジオブロススタッフからの最新ツール情報やチュートリアル・TIPSなどを紹介します

文系デザイナーのためのmaya MEL/Python基礎の基礎 Step2-10

前回でPythonを使って様々なUIの機能があることが解りました。

今回は、ちゃんと使えるツールとして発展させます。

まず、以下をスクリプトエディタで実行してみてください。

import pymel.core as pm

window = pm.window("testWindow",t="Slider",w=300,h=100)

pm.columnLayout(adj=True)

pm.showWindow(window)

解説すると、

2:ウインドウの設定でタイトルや大きさを決定

3:縦に並べる設定

4:ウインドウを表示

実行すると、以下のようにウインドウが出ます。

さて、これに4行加えてみます。

pm.text("input Cube W,H,D")

pm.button(l="Create",c="makeCube()")

def makeCube():

cube = pm.polyCube()

解りやすいように改行を入れてますが、あっても無くても同じです。

5:テキストで文字を出す

6:ボタンを作って、lがボタンの表示でcがボタンクリックしたら実行される命令です。

過去にはlabel=command=と書いてましたが、省略できます。

マニュアルを見ると()で書いてありますね。

download.autodesk.com

10:関数を定義します。

11:ポリゴンのキューブを作成します。

実行すると、このようにウインドウが出ます。

ボタンをクリックすると、Cubeが生成されます。

ボタンをクリックすると、関数を実行するという仕組みです。

ここまでは復習ですが、基本なのでしっかりやります。では、ここから改造していきます。

改造したのは、6、10、11行目です。

pm.button(l="Create",c="makeCube(2,5,3)")

def makeCube(wid,hei,dep):

cube = pm.polyCube(w=wid,h=hei,d=dep)

6:実行コマンドに「引数」を3つ(2,5,3)を付けています。

これも復習ですが、引数は関数へデータを送る役割です。

11:引数を受け取る、3つの変数(wid,hei,dep)を設定しています。

12:引数3つをw,h,dに代入してCubeを作成してます。

マニュアルを見ると、w=幅、h=高さ、d=奥行を意味します。

download.autodesk.com

実行すると、Cubeが引数の通りの大きさで作成されます。

さらに改造します。6,10行を変更し、12行を追加してます。

pm.button(l="Create",c="makeCube(2,5,3,2.5)")

def makeCube(wid,hei,dep,mov):

pm.move(0,mov,0,cube)

6:引数が4になっています。makeCube(2,5,3,2.5)。高さ5の半分の2.5です。

10:関数で受け取る側も4つにして、新しくMovという変数です。

12:moveは移動する命令で、Yにmovだけ移動します。cubeは11行目で決めた名前です。アウトライナで出るオブジェクト名ではないので注意です。

ちゃんと高さが2.5でCubeは原点から上にできました。

では、ここからスライダを付けて、自由な高さにできるUIにしていきます。

import pymel.core as pm

Swindow = pm.window("testWindow",t="Slider",w=300,h=100)

pm.columnLayout(adj=True)

pm.text("input Cube W,H,D")

boxH=pm.floatSliderGrp(l="High",min=0,max=20,f=True)

pm.button(l="Create",c="makeCube()")

pm.showWindow(Swindow)

def makeCube():

 wid=1

 hei=pm.floatSliderGrp(boxH,q=True,value=True)

 dep=1

 pm.polyCube(w=wid,h=hei,d=dep)

 pm.move(0,hei/2,0)

だいぶ変わったように見えるかもしれませんが、6、12~14行が追加で、他は少し変更しただけです。

6:スライダーを作成して、値をboxHという変数に入れてます。

ラベルと最大値、最小値を決めてます。「f=True」は数値入力をOKとする設定です。

7:関数の引数を無くしました。勿体ない!かもしれませんが、次回以降で使います。

12~13:Cubeの3つの大きさの変数の値を入れています。高さだけスライダーで設定したboxHを代入しています。qとvalue(v)はとりあえず付けておく、ということでOKです。

15:Cubeを作成しています。cube=と変数に代入をやめました。何が違うのか?も次回以降にします。

16:Cubeを移動します。高さをスライダーの値を1/2しているので、必ず高さは原点になります。

では、実行してみましょう。

ちゃんとスライダで高さを決めて、Createボタンで作成できました。

さらに幅と奥行きにスライダーを追加すれば完成です。

変更箇所は7をコピーして、6、8に、15行を14、16にコピーして変数を書き換えているだけです。

これで実行します。

スライダーが3つになり、それぞれを変化させてCubeが作成できるUIをプログラムできました。

いかがですか?次回はラジオボタンチェックボックスを使ってみます。