こんにちはっ🌟八ツ橋まろんです
最近作っていたレーザーライトシェーダーが完成したのでFANBOXで支援者向けに配布します。
付属のスクリプトを使ってTimelineで制御する前提で作っていますが、一応ポン置きしてVRChatでも使えるようにアニメーション付きのサンプルも用意しています。
以下は、VRChat向けのアニメーション付きサンプルシーン
レーザーライトシェーダーは、シェーダーによって頂点位置を制御して作っているため、同梱のメッシュ(LaserLine)でのみ動作可能です。
LaserLineメッシュは、一見すると棒ですが、64本の棒が重なっています。これを頂点位置を計算して変更して、レーザーにしています。
実は棒の他に小さい四角が遠方にたくさんあります。これはカメラのフラスタムカリングで描画を無視されないためのダミーです。
このメッシュにレーザーライトシェーダーを充てることでレーザーの見た目になります。
レーザーライトシェーダーの設定項目は以下の通りです。
Emission Color 0~7: レーザーを8つの区画に分けて、線形補完してグラーデーションを作ります。
Intensity: レーザーの明るさです
Alpha: レーザーの透明度です
Shape: Arcは扇形、Coneはコーン型です
Thickness: レーザーの太さです
Line Count: レーザーの数です。最大64本
R: レーザーの長さです。単位はm
Phi: 扇形やコーン型の幅です。単位は度
Tilt: 上下の角度です
Random Position: レーザーを疑似ランダムな位置に出現します
Rotation: レーザーが回転します。基本的にスクリプトから動かすパラメータですが、VRChatで使いたいときは、このパラメータをアニメーションでループさせて動かします。
Scroll: スクロールのオンオフです。
Scroll offset: レーザーがスクロールします。基本的にスクリプトから動かすパラメータですが、VRChatで使いたいときは、このパラメータをアニメーションでループさせて動かします。
Sweep mode: スイープモードでスクロールさせます。
Scroll Symmetry: スクロールを左右対称にします。
Scroll Reverse: スクロールを反転させます。
Fix both ends of Arc: 扇形の際に、両端を固定します。
Random Seed: ランダムポジションのシード値です。
付属スクリプトで制御する場合、まずはLaser Light ControllerをHierarchyのGameObjectにアタッチします。
======================================================
Material List: パラメータを変更したいマテリアルをセットする
Shape: Arcは扇形、Coneはコーン型のレーザーライトになる
Thickness: レーザーの太さ
Line Count: レーザーの数。最大64本
Cycle BPM: BPM設定
Cycle Offset: BPMの時間合わせですが、ほぼTimelineから設定する用のパラメータです
Phi: 扇形やコーン型の広さです。単位は度
Phi Curve: BPMの間隔で、Phi * Phi Curveの軌跡をたどります。
Phi Beat Factor: BPMの時間間隔に対してこの倍数を掛けます。たとえば、120BPMだと0.5秒のサイクルでPhiが増減しますが、Phi Beat Factorを2にすると0.5*2=1.0秒間隔でPhiが増減します。
Tilt: 上下の角度です
Tilt Curve: (Phi Curveと同様)
Tilt Beat Factor: (Phi Beat Factorと同様)
Is Random Position: 疑似ランダムな位置にレーザーを配置します。
Is Rotation: 扇型やコーン型が回転します。
Rotation Beat Factor: (Phi Beat Factorと同様)
Is Line Scroll: レーザーがスクロールします
Line Scroll Beat Factor: (Phi Beat Factorと同様)
Is Sweep: 一定スピードのスクロールではなく、出現と消失を繰り返すSweepモードです
Symmetry Line Scroll: 左右対称のスクロールにします
Reverse Line Scroll: スクロールを反転します
Fix Arc Ends: 扇形の場合に、両端を固定します
Random Seed: ランダム配置のときのシード値です
=========================================================
Timelineで制御する場合、Timelineの左上の+ボタンからStudioMaron > Laser Light Trackでトラックを追加します。
Laser Light Controllerを対象にセットして、Add Clipでクリップを置きます。クリップの設定項目は、Laser Light Controllerと同じです。
また、レーザーの色をEmission Color Controller(以前配布したLight Color Controllerに同梱)で制御することもできます。
※既にEmission Color Controllerを導入している人は、アップデートしてください。レーザーライトに対応するためにEmission Color Controllerを更新しています。
以下はTimelineを使った制御の一例です
ぜひ使ってみてください💡
以上、レーザーライトシェーダーの紹介でした。それではっ🌟