日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2009年5月16日土曜日

linstep (1)

Learning Maya(Mel Fundamentals)を読んでいてlinstepコマンドを見つけた。(p144)

これもパーティクルの操作などで、何度も見かけたことがある。
気になっていたし、習っておいて損はないだろうと思い、読んでみることにした。

読んでみると、もしかするとオブジェクト間の距離を閾値をきめて、カラー調整をするにはむいているような気がしてきた。
最小値と最大値の設定ができるからだ。


LearningMayaを読んだ後、頭を整理するためにオンラインヘルプを読んでみた。
(Mayaオンラインヘルプ:linstep


使用する数字は3つ、左側から、第一引数、第二引数、第三引数。
linstepの後にスペースで区切って並べるだけ、括弧もカンマも不要。
(手持ちのLearningMayaはMaya5だが、そのためか引数はカンマで区切って括弧でくくってある)

第一引数:最小値
第二引数:最大値
第三引数:指定値

「linstep」は、最小値と最大値の間の指定値が0-1のどの位置にあるかを、浮動小数点数で返してくる。

イメージとしては、最小値と最大値のきめられたスケール上を移動する針が存在すると仮定する。
そのスケール全体を100%としたときに、現在その針は、最小値から何%ぐらいの位置にいるかとうことを示してくれる。

例1:
最小値 0
最大値 1
指定値 0.6
返り値は0.6

例2:
最小値 1
最大値 2
指定値 1.6
返り値は0.6

例3:
最小値 0
最大値 10
指定値 5
返り値は0.5

ヘルプにはパーセントを返してくると書いてあるが、パーセントを浮動小数点数で返してくると言った方が正確。



変数を使って結果を表示するようなスクリプトを作ると、以下のようになる。
{
float $value=5;
$result = `linstep 0 10 $value`;
print $result;
}



最後の指定値が流動的に変わるようなら当然その返り値も変化する。
試しに指定値を0から10まで変化させてみた。
{
float $value;
float $result[];

for ($i=0; $i<1;>
{
$value=$i;
$result[$i] = `linstep 0 10 $value`;
print ($result[$i]+"\n");
}
}

結果は、以下の通り。
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1

 

0 件のコメント:

コメントを投稿