スライダーを使ったGUI

スライダー

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

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

スライダーの使用例

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

  1. 以下の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;
    
  2. Script Editorの File → Source Script によってslider1.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
Mail