前回で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=と書いてましたが、省略できます。
マニュアルを見ると()で書いてありますね。
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=奥行を意味します。
実行すると、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をプログラムできました。