#はじめに
11/30に深秋音祭というVRChatでのライブイベントがありました。そこでムービングライト(のようなシェーダー)を作って演出に参加しました。
「深秋音祭2019」DAY2Part2
— noriben🌕 (@noriben327) December 11, 2019
真夜中のキャラバンhttps://t.co/wIxXVQeV0y
VR空間上で手にカラーピッカーを持って色の変更をしたのですが、その部分をどのように実装したのか説明していこうと思います。
今回はシンプルにカラーピッカーで色の変化するオブジェクトを作ります。
完成形はこれです。虹色の板は適当につくったテクスチャです。
カラーピッカー #Unity pic.twitter.com/CVcpCvIwpa
— noriben🌧️ (@noriben327) December 11, 2019
#おおまかな流れ
カメラでオブジェクトの色を取る。その色をレンダーテクスチャにして、オブジェクトのテクスチャに割り当てる。
基本はこれだけです。
#色情報の取得
カメラを使います。
ProjectionをOrthographicに、Sizeを0.001と小さくして、ほぼ点として取得するようにします。
#色情報の保存
レンダーテクスチャを使います。
レンダーテクスチャを作成しCameraのTarget Textureに割り当てます。
ポイントはレンダーテクスチャのサイズを1x1として1ピクセルの色情報だけ使うようにします。Filter ModeはPointにしたほうが補完されることによる色の濁りがないようです。
#色情報の受け渡し
ここまででカメラで取得した
色情報がテクスチャとして保存されているので、そのテクスチャを色を変化させたいオブジェクトのマテリアルに割り当てます。
これでカメラで取得した色にあわせてオブジェクトの色が変化します。
#シェーダーで応用
今回作ったのは単にオブジェクトの色が変わるだけのものですが、色というのはRGBの3つの数字なので、それをシェーダーのパラメーターとすることで応用がききます。
例えばオブジェクトの拡大縮小のパラメータにしてみたり、エフェクトのかかりぐあいを変化させたり・・。
(ARGB32のフォーマットだとチャンネルあたり8bitの解像度しかないのには注意)
#最後に
VR空間では「手に持つ」ということができるので、今回のようなカラーピッカーと非常に相性が良いと思います。Unity上ではフーン・・・という感じでもVR空間上で操作すると楽しいです。
遊んでいるうちにもしかしたらVR空間でのVJや演出の楽しさにハマってしまうかも?(自分はハマりました)