vrchat-time-shaders
vrchat-time-shadersはVRChatのワールドに時間に関係するオブジェクトを追加するためのシェーダパッケージです。
- ダウンロード: vrchat-time-shaders
- 緑色の”Clone or download”をクリック→”Download ZIP”をクリック
- 導入方法: vrchat-time-shaders/wiki
- サンプルワールド: wrld_3efd0dcc-1bae-44b2-bba3-996038aa11b0
- APIエンドポイント: y23586.github.io/vrchat-time-shaders/api/v1/
- 解説(2018/7/22追記): こちら
動作原理
現在のVRChatでは現在時刻などの情報をVRCSDK等で直接取得することができないため、
- VRC_WebPanelで上記APIページをテクスチャとして表示
- ページ上のJSで時刻情報+αをRGB 3 bitでエンコード
- カメラでページをRender Textureにコピー
- シェーダでRGBから時刻情報をデコード、時計などを表示
という手順で実現しています。
VRC_WebPanelにはガンマ値がおかしくなるバグがある (あった?) ため、念のためにデジタル値でエンコードを行っています。
できること
- アナログ・デジタル時計 (プレハブ同梱)
- 満ち欠けする月 (プレハブ同梱)
- 時間変化する空模様 (プレハブ同梱)
- 昼と夜で変化するオブジェクト
- 特定の時間帯で表示・非表示が切り替わるオブジェクト
できないこと
- 特定の時間帯のみPickupできるオブジェクト
- 現状シェーダからVRCSDKのTriggerを引けないため
- 特定の時間帯に音楽を変える
- index.htmlに音楽再生機能をつけてWebサーバを自分で立てれば可能
ギリギリできそうなこと
- 鳩時計 (鳩のオブジェクトを大量に作成して「X時0分0秒」,「X時0分1秒」,「X時0分2秒」…にのみ表示するマテリアルを割り当ててアニメーションっぽくする)
- 人間時計:
原理上は実現できるのは分かってたけどさすがに人間秒針は使いどころがなさすぎて草だった / Dynamic clock/skybox/moon shaders in progress #VRChat pic.twitter.com/p4LhdE1ZTV
— y23586 (ヨツミフレーム) (@y23586) 2018年6月29日