こちらの記事で紹介している、ライト演出の制御スクリプトの詳細な使い方です。
配布ページはこちら(支援者向け)
unitypackageは通常のUnity(Built-in)と。HDRPのUnity用の2種類があります。プロジェクトに適した方を使ってください。
また、これを実際に使ってライト演出を作る動画をYouTubeにアップしているので、参考にしてみて下さい。
適当なGanmeObjectにLight Color Controllerコンポーネントを付けます。
Light Color Controllerは、指定したLightコンポーネントの色と強度を一括で変更するスクリプトです。
Light List: 色・強度操作をしたい対象のライトのリスト
Bese Intensity: ライトの強度
Gradient Color: ライトの色。どのライトにどの色を割り当てるかは下のパラメータで決まる。
Gradient Mode: 以下の3モードでライトの色を決める
Line: Light Listの上から順番にGradient Colorの色を左から割り当てる。上の図だとLight Listの若い番号は水色、大きい番号はピンクになる。
Sync: 全てのLight Listに同じ色を割り当てる。デフォルトでは真ん中の色が割り当てられる。
Random: Random Seedの値を使った疑似ランダムで、Gradient Colorの中からランダムで色を割り当てる。
Gradient Value: 上記のGradient Modeの値をずらす。例えばSyncの場合、上記の例では全ての色が中心の紫色(Gradient Value = 0.5)になるが、Gradient Valueを小さくすると水色に、大きくするとピンクになる。
Random Seed: Gradient ModeがRandomの時の疑似ランダムを決定するシード値。気に入った配色になるまで好きに動かそう。
Reference: Timelineで制御するときにUse Referenceモードを使う場合に設定するリファレンス。詳しくは後述する。
※Light Color Controllerは再生しなくても動作し、インスペクタの数値を編集するたびにライトの色・強度を即時適用する。
※Light Flash ControllerとLight Gobo Controllerについては後述するが、Timeline制御をしない場合は特に何も作用しない。
Light Color Controllerを使うと、シーン中に配置したライトの色・強度の編集が簡単になる。
また、右上の三点ボタン(…)からGet light component from childrenを押すと、子オブジェクトからLightコンポーネントを自動で検索してLight Listを作成できる。
いま説明したLight Color Controllerは、Timelineで制御できる。
(Timelineの左上から、StudioMaron > Light Color Trackでトラックを追加)
Light Color Trackで使うClipは、以下のようにTimeline上で色がわかるようになっている。
Clipのパラメータ説明は以下の通り。
Intensity Multiplier: ライト強度の係数。Light Color ConrollerのBase Intensityに、この数値を掛け算した強度を適用する。
Gradient Color: Light Color Conrollerと同じ設定項目
Gradient Mode: Light Color Conrollerと同じ設定項目
Gradient Value: Light Color Conrollerと同じ設定項目
Color Scroll BPM: Gradient Colorをスクロールする基本BPM
Color Scroll Beat: この数値×BPMから計算した時間でGradient Colorを1周スクロールする。例えば、BPM 120、Beat 4なら、BPM120のタイミングで4拍ごとにGradient Colorが1周する。
Reverse Scroll: スクロールの向きを逆にする
Override Random Seed: ランダムのシード値を上書きする
Random Seed: 上書きするシード値
Operation Mode: 以下の3つのモードで色・強度を決定する
Default: このClipに設定してあるパラメータのみを使う
Use Reference: リファレンスに設定してあるパラメータのみを使う
Mix Reference: リファレンスとミックスした出力を使う
Mix Weight: Mix Reference時のミックス係数
リファレンスの設定方法は以下。
適当なGameObjectにLight Color Referenceコンポーネントを付け、インスペクタのLight Color Controllerに、リファレンスとして扱うLight Color Controllerを入れる。
Use ReferenceやMix Referenceを使いたいLight Color ControllerのインスペクタのReferenceに、上記のLight Color Referenceをセットする。
これで、上の画像で言うとLight Color Controller BとCが、TimelineでUse ReferenceやMix Referenceを使うことができ、リファレンスとしてAのパラメータが参照される。
Use Referenceは、ライトをいくつかのグループで制御していて『大抵は同じ色制御をするが、たまに違う色を使いたい場合』に重宝する。Use Referenceを使っている部分はリファレンス1行だけ編集すればいいので、Timelineの作成作業が楽になる。
Mix Referenceはキャラクター専用ライトに使う。キャラクターは別途ライトを作成することが多く、例えば演出が真っ赤のライトであっても、キャラクターには薄い赤を当てた方が見栄えが良いケースが多い。Mix Referenceで白色と混ぜるようにすれば、キャラクターライトの作成が楽になる。
Light Color Trackと併用して、Light Flash Trackを使って追加でライト強度の制御ができる。
(Timelineの左上から、StudioMaron > Light Flash Trackでトラックを追加)
Light Flash Trackは、Light Flash ControllerをTimelineから制御する。
(Light Color Controllerと一緒に付与されるコンポーネント)
Clipに加え、マーカー(Marker)を置くこともできる。(上画像の緑矢印の箇所)
マーカーは、トラック上で右クリック > Add Light Flash Markerで置ける。
マーカーを通過すると、マーカーのフラッシュ設定によってライトに対し単発のフラッシュが発生する。
Flash Intensity: フラッシュの強さ。現在のLight Color Controllerのパラメータにこの数値を掛けた強度のフラッシュを発生する。
Flash Time: フラッシュ終了までの時間。
※対象はLight Color Controllerに設定されているLight Listのライト全て
Clipの設定では、モードとBPMに応じて自動でライト強度が操作される。対象はLight Color Controllerに設定されているLight Listのライト全て。
Flash Mode: 以下の7つのモードがある。
None: ライト強度を操作しないモード。上記のマーカーは別計算なので反応する。
All: 全てのライトをBPMとFlash Curveで強度操作する。
Line: ライトを順番にFlash Curveに左から当てはめたライト強度にし、BPMでスクロールする
Switch: ライトを偶数番号と奇数番号に分け、BPMで交互に点灯する。点灯時の強度はFlash Curveに従う。
Split_3: ライトをランダムに3つのグループに分け、BPMで1グループずつ点灯する。点灯時の強度はFlash Curveに従う。ランダムのシード値は後述のパラメータで調整できる。
Random Switch: ライトを指定の割合だけランダムに点灯する。素早くランダムに点灯したいときに使う。ランダムのシード値は後述のパラメータで調整できる。
Use Reference: リファレンスと同じパラメータで強度操作する。Light Color Controllerと同じリファレンスを使用する。
Flash BPM: フラッシュのBPM
Flash Every Beat Number: この数値×BPMで算出した時間毎にサイクルする。例えば、Flash ModeがAllでBPM 120、Beat Number 4の場合、120BPMの4拍ごとにFlash Curveが1周する。
Time Adjust: BPMの開始タイミングを微調整できる。楽曲に合わせた調整に使う。
Random Switch Rate: Random Switchの時に点灯する割合を決める。
Random Seed: ランダムのシード値
Light Color Controllerと一緒に付与されるLight Gobo ControllerをTimelineで制御するのがLight Gobo Track。
(Timelineの左上から、StudioMaron > Light Gobo Trackでトラックを追加)
Gobo(ゴボ)というのは、照明業界でライトに図形・模様をつけるフィルターのこと、またはフィルターの付いたライトのことを指すようだ。
写真の方面ではCookie(クッキー)ともいうらしい。UnityのLight コンポーネントにもCookieという項目があり、これでライトの模様を作れる。
このスクリプトは照明制御を目的としているので、Goboという呼び方を採用した。
サンプルのテクスチャをいくつか同梱している。
Clipの項目説明は以下の通り。
Texture Mode: 以下の2種類で動作する。
Order: Light Color ControllerのLight Listに対して、このClipのGobo Textureを順番に割り当てる。数が足りない場合は繰り返しループする
Random: Gobo Textureにセットしてあるテクスチャをランダムに割り当てる。ランダムのシード値は変更可能。
Random Seed: ランダムのシード値
Gobo Texture: 割り当てたいテクスチャリスト。もしライト5個に対して3番目だけGoboを適用したい場合、Gobo Textureを5にして3番目だけテクスチャを入れ、残りは空欄でよい。
Rotation Mode: 以下の動作モードでGoboを回転することができる。
None: 回転なし。何もしない。
Constant: 全てのGoboを同じスピードで回転する
Odd Reverse: 偶数番目と奇数番目のGoboで回転が逆になる
Half Reverse: ライト番号の真ん中で回転が逆になる。ちょうど真ん中の番号の場合、回転しない。例えばライトが7つの場合、4番目のライトは回転しない。
Rotation Speed: 回転スピード
※ただし、テクスチャを回転しているわけではなくLightコンポーネントのついたGameObjectを回転して疑似再現していることに注意。
また、GoboのClipは他と違い混ぜることができず、単純な切り替えしかできないことに注意。
また、GoboテクスチャをセットしたことによりHDRPでメモリ不足のエラーが出たときは、Project SettingsでCookie Resolutionの数字を大きくしてください。
(Cookieのために確保するメモリ量が増えるようです)
Emission Color Controllerコンポーネントを使うと、マテリアルのエミッションを制御できる。ライブ制作ではLightコンポーネントをたくさん使うのではなく、疑似ライトを使うことが多い。
例えば下の画像はBuilt-inのUnity(通常のUnity)でよく使うビームライトシェーダーで、ライトとして照らす機能はないが、描画負荷が軽量で雰囲気を作ることができる。
Emission Color Controllerの使い方や考え方はLight Color Controllerと同じ。
Material List: 色操作をするマテリアルのリスト
Shader Key Word: 色操作をしたいシェーダーキーワード。たとえばStandardシェーダーなら『_EmissionColor』、HDRPのLitシェーダーなら『_EmissiveColor』、上記で紹介したNoribenBeamLightシェーダーなら『_Color』といった名称となる。
キーワードの見つけ方は後述。
Base Intensity: Light Color Controllerと同じ設定項目
Gradient Color: Light Color Conrollerと同じ設定項目
Gradient Mode: Light Color Conrollerと同じ設定項目
Gradient Value: Light Color Conrollerと同じ設定項目
Emission Color ControllerもTimelineから制御できる。
(Timelineの左上から、StudioMaron > Emission Color Trackでトラックを追加)
Emission Color Trackで使うClipはLight Color Trackで使うClipと同じにしているため、Trackをまたいで複数選択して同時編集が可能。
また、Referenceの設定も同様で、同じLight Referenceを参照することができる。
もし、Emission Color Controllerをリファレンスにしたければ、Light ReferenceのController Typeを変更するとよい。
シェーダーキーワードを確認するには、インスペクタの右上の三点ボタン(…)を押し、Debugモードを押す。
マテリアルを見て、Saved Propertyiesの中から、操作したいColorを選んでシェーダーキーワードを見つける。下の画像はStandard Shaderの例
Emission Color ControllerにはLight Flash Controllerも一緒に付与されているので、Light Flash Trackによるフラッシュ操作も可能である。使い方は既に書いた通りであるため、説明は割愛する。
ここからは、ライトの角度についてです。ムービングライトの向きを制御するスクリプトLight Angleのセットアップと、これを一括コントロールするLight Angle Controller、そしてこれをTimelineから制御するLight Angle Trackについての説明です。
ムービングライトというのはPan(パン)とTilt(チル)で角度制御できる電動のライトです。
[Gif: Pan操作↓↓]
[Gif: Tilt操作↓↓]
大抵のムービングライトは、階層構造でPanとTiltをそれぞれ回転できるようにしています。
Light Angleコンポーネントを付与しPan、Tiltの項目を設定すれば、スライダーの操作により回転の制御ができるようになります。
Tilt: Tiltに相当するオブジェクトを割り当てる。
Rot Axis_Tilt: Tiltで回転させたいローカル軸を選択する。下の画像のように、Tiltのオブジェクトを選択した状態で回転の向きを確認する。下の画像の場合、TiltとしてはローカルのX軸を回転させたいので、Rot Axis_Tiltは『X』を選択する。
Init Rot_Tilt: Tiltオブジェクtの初期角度を設定する。下の画像のようにTiltが上向きの時の、TiltオブジェクトのRotationの値を入れる。Blenderなどでモデルを作った場合、これが(90,0,0)のようなケースも多いので、その差を吸収するためである。
Debug Tilt: チェックを入れると、Debug Tilt Angleに従ってTiltを回転させる。
動作確認用のため、使わない時はチェックを外すこと。(他のスクリプトでの制御を邪魔するため)
Debug Tilt Angle: デバッグ用の角度。Unity再生中でなくとも即時反映される。
Pan: Panに相当するオブジェクトを割り当てる。
Rot Axis_Pan: Tiltの説明と同じ
Init Rot_Pan: Tiltの説明と同じ
Debug Pan: Tiltの説明と同じ
Debug Pan Angle: Tiltの説明と同じ
以下、Look At Targetの項目説明をしますが、複雑なのでよく読んで下さい。
ムービングライトは可動域が広いため、特定のオブジェクトに向ける『Look At機能』を使いたいことがよくあります。PanとTiltを組み合わせて指定の方向を向く計算は割と複雑なのですが、前述のようにムービングライトのモデルによって回転角や初規角度が違うと一律で扱うのが難しいです。そこで、次に説明するLook At Axis Adjust_TiltとLook At Axis Adjust_Panのパラメータを使って、違うモデルでも簡単に向き合わせができるようにしました。以下は、その向き合わせのやり方の説明です。
※上記のPan、Tiltの設定と動作確認が完了していることが前提です
まず、適当なオブジェクト(CubeやSphereがわかりやすい)をDebug Look At Target (以下ターゲット)に割り当てます。
次に、Debug Look Atのチェックを入れます。すると、PanとTiltが即座に回転し、ターゲットの方向を向きます。正しく向いていない時は、Look At Axis Adjust_Tiltを動かしてみましょう。0~5の整数だけ動かせる(全6パターン)ので、その中で、Tiltが正しくターゲットを向いている数字が、そのモデルの正解の数字です。
Tiltが正しく設定出来たら、次はLook At Axis Adjust_Panを動かして、正しい向きになる数字を見つけます。(0~11の12パターン)
Panは、正しい向きになるパターンが2つでてくるときがありますが、片方は前と後ろが逆になったパターンなので、正しい方を選びましょう。ただ、前後をあまり気にしないモデル形状の場合はどちらでもいいです。
以上で、Look At Targetの設定および、Light Angleコンポーネントの設定が全て完了です。Debug Look Atのチェックを外しておきましょう。
適当なGameObjectにLight Angle Controllerを付与する。
Light Angle Controllerは、Light Angleを一括で制御することができ、後述のLight Angle TrackでTimelineからも制御できる。
シーン再生時にLight Angle Controllerのインスペクタで設定した動作で動くようになっているので、一定の動作でよければTimelineを使わなくても動かせる。
Light Angle List: 制御したいLight Angleのリスト
Look At Target: Look At Targetモードでターゲットにするオブジェクト
Operation Mode: 動作モード(全部で9つ)。Timelineで制御する場合は設定しなくてもいい。Timeline制御しない場合、ここで指定したモードがシーン再生中実行される。
Reference: リファレンスモードを使用する場合のリファレンス
Operation Mode別の動作とパラメータは以下の通り。前半4つはライブ演出にはあまり使えない動作モードかも。
None: 制御しない。パラメータもない。
All_Fixed: 全てのLight Angleに対して固定のPan、Tiltを適用する。
Tilt: チル角度
Pan: パン角度
Noise Range: ランダムノイズで少し動かす強さ
Noise Speed: ノイズの速さ
Noise Random Seed: ランダムのシード値
Line_Fixed: ライトの番号順に固定のTiltを適用し、Vの字を作る。
Tilt: 最大のチル角度
Tils Asymmetry: Vの字ではなく一列にする場合チェックを入れる
Tilt Curve: 適用する角度のウェイト。これを編集すればVの字以外も作れるが、そこまでこだわりたい場面はあまりないかも。
Pan: ライト番号に応じてウェイトを変えてパンを適用し、扇形が作れる。
Noise Range、Noise Seped、Noise Random Seed: 割愛
このLine_Fixedモードはイメージしづらいかもしれない。下図のように、一列に並んだライトを使って左右対称のVの字を作るモードである。
また、Panを使うことで下図のような扇形が作れる。
Line_Fixedモードはライトの配置をするときに有用だが、ライブで動かす時にはあまり使わないと思う。
Random_Fixed: 指定した範囲内でランダムに固定のPanとTiltを適用する。
Tilt Range: この範囲内でランダムなチルを取り出す
Pan Range: この範囲内でランダムなパンを取り出す
Random Seed: ランダムのシード値
Noise Range、Noise Seped、Noise Random Seed: 割愛
Random_Fixedでは下図のようにライトごとにランダムに角度をつけて配置できる。
ここからはライブ演出に使いやすい動作モード↓↓↓↓
Rotation: パンがぐるぐる回転するモード
Tilt: チル角度
Cycle Time: パンが1周するのにかかる時間
Sync: 0だと全ライトがバラバラに回る。1だと一緒に回る
Reverse Rate: 反対向きに回るライトの割合
Random Seed: ランダムのシード値。バラバラに回るランダムさや、どのライトが反転するのかがこれで決まる。
Tilt_Wave: チル角度を動かしてウェーブするモード
Tilt Range: チルの動く範囲
Cycle Time: チルが1サイクルする時間
Sync: 0だと全ライトが順番に動く。1だと一緒に回る
Pan: Line_Fixedと同じく扇形を作れる
Search_Light: いわゆるサーチライト。ランダムっぽい動きでぐるぐる動かす。
Range: 動かす範囲
Speed: 動かすスピード
Random Seed: ランダムのシード値
Look At_Target: 指定オブジェクトの方向を向くモード
Look at offset: 指定のターゲット + このオフセットの場所を向く(ワールド座標で指定)
Noise Range、Noise Seped、Noise Random Seed: 割愛
Use Reference: リファレンスと同じ動作モードを使う。パラメータなし。
以上が、Light Angle Controllerの9つの動作モードである。
あと便利機能として、Light Angle Controllerの右上の三点(…)からGet LightAngle component from childrenを押すと、子オブジェクトの中からLight Angleコンポーネントを検索してリストを作成できる。
そして最後に、Light Angle ControllerはTimelineから制御できる。
(Timelineの左上から、StudioMaron > Light Angle Trackでトラックを追加)
Clipは、前述のOperation Modeと同じ項目が選択でき、パラメータも同じである。
Clip同士のMixもできるので、動作モードのシームレスな移行ができる。
以上、長くなったが、ライトの色と角度制御のスクリプトの詳細説明でした💡
これらを実践で設定して使う動画をYouTubeにアップしたので、よければ使ってみてください🌟