LoginSignup
12
5

More than 3 years have passed since last update.

Unityの機能を使ってVRChatで使えるカラーピッカーを実装する

Last updated at Posted at 2019-12-11

はじめに

11/30に深秋音祭というVRChatでのライブイベントがありました。そこでムービングライト(のようなシェーダー)を作って演出に参加しました。

VR空間上で手にカラーピッカーを持って色の変更をしたのですが、その部分をどのように実装したのか説明していこうと思います。

今回はシンプルにカラーピッカーで色の変化するオブジェクトを作ります。
完成形はこれです。虹色の板は適当につくったテクスチャです。

おおまかな流れ

カメラでオブジェクトの色を取る。その色をレンダーテクスチャにして、オブジェクトのテクスチャに割り当てる。
基本はこれだけです。

色情報の取得

カメラを使います。
ProjectionをOrthographicに、Sizeを0.001と小さくして、ほぼ点として取得するようにします。
adventcamera01.png

色情報の保存

レンダーテクスチャを使います。
レンダーテクスチャを作成しCameraのTarget Textureに割り当てます。
ポイントはレンダーテクスチャのサイズを1x1として1ピクセルの色情報だけ使うようにします。Filter ModeはPointにしたほうが補完されることによる色の濁りがないようです。

adventcamera02.png

色情報の受け渡し

ここまででカメラで取得した
色情報がテクスチャとして保存されているので、そのテクスチャを色を変化させたいオブジェクトのマテリアルに割り当てます。
これでカメラで取得した色にあわせてオブジェクトの色が変化します。

adventcamera03.png

シェーダーで応用

今回作ったのは単にオブジェクトの色が変わるだけのものですが、色というのはRGBの3つの数字なので、それをシェーダーのパラメーターとすることで応用がききます。
例えばオブジェクトの拡大縮小のパラメータにしてみたり、エフェクトのかかりぐあいを変化させたり・・。
(ARGB32のフォーマットだとチャンネルあたり8bitの解像度しかないのには注意)

最後に

VR空間では「手に持つ」ということができるので、今回のようなカラーピッカーと非常に相性が良いと思います。Unity上ではフーン・・・という感じでもVR空間上で操作すると楽しいです。
遊んでいるうちにもしかしたらVR空間でのVJや演出の楽しさにハマってしまうかも?(自分はハマりました)

12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5