スライダーを使ったGUI

スライダー

スライダーには以下の種類がある。
intとfloatのスライダーの違いは整数値をとるか、実数値をとるかの違いだけである。
intSliderとfloatSlider、floatSliderGrpとattrFieldSliderGrpは見かけ上はほとんど違いが無い。

intSlider
整数のスライダー
intSliderの画像
intSliderGrp
ラベル、整数値のフィールド、整数値のスライダーを組み合わせたもの
intSliderGrpの画像
floatSlider
実数のスライダー
floatSliderの画像
floatSliderGrp
ラベル、実数値のフィールド、実数値のスライダーを組み合わせたもの
floatSliderGrpの画像
attrFieldSliderGrp
ラベル、実数値のフィールド、実数値のスライダーを組み合わせたものでアトリビュートにコネクトできる
attrFieldSliderGrpの画像

スライダーの使用例

ここではfloatSliderGrpについて使用例を示す。
以下のスクリプトはスライダーで指定された半径の球を作る。
OKボタンを押すと指定された半径の球がひとつ作られる。

  1. 以下の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;
    
  2. Script Editorの File → Source Script によってfloatSlider1.melを読み込む。
  3. 以下のようなウインドウが表示される。
    slider1.melの実行結果
  4. スライダーの値を2.0にしてOKボタンを押すとXYZ方向に2倍スケールされたNURBSの球が作られる。
    OKボタンを押した実行結果

スクリプトの解説

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;
ウインドウを表示する。

練習

まとめ

参考


Prev | Next
Home | Contents
abe@injapan.net