スライダーを使ったGUI
スライダー
スライダーには以下の種類がある。
intとfloatのスライダーの違いは整数値をとるか、実数値をとるかの違いだけである。
intSliderとfloatSlider、floatSliderGrpとattrFieldSliderGrpは見かけ上はほとんど違いが無い。
- intSlider
- 整数のスライダー
- intSliderGrp
- ラベル、整数値のフィールド、整数値のスライダーを組み合わせたもの
- floatSlider
- 実数のスライダー
- floatSliderGrp
- ラベル、実数値のフィールド、実数値のスライダーを組み合わせたもの
- attrFieldSliderGrp
- ラベル、実数値のフィールド、実数値のスライダーを組み合わせたものでアトリビュートにコネクトできる
スライダーの使用例
ここではfloatSliderGrpについて使用例を示す。
以下のスクリプトはスライダーで指定された半径の球を作る。
OKボタンを押すと指定された半径の球がひとつ作られる。
- 以下のMELスクリプトをfloatSlider1.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の によってfloatSlider1.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
abe@injapan.net