lunarborの備忘録

CGソフトの使い方を記録しておけば自分とどこかの誰かに役立つだろう

エクスプレッションビルダー LScriptファンクション 日本語訳

使用ソフト

  • Lightwave2020

LScriptファンクション

ファンクション

abs (Absolute Value)

◇記述( Description)

 この関数は、入力データを正の値に変換するために使用されます。入力値が負の場合のみ正の値に変換され、正の入力値は修正されません。

abs( InputA )

InputA にはチャネル、数値、またはサブエクスプレッションが指定でき 、標準入力変数(Time、Frame、Value)のいずれかを受付けます。

◇サンプル(Example)

abs(10)
 この例では、abs()関数に10の値が入力されました。この値は正なので、abs()は10の値を返します。

abs(-8)
 この例では、abs()関数に-8という値が入力されました。入力された値は負の数なので、abs()関数は正の数に変換して値 8 を返します。

さらに例を挙げます:
abs(5.576) は 5.576 の値を返す。
abs(-6.21) は    6.21 の値を返す。
abs(-.024) は    .024 の値を返す。

ceil (Round Value up)

◇記述( Description)

 この関数は、浮動小数点入力値を次の整数に丸めます。

ceil( InputA )

InputA にはチャネル、数値、またはサブエクスプレッションが指定でき 、標準入力変数(Time、Frame、Value)のいずれかを受付けます。

◇サンプル(Example)

ceil(3.3)
 この例では、3.3という値がceil()関数に入力され、4.0という結果が返されます。

ceil(7.5)
 この例では、7.5という値がceil()関数に入力され、8.0という結果が返されます。

さらに例を挙げます:
ceil(1.1) は   2.0 を結果で返す。
ceil(35.9)  は 36.0 を結果で返す。
ceil(4)    は      4 を結果で返す。

center

◇記述( Description)

この関数は、2 つの入力間の中心値を返します。

center( InputA , InputB )

inputA には数値、チャネル、またはサブエクスプレッションを指定できる。 
inputB には数値、チャネル、またはサブエクスプレッションを指定できる。 

どちらの入力も、標準入力変数(Time、Frame、Value)のいずれかを受け付ける。

◇サンプル(Example)

center(0 , 10)

 この例では、center() 関数は結果として 5 という値を返します。

center( [LtFcot.Position.X] , [RtFcot.Position.X] )

LtFootのX値を-1、RtFootのX値を1に設定すると、上記のcenter()関数は結果として0の値を返します。

さらに例を挙げます:
center(-10 , -5)  は -7.5 の値を返します。
center(2 , 2)       は     2 の値を返します。
center(-8 , 2)      は   -3 の値を返します。

clamp (Value Limiter)

◇記述( Description)

 この関数は、チャンネル(またはサブエクスプレッション)の出力を指定された範囲内に制限します。最初の入力は何を制限するかです。2番目の入力は出力の最小値を決定し、3番目の入力は出力の最大値を決定します。
最初の入力が2番目と3番目の値の範囲内であれば、関数は最初の入力の値を返します。
そうでない場合は、2番目か3番目の入力値のどちらか近い方を返します。

clamp( InputA , InputB , InputC )

inputA にはチャネル、数値、またはサブエクスプレッションを指定できる。  
inputB にはチャネル、数値、またはサブエクスプレッションを指定できる。  
inputC にはチャネル、数値、またはサブエクスプレッションを指定できる。  

すべての入力は、標準入力変数(Time、Frame、Value)のいずれかを受け入れることができる。

◇サンプル(Example)

clamp(1,5,10)
 この例では、clamp()関数は結果として5の値を返します。

clamp(15,5,10)
 この例では、clamp()関数は結果として10の値を返します。

clamp( [カメラ.位置.Y) , 0 , 5 )
 カメラのY値を3に設定すると、上記のclamp()関数は結果として3の値を返します。
カメラのY値が0から5の間であれば、clamp()関数はその値をそのまま返します。値が2つ目の入力より低いか、3つ目の入力より高い場合にのみ、「クリッピング」や「クランプ」が発生します。

deg (Radians into Degrees)

◇記述( Description)

 この関数は、入力データが「ラジアン」であると仮定し、それを「度」に変換します。

deg( InputA )

inputA にはチャネル、数値、またはサブエクスプレッションを指定でき、標準入力変数(Time、Frame、Value)のいずれかを受け入れることができます。

◇サンプル(Example)

deg(l)
 この例では、deg()関数は結果として57.3という値を返します。

deg(3.1416)
 この例では、deg() 関数は結果として 180 を返します。

さらに例を挙げます:
deg(6.2632) は 360 の値を返す。
deg(1.570)   は   90 の値を返す。
deg(4.9323) は 270 の値を返す。

◇アプリケーション(Application)

 「ラジアン」と「度」は、どちらもさまざまな回転量を表します。ラジアンは複雑な数学計算で使用され、LightWave が内部的に回転値を保存する方法です。ほとんどの場合、「度」のみを使用する必要があり、特定の「数学関数」のみがラジアンの入力を必要とするか、ラジアンの出力を生成します。

以下は、ラジアンと度に関する技術情報です:

2*pi = 円のラジアンの数
pi = 半円のラジアンの数

pi = 3.1416

6.2632 = 円(1回転、360度)のラジアンの数
3.1416 = 半円(半回転、180度)のラジアンの数

1ラジアン=57.3度

fac (Factorial)

◇記述( Description)

この関数は引数*1の階乗*2を返します。

fac( InputA )

InputA にはチャネル、数値、またはサブエクスプレッションを指定でき、標準入力変数(Time、Frame、Value)のいずれかを受け取ることができる。入力変数(Time, Frame, Value)を受け取れることができる。

◇サンプル(Example)

fac(4)
 この例では、fac()関数は24という値を返します。4の階乗(数学で言うところの4!)は、4×3×2×1で表され、24に等しい。

fac(6)
 この例では、fac()関数は720という値を返します。6の階乗(数学で言うところの6!)は6 x 5 x 4 x 3 x 2 x 1と表され、720に等しい。

さらに例を挙げます:
fac(1) は 1 の値を返す。
fac(2) は 2 の値を返す。
fac(3) は 6 の値を返す。

floor (Round Value Down)

◇記述( Description)

 この関数は、浮動小数点数の入力値をその前の整数に切り捨てます。

floor( InputA )

InputA にはチャネル、数値、またはサブエクスプレッションを指定でき、標準入力変数(Time、Frame、Value)のいずれかを受け入れることができます。

◇サンプル(Example)

floor(3.3)
 この例では、3.3という値がfloor()関数に入力され、3.0という結果が返される。

floor(7.5)
 この例では、3.3 7.5 という値が floor() 関数に入力され、7.0 という結果が返されます。

さらに例を挙げます:
floor(1.1)   は  1.0 という結果を返す。
floor(35.9) は 35.0という結果を返す。
floor(4)      は      4という結果を返す。

frac (Fractional)

◇記述( Description)

 この関数は、引数の小数部分を返します。

frac( InputA )

InputA にはチャネル、数値、またはサブエクスプレッションを指定でき、標準入力変数(Time、Frame、Value)のいずれかを受け入れることができます。

◇サンプル(Example)

frac(3.3)
 この例では、3.3という値がfrac()関数に入力され、0.3という結果が返されます。

floor(73.09382) frac(73.09382)
 この例では、73.09382 という値が frac() 関数に入力され、0.09382 という結果が返されます。

mapRange (Value ReAssign)

◇記述( Description)

 この関数は、InputA に入力されたデータを、InputB と InputC の間で指定された値の範囲に基づいて「再マッピング」し、InputD と InputE の間の範囲の値を出力します。

mapRange( InputA , InputB , InputC , InputD , InputE )

InputA にはチャネル、数値、またはサブエクスプレッションを指定できる。  
InputB にはチャネル、数値、またはサブエクスプレッションを指定できる。  
inputC にはチャネル、数値、またはサブエクスプレッションを指定できる。  
inputD にはチャネル、数値、またはサブエクスプレッションを指定できる。  
inputE にはチャネル、数値、またはサブエクスプレッションを指定できる。  
すべての入力は、標準入力変数(Timet Frame、Value)のいずれかを受け入れることができる。

◇サンプル(Example)

mapRange(45,0,90,0,1)
 この例では、mapRange() 関数は結果として 0.5 という値を返します。入力範囲は 0 から 90、出力範囲は 0 から 1 に設定されています。
制御値を 0 と 90 の中間の 45 に設定すると、0.5 という出力値が返されます。

mapRange(-7.5,-10,-5,0,100)
 この例では、mapRange() 関数は結果として 50 という値を返します。入力範囲は-10から-5、出力範囲は0から100に設定されています。
制御値を-10と-5の中間である-7.5に設定すると、50という出力値が返されます。

* mapRange() は、制御入力が指定された入力範囲を上回ったり下回ったりしても、その出力値を制限しません。
mapRange() の出力値を制限するには、このセクションで説明する 'clamp()' 関数を参照してください。 

max (Value Comparison)

◇記述( Description)

 この関数は2つの入力を比較し、最も高い入力値と等しい結果を返します。

max( InputA , InputB )

inputA には数値、チャネル、またはサブエクスプレッションを指定できる。 
inputB には数値、チャネル、またはサブエクスプレッションを指定できる。 
どちらの入力も、標準入力変数(Timet Frame、Value)のいずれかを受け入れることができる。

◇サンプル(Example)

max(100,50)
 この例では、max()関数は結果として100という値を返します。

max( [Camera.Position.X] , [Light.Position.Y] )
 カメラのX値を10に設定し、ライトのY値を25に設定すると、上記のmax()関数は結果として25の値を返します。

さらに例を挙げます:
max(-125,20) は  20 の値を返す。
max(0,0)         は    0 の値を返す。
max(-20,-10)  は  -10 の値を返す。

min (Value Comparison)

◇記述( Description)

 この関数は2つの入力を比較し、最も低い入力値と等しい結果を返します。

min( InputA , InputB )

inputA には数値、チャネル、またはサブエクスプレッションを指定できる。 
inputB には数値、チャネル、またはサブエクスプレッションを指定できる。 
どちらの入力も、標準入力変数(Time 、Frame、Value)のいずれかを受け入れることができる。

◇サンプル(Example)

min(100,50)
 この例では、min()関数は結果として50という値を返します。

min( [Camera.Position.X] , [Light.Position.Y] )
 カメラのX値を10に設定し、ライトのY値を25に設定すると、上記のmin()関数は結果として10という値を返します。

さらに例を挙げます:
min(-125,20) は -125 の値を返す。
min(0,0)        は       0 の値を返す。
min(-20,-10)  は   -20 の値を返す。

mod (Modulo)

◇記述( Description)

 これは modulo*3 関数で、入力された最初の入力値を 2 番目の入力値で割った余りを返します(InputA / InputB )。

mod( InputA , InputB )

inputA には数値、チャネル、またはサブエクスプレッションを指定できる。 
inputB には数値、チャネル、またはサブエクスプレッションを指定できる。 
どちらの入力も、標準入力変数(Timet Frame、Value)のいずれかを受け入れることができる。

◇サンプル(Example)

mod(6,3)
 上記の例では、6が3で割られ、上記のmod()関数は結果として 2 0の値を返します。

mod( [Camera.Position.Y] , Time )
 上記の例では、カメラのY位置はTimeが進むにつれてどんどん小さな値に分割されていきます。カメラのY位置の値をTimeの値が割り切る度に0を返してリセットされます。
カメラのY位置を10に設定した場合、上記のmod()関数は1秒後に10 0、2秒後に5 0、3秒後に3.3 1 といった値を返します。

さらに例を挙げます:
mcd(8,8) は          1 0 の値を返す。
mcd(0,1) は             0 の値を返す。
mod(4,6) は 0.6667 4 の値を返す。

※このサンプルは間違っているようです。余りではなく商を返す内容になっています。
割られる数が割る数より小さい場合は商が0となり余りが割られる数と同じ数になります。例:3÷5=商0余り3 

逆算すると理解しやすくなります。割られる数の3 = 割る数の5 x 商の0 + 余りの3

pow (Power)

◇記述( Description)

 この関数は、最初の入力の値を受け取り、2番目の入力で指定された回数に基づいて、その値を乗算します。一般的な数学では、この処理は最初の入力に2番目の入力の「べき乗」を掛けると表現されます。

pow( InputA , InputB )

InputA には数値、チャネル、またはサブエクスプレッションを指定できる。 
InputB には数値、チャネル、またはサブエクスプレッションを指定できる。 
どちらの入力も、標準入力変数(Time、Frame、Value)のいずれかを受け入れることができる。

◇サンプル(Example)

pow(2,3)
 この例では、pow()関数は 2 にそれ自身を 3 回掛けるので、2 x 2 x 2となり、結果として8の値を返します。

pow(4,4)
 この例では、pow()関数は 4 にそれ自身を 4 回掛けるので、4×4×4×4となり、結果として 256 を返します。

さらに例を挙げます:
pow(2,1) は  2  の値を返す。
pow(1,8) は  1  の値を返す。
pow(3,3) は 27 の値を返す。

rad (Degrees to Radians)

◇記述( Description)

 この関数は、入力データが「度」であると仮定し、それを「ラジアン」に変換します。

rad( InputA )

inputA にはチャネル、数値、またはサブエクスプレッションを指定でき、標準入力変数(Timet Frame、Value)のいずれかを受け入れることができる。

◇サンプル(Example)

rad(57.3)
 この例では、rad()関数は 1 の値を返します。

rad(180)
 この例では、rad() 関数は 3.1416 の値を返します。

さらに例を挙げます:
rad(360) は 6.2832 の値を返す。
rad(90)   は 1.57     の値を返す。
rad(270) は 4.9323 の値を返す。

◇アプリケーション(Application)

"deg (Radians into Degrees)"関数と同じ内容です。そちらを閲覧してください。

random (Number Gen)

◇記述( Description)

 この関数は、InputAとInputBの範囲内にある乱数を返します。生成される数値は時間とともに変化します。

random( InputA , InputB )

inputA には数値、チャネル、またはサブエクスプレッションを指定できる。 
inputB には数値、チャネル、またはサブエクスプレッションを指定できる。 
どちらの入力も、標準入力変数 (Timet Frame, Value) のいずれかを受け付けることができる。

◇サンプル(Example)

ランダム(3,10)
 この例では、random() 関数はフレームごとに 3 から 10 までの範囲の乱数を返します(整数が入力されているので、返されるのは整数だけです)。

random(1.5,12.5)
 この例では、 random() 関数はフレームごとに 1.5 から 12.5 までの範囲の乱数を返します(浮動小数点数が入力されているので、浮動小数点数のみが返されます)。

randu (Seeded Number Gen)

◇記述( Description)

この関数は乱数を生成します。入力は乱数生成器のシード値で、実数でも整数でもよい。

randu( InputA )

inputA にはチャネル、数値、またはサブエクスプレッションを指定でき、標準入力変数(Time、Frame、Value)のいずれかを受け付けることができる。

◇サンプル(Example)

 randu()関数は、random()関数とよく似た動作をします。
唯一の違いは、「シード」値によって、生成される数字が常に同じ「乱数性」で繰り返されることが確約されることです。

* このセクションで説明する random() 関数を参照。

range (Boolean Output)

◇記述( Description)

 この関数は、最初の入力値が2番目と3番目の範囲内にあるかどうかを判定します。
最初の入力値が2番目と3番目の入力値の間にある場合、1に等しい結果が返されます。
最初の入力値が 2 番目と3番目の入力値の範囲にない場合は、0 の結果が返されます。

range( inputA , inputB , inputC )

inputA には数値、チャネル、またはサブエクスプレッションを指定できる。 
inputB には数値、チャネル、またはサブエクスプレッションを指定できる。 
inputC には数値、チャネル、またはサブエクスプレッションを指定できる。 
すべての入力は、標準入力変数(Time、Frame、Value)のいずれかを受け入れることができる。

◇サンプル(Example)

range(5,0,10)
 この例では、range()関数は結果として 1 の値を返します(5は0と10の間です)。

range( [Camera.Rotation.H] , 0 , 90 )
 カメラのHeadingの値を180に設定すると、上記のrange()関数は結果として0を返します(180は0と90の間にありません)。

さらに例を挙げます:
range(7,7,15)   は 1 の値を返す。
range(-5,0,4)    は 0 の値を返す。
range(10,4,10) は 1 の値を返す。

round (Up or Down)

◇記述( Description)

 この関数は、最初の入力を 2 番目の入力で指定された小数点以下の桁数で丸めます。(四捨五入)

round( InputA , InputB )

inputA には数値、チャネル、またはサブエクスプレッションを指定できる。 
inputB には数値、チャネル、またはサブエクスプレッションを指定できる。 
どちらの入力も、標準入力変数 (Timet Frame, Value) のいずれかを受け付けることができる。

◇サンプル(Example)

round(10.3333,2)
 この例では、round()関数は結果として10.33という値を返します。

round(5.5555,0)
 この例では、round() 関数は結果として 6 という値を返します。

さらに例を挙げます:
round(4.3555,1) は 4.4     を返します。
round(2.5533,3) は 2.553 を返します。
round(3.0001,2) は 3.00   を返す。

selector (Conditional)

◇記述( Description)

 この関数は、1 番目と 2 番目の入力を比較します。もし1番目の入力値が2番目の入力値より小さければ、結果は3番目の入力値と等しくなります。
もし2 1 番目の入力値が1 2番目の入力値より小さくない場合は、結果は4番目の入力値と等しくなります。

selector( inputA , InputB , InputC , InputD )

InputA には数値、チャネル、またはサブエクスプレッションを指定できる。 
inputB には数値、チャネル、またはサブエクスプレッションを指定できる。 
inputC には数値、チャネル、またはサブエクスプレッションを指定できる。 
inputD には数値、チャネル、またはサブエクスプレッションを指定できる。 
すべての入力は、標準入力変数(Timet Frame、Value)のいずれかを受け付けることができる。

◇サンプル(Example)

selector(1,2,100,500)
 この例では、selector()関数は結果として100の値を返します(1は2より小さいので
100が返されます)。

selector( [Camera.Position.Y) , [Light.Position.Y) , 50 , 100 )
 カメラ位置のY値を15に設定し、ライト位置のY値を10に設定すると、上記のselector()関数は結果として100の値を返します(15は10より小さい値ではないので、100が返されます)。

さらに例を挙げます:
selector(-15,-10,50,100) は   50 の値を返す。
selector(10,10,50,100)    は 100 の値を返す。
selector(5,-25,50,100)     は   50 100 の値を返す。

step (Conditional)

◇記述( Description)

 この関数は、1 番目と 2 番目の入力を比較します。もし1番目の入力値が2番目の入力値より小さければ、結果は3番目の入力値と等しくなります。
1番目の入力値が2番目の入力値より小さくない場合、結果は0に等しくなります。

step( InputA , InputB , InputC )

InputA には数値、チャネル、またはサブエクスプレッションを指定できる。 
InputB には数値、チャネル、またはサブエクスプレッションを指定できる。 
InputC には数値、チャネル、またはサブエクスプレッションを指定できる。 
すべての入力は、標準入力変数(時間、フレーム、値)のいずれかを受け入れることができる。

◇サンプル(Example)

step(0,1,50)
 この例では、step() 関数は結果として 50 という値を返します(0 は 1 より小さいので、50 が返されます)。

step( [Camera.Position.X) , 1 , [Camera.Position.X) )
 カメラ位置のX値を3に設定すると、上記のstep関数は結果として0を返します(3は1より小さい値ではないので、0が返されます)。

さらに例を挙げます:
step(1,1,50)      は   0 の値を返す。
step(-5,-1,50)   は 50 の値を返す。
step(-5,-25,50) は   0 の値を返す。

共通インフォメーション(アプリケーション(Application))

center/clamp/fac/floor/frac/mapRange/max/min/mod/pow/random/randu/range/round/selector/step

◇アプリケーション(Application)

****(各関数の名前) のような LScript 関数には多様性があり、便利な場面は無数にあります。この関数やその他の関数の使い方を完全に理解するには、このセクションにあるすべての 'LScript' 関数を確認してください。

 

リンク

本記事に戻る

lunarbor.hatenablog.com