Remapのお勧めな使用方法
テクニカルアーティストの石井です。
我々LATEGRAが作るXRライブの仕事はクオリティの高さに加え、現場での迅速な対応力の高さも求められる仕事です。
自身も入社当初は何も考えずに演出を組んで痛い目を見ていました。
直ぐに修正出来る前提で演出を組むにはどうすれば良いのか?に関してチームは常日頃考えており、各位それぞれオリジナルのアイディアを持っています。
今回は自分のRemapに関する小技を紹介します。
Remapとは?基本的な使い方
~Remapとは~
Remap(Value, float from1 , float to1 , float from2 , float to2 )
{
return (value - from1) /( (to1 - from1) * (to2 - from2) + from2);
}
入力値(Value)に対しての最大値(float from1)と最小値(float from2)に対して設定した最大値(float to1)最小値(float to1)に置換する。
例えば、valueが0~100の最大最小値を持つfloat値であり0~1のfloat値に置換をしたい場合、float from1は0 float from2は100 float to1は0 float to2は1である。
よって、valueが50の値の場合は返される値(return)は0.5である。
~基本的な使い方の例~
例1
ColorのAlphaの値(0~255)を0~1の間でRemapし、float値(0~1のスライダー)扱いやすくする例。
0~1のスライダー操作にすることで、Timelineでのキーフレーム操作がしやすい。
例2
MIDI信号(0~127)をC#側からshaderに送り、上記の例同様Alphaに適応させた例。
覚えておくとちょっと幸せになれる使い方
例1
BaseColorのEmisiion値をコントロールする際、間にRemapを使い、Output側の入力値を外側からアクセス出来るクラスにしてタイムラインのキーフレームを打ちなおす事無くEmisiion値をコントロール出来るようにした例
こうしておくことでタイムラインを弄ることがなくなり、現場での修正時間を大幅に減らすことができる。
修正が入りそうなパラメーターに関しては全てタイムラインを弄ることなく制御が出来るようにしておく事で柔軟な対応が可能になる一例。
例2
ParticleSystemを頻繁に使うのであれば是非行って頂きたい処理の一つであり、前回の例同様にParticleSystem内のanimationCurveの値の上限下限を変更することなく、修正対応が出来るようにした例。
必要であればInput側の値に関しても同様に Shader側で修正出来るようにしておくと楽である。
この記事が気に入ったらサポートをしてみませんか?