スライダーを使ったGUI
スライダー
スライダーには以下の種類がある。
int と float のスライダーの違いは整数値をとるか、実数値をとるかの違いだけである。
intSlider と floatSlider、floatSliderGrp と attrFieldSliderGrp は見かけ上はほとんど違いが無い。
- intSlider
- 整数のスライダー
- intSliderGrp
- ラベル、整数値のフィールド、整数値のスライダーを組み合わせたもの
- floatSlider
- 実数のスライダー
- floatSliderGrp
- ラベル、実数値のフィールド、実数値のスライダーを組み合わせたもの
- attrFieldSliderGrp
- ラベル、実数値のフィールド、実数値のスライダーを組み合わせたものでアトリビュートにコネクトしてリアルタイムに値を変更できる。
スライダーの使用例
ここでは floatSliderGrp について使用例を示す。
以下のスクリプトはスライダーで指定された半径の球を作る。
OK ボタンを押すと指定された半径の球がひとつ作られる。
- 以下のMELスクリプトを slider1.mel という名前で作る。
global proc makeSphere()
{
float $val;
$val = `floatSliderGrp -q -value radiusSlider`;
sphere;
scale $val $val $val;
}
window -title "slider1";
columnLayout;
text -label "make Sphere";
floatSliderGrp -label "Radius" -field true
-min 0.1 -max 20.0 -step 0.1 -value 1.0 radiusSlider;
button -label "OK" -command "makeSphere()";
showWindow;
- Script Editorの によってslider1.melを読み込む。
- 以下のようなウインドウが表示される。
- スライダーの値を 2.0 にして OK ボタンを押すとXYZ方向に2倍スケールされたNURBSの球が作られる。
スクリプトの解説
-
global porc makeSphere()
- makeSphere という名前のプロシージャの宣言。
以下は makeSphere の中身。
-
float $val;
- float の変数 $val の宣言。
-
$val = `floatSliderGrp -q -value radiusSlider`;
- radiusSlider という名前のスライダーから現在の値を得て
アサインによって $val に代入する。
-q -value というフラグによってスライダーの値を得ることができる。
-
sphere;
- NURBS の球を作る。
-
scale $val $val $val;
- $val の値で XYZ 方向にスケールをかける。
-
window -title "slider1";
- slider1 というタイトルのついたウインドウを作る。
-
columnLayout;
- GUI 部品を縦に並べるレイアウトコマンド。
-
text -label "make Sphere";
- text コマンドによってウインドウ内にテキストを表示する。
-label を忘れないこと。
-
floatSliderGrp -label "Radius" -field true
-min 0.1 -max 20.0 -step 0.1 -value 1.0 radiusSlider;
- radiusSlider という名前の floatSliderGrp をつくる。
ここでは、ひとつのコマンドが2行にわたって書いてあるが、
長いコマンドを書く時にはこのように適当に途中で改行しても良い。
floatSliderGrp の各フラグの意味
- -label "Radius"
- 左側に表示されるラベル。
(ここでは Radius)
- -field true
- フィールドを表示するかどうかを決める。
true だとフィールドを表示する。
false だとフィールドの部分が表示されない。
- -min 0.1
- スライダーの最小値。
スライダーを一番左にスライドさせた時の値。
- -max 20.0
- スライダーの最大値。
スライダーを一番右にスライドさせた時の値。
- -step 0.1
- スライダーのステップ値。
スライダーの地の部分でマウスを1回クリックした時に増減する値のこと。
- -value 1.0
- スライダー・フィールドの初期値。
スライダーが表示された時の最初の値。
- radiusSlider
- この floatSliderGrp の名前。
後でスライダーから値を得る時に使用する。
名前を指定しないとデフォールトの名前(floatSlider1 など)がつく。
-
button -label "OK" -command "makeSphere()";
- 押すと makeSphere() が実行される、OK というラベルのついたボタンを作る。
-
showWindow;
- ウインドウを表示する。
練習
- 上の slider1.mel を参考にして slider2.mel を作り、X 方向のスケール値だけを変更できるようにしよう。
slider2.mel を読み込んで実行した直後のウインドウ。
スライダーの値を 2.0 にして OK ボタンを押した結果。
- slider2.mel を参考にして slider3.mel を作り、X、Y、Z 方向のスケール値を別々に変更できるようにしてみよう。
slider3.mel を読み込んで実行した直後のウインドウ。
スライダーにおける Scale X の値を 2.0、Scale Y の値を 3.0、Scale Z の値を 4.0 にして OK ボタンを押した結果。
まとめ
- スライダーには、スライダーのみのものもあるが、floatSliderGrp などフィールドなどが組み合わせてあるものを利用すると便利である。
- スライダー(フィールド)から値を得るには -q -value を使用する。
練習課題
参考
Prev | Next
Home | Contents
Mail