lunarborの備忘録

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

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

使用ソフト

  • Lightwave2020

条件ファンクション

Equal To

◇記述( Description)

 InputAがInputBと等しい場合はInputCを結果として返し、そうでない場合はInputDを返す。
InputA == InputB ? InputC : InputD
InputAには数値、チャネル、またはサブエクスプレッションを指定できる。
InputBには数値、チャネル、またはサブエクスプレッションを指定できる。
InputCには数値、チャネル、またはサブエクスプレッションを指定できる。
InputDには数値、チャネル、またはサブエクスプレッションを指定できる。

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

◇サンプル(Example)

[Camera.Rotation.P] == 90 ? 0 : [Camera-Rotation.P]

 上記の条件文は、CameraのPitchの値が90に等しければ0を返し、そうでなければCameraのPitchの値を返します。もしカメラのPitchの値が90に設定されていれば0を返し、45に設定されていれば45を返します。

[Light.Position.Y] == 0 ? 1 : 0

 上記の条件文は、ライトの ヘディング Y座標の値が 0 に等しい限り 1 の値を返し、そうでない場合は結果として0が返されます。ライトの Y座標の値が 0.75 に設定されている場合は 0 を返し、0 に設定されている場合は 1 を返します。

[LtFoot.Position.Y] == [RtFcot.Position.Y] ? 100 : 0

 この条件文は、LtFootとRtFootのY座標の値が等しいかどうかを判断し、等しければ100を返し、等しくなければ結果として 0 が返されます。

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

 ほとんどの条件文は、入力されるデータの種類によって同じような動作をすることがあります。どのようにデータを操作すれば意図した結果が得られるのか、さまざまな条件関数のすべてに目を通すようにしてください。
ということで、EQUAL TOの応用例をいくつか挙げてみよう。ダンスフロアのライトアップを制御したい場合、両足が床についているときだけ、あるいは同じY値を共有しているときだけ、ダンスフロアのライトが点灯するような条件関数を作ることができます。
キャラクターが電気ショックを受けるアニメーションを作りたかったら、キャラクターの両手が2本のワイヤーの端に触れているときにショックエフェクトを起動する条件付き関数を作ることができます。

Greater Than

◇記述( Description)

 InputAがInputBより大きい場合はInputCを、そうでない場合はInputDを返す。

InputA > InputB ? inputC : InputD

InputAには数値、チャネル、Sub-expressionのいずれかを指定できる。
InputBには数値、チャネル、Sub-expressionのいずれかを指定できる。
InputCには数値、チャネル、Sub-expressionのいずれかを指定できる。
InputDには数値、チャネル、Sub-expressionのいずれかを指定できる。

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

◇サンプル(Example)

[Camera.Position.X] > 1 ? [Camera.Position.X] : 0
 上記の条件文は、カメラのX値が1より大きければ、その値を返し、そうでなければ、結果として0を返します。カメラのX値が3に設定されている場合は3が返され、1に設定されている場合は0が返されます。
[Light.Rotation.H] > 0 ? 1 : 0
 この条件文は、ライトのヘディング値が 0 より大きい場合に 1 を返し、そうでない場合に 0 を返します。ライトのヘディング値が 30 に設定されている場合は 1 を返し、-1 に設定されている場合は 0 を返します。

[LtFoot.Position.Y] > [RtFoot.Position.Y] ? [LtFoot.Position.Y] : [RtFcot.Position.Y]

 上記の条件文は、LtFcottsのY値がRtFootのY値より大きければそれを返し、そうでなければRtFootのY値を返す。LtFootのY値を30に設定し、RtFootのY値を45に設定すると、45という値が返されます。

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

 ほとんどの条件文は、入力されるデータの種類によって同じような動作をすることがあります。どのようにデータを操作して意図した結果を導き出すことができるのか、さまざまな条件関数のすべてに目を通すようにしてください。とはいえ、ここに応用例よりも優れた例がいくつかある。

もし、キャラクターの2つの足が決して床を通らないようにしたかったら、それぞれの足のY(軸の)値が床のY(軸の)値より大きい限り、その足のY(軸の)値を使う条件文を付けることができる。

もし、揺れている地面の上に座っているキャラクターが、腰*1を決して地面に通さないようにしたい場合、腰のY(軸の)値が床のY(軸の)値よりも大きい限り、腰のY(軸の)値を使用するという条件文を腰に付けることができる。

Greater Than or Equal To

◇記述( Description)

 InputAがInputBより大きいか等しい場合(以上)はInputCを、そうでない場合はInputDを結果として返す。

InputA >= Input3 ? InputC : InputD

InputAには、数値、チャンネル、またはSub-expressionを指定できる。
InputBには、数値、チャンネル、またはSub-expressionを指定できる。
InputCには、数値、チャンネル、またはSub-expressionを指定できる。
InputDには、数値、チャンネル、またはSub-expressionを指定できる。

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

◇サンプル(Example)

[Camera.Position.X] >= 1 ? [Camera.Position.X] : 0

 この条件文は、カメラのX(座標の)値が1より大きいか等しい(以上)場合は、その値を返し、そうでない場合は、結果として0を返します。
カメラのX(座標の)値が3に設定されている場合は3が返され、1に設定されている場合は1が返されます。

[Light.Rotation.H] >= 15 ? 1 : 0

 上記の条件文は、ライトのヘディング(回転の)値が 15 以上であれば 1 を返し、そうでない場合は 0 を返します。
もし、ライトのヘディング(回転の)値が 30 に設定されている場合は1を返し、15 に設定されている場合は、1 を返します。

[LtF00t.Position.Y] >= [RtF00t.Pcsition.Y] ? 100 : 0

 この条件文は、LtFootのY(座標の)値がRtFootのY(座標の)値より大きいか等しい(以上)場合であれば100を返し、そうでなければ0を返します。

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

 ほとんどの条件文は、入力されるデータの種類によって同じような動作をすることがあります。どのようにデータを操作して意図した結果を導き出すことができるのか、さまざまな条件関数のすべてに目を通すようにしてください。
ここでは、GREATER THAN(大なり)またはEQUAL TO(等しい)の応用例をいくつか紹介します。

もし、アイテムの位置(item Position)とバリアエフェクト(影響のある境い目、障壁)を比較してライトを点灯させたい場合、アイテムの位置を監視し、バリアの前にあるか、バリアに触れている場合にライトを点灯させる条件関数を作成できます。

もし、3D(CGで作成した)自動車のタイヤがどのようにダストパーティクルを放出するかを制御したい場合、条件関数を使用して、タイヤが地面に接しているか下にあればパーティクルを生成し、上にある場合はパーティクルの生成を停止するように"パーティクルエミッター"に指示できます。

Less Than

◇記述( Description)

 InputAがInputBより小さい場合はInputCを、そうでない場合はInputDを返す。

InputA < InputB ? InputC : InputD

InputAには、数値、チャンネル、またはSub-expressionを指定できる。
InputBには、数値、チャンネル、またはSub-expressionを指定できる。
InputCには、数値、チャンネル、またはSub-expressionを指定できる。
InputDには、数値、チャンネル、またはSub-expressionを指定できる。

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

◇サンプル(Example)

[Camera.Position.X] < 1 ? [Camera.Position.X] : 0

 上記の条件文は、カメラのX(座標の)値が1より小さい(未満)場合、カメラのX(座標の)値を返し、そうでない場合は結果として0を返します。もし、カメラのX(座標の)値が-3であれば-3、1であれば0を返します。

[Light.Rotation.H] < 30 ? 0 : 1

 上記の条件文は、ライトのヘディング(回転の)値が 30 未満であれば 0 を返し、そうでなければ 1 を返します。もし、ライトのヘディング(回転の)値が15に設定されていれば0を返し、45に設定されていれば1を返します。

[LtFoot.Position.Y] < [RtFoot.Position.Y] ? [LtFoot.Pcsition.Y] : [RtFcot.Position.Y]

 上記の条件文は、LtFcotのY(座標の)値がRtFootのY値より小さければLtFcotのY値を返し、そうでなければRtFootのY(座標の)値を返す。
もし、LtFootのY値を15に設定し、RtFcotのY値を7に設定すると、7という値が返されます。

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

 ほとんどの条件文は、入力されるデータの種類によって同じような動作をすることがあります。データをどのように操作して意図した結果を導き出すことができるのか、様々な条件関数をすべて目を通しておくようにしてください。とはいえ、以下にLESS thanの応用例をいくつか挙げます。

もし、シーン内のライトを作動させる3D(CGの)レバーを作りたかったら、レバーのピッチ(回転の値)が45度より小さいか大きいかによって、0か100のどちらかを出力する条件関数を作ることができます。

もしアニメーションさせた破城槌が城門を通らないようにしたい場合、門のZ(座標の)値より小さい限り、破城槌のZ(座標の)値に等しい値を返す条件を、破城槌のZ(座標の)値に付けることができます。

Less Than or Equal To

◇記述( Description)

 InputAがInputBより小さいか等しい場合はInputCを結果として返し、そうでない場合はInputDを返す。

InputA <= InputB ? InputC : InputD

InputAには、数値、チャンネル、またはSub-expressionを指定できる。
InputBには、数値、チャンネル、またはSub-expressionを指定できる。
InputCには、数値、チャンネル、またはSub-expressionを指定できる。
InputDには、数値、チャンネル、またはSub-expressionを指定できる。

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

◇サンプル(Example)

[Camera.Position.X] <= 1 ? [Camera.Position.X] : 0

 上記の条件文は、カメラのX(軸の)値が1より小さいか等しい(以下)限り、カメラのX(軸の)値を返し、そうでない場合は結果として0を返します。
もし、カメラのX(軸の)値が-3であれば-3、1であれば0を返します。

[Light.Rotation.H] <= 15 ? 1 : 0

 上記の条件文は、ライトのヘディング(回転の)値が 15 以下であれば 1 を返し、そうでない場合は 0 を返します。
もし、ライトのヘディング(回転の)値が 10 に設定されている場合は 1 を返し、15 に設定されている場合は 1 を返します。

[LtF00t.Position.Y] <= [RtF00t.Pcsition.Y] ? 100 : 0

 上記の条件文は、LtFcotのY値がRtFootのY値より小さいか等しい場合は100を返し、そうでない場合は0を返します。

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

 ほとんどの条件文は、入力されるデータの種類によって同じような動作をすることがあります。
どのようにデータを操作すれば意図した結果が得られるのか、様々な条件関数のすべてに目を通すようにしてください。
とはいえ、以下にLESS THANまたはEQUAL TOの応用例をいくつか挙げてみよう。

もし、アイテムの位置(item Position)とバリアエフェクト(影響のある境い目、障壁)を比較してライトを点灯させたい場合、アイテムの位置を監視し、バリアの後ろにあるか、バリアに触れている場合にライトを点灯させる条件関数を作成できます。

もし、3D(CGで作成した)自動車のタイヤがどのようにダストパーティクルを放出するかを制御したい場合、条件関数を使用して、タイヤが地面のY(軸の)値と同じか下にある場合にのみパーティクルを放出するように"パーティクルエミッタ"に指示できます。

Not Equal To

◇記述( Description)

 もしInputAがInputBと等しくなければInputCを、そうでなければInputDを返す。

InputA !=? InputB ? InputC : InputD

InputAには、数値、チャンネル、またはSub-expressionを指定できる。
InputBには、数値、チャンネル、またはSub-expressionを指定できる。
InputCには、数値、チャンネル、またはSub-expressionを指定できる。
InputDには、数値、チャンネル、またはSub-expressionを指定できる。

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

◇サンプル(Example)

[Camera.R0tation.P] !=? 90 ? 0 : 1

 上記の条件文は、カメラの Pitch(回転の値)が90と等しくなければ0を返し、等しければ1を返します。もし、カメラの Pitch(回転の値)が 90 に設定されている場合は 1 を返し、45 に設定されている場合は 0 を返します。

[Light.Position.Y] !=? 7 ? 1 : 0

 上記の条件文は、ライトの ヘディング  Y (軸の)値が 7 と等しくない場合は 1 を返し、等しい場合は 0 を返します。
もし、ライトの Y (軸の)値が 15 に設定されている場合は 1 を返し、2 に設定されている場合は 1 を返します。

[LtFoot.Position.Y] !=? [RtFoot.Position.Y] ? 100 : 0

 上記の条件文は、LtFcottsとRtFcottsのY(軸の)値が互いに等しくないかどうかを判断し、等しくない場合は100の値が返され、等しい場合は0の値が返されます。

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

 ほとんどの条件文は、入力されるデータの種類によって同じような動作をすることがあります。 どのようにデータを操作して意図した結果を導き出すことができるのか、さまざまな条件関数のすべてに目を通すようにしてください。ということで、NOT EQUAL TOの応用例をいくつか紹介します。

パーティクルエフェクトを制御して、アイテムが一定の位置にないときはパーティクルを放出し、アイテムが特定の位置にあるときは放出を停止するようにしたい場合。

ダンスフロアのライトアップを制御したい場合、両足が床についていないとき、または同じY(軸の)値を共有していないときに、ダンスフロアのライトアップを解除する条件関数を作成できます。

リンク

メインの記事に戻る。

lunarbor.hatenablog.com