Open4

寝るよ~

ゆいなゆいな

VRChatでついつい夜更かしして、体調を崩してしまうことも...
そんな問題を解決するために、指定時刻になると倒れるギミックをアバターに搭載。

ここには『寝るよ~(仮称)』の技術的なメモなどを記録予定。

ゆいなゆいな

アバター側

TODO:画像を貼る

頭上に時刻を表示するためのオブジェクトを追加。
オブジェクトは6つの子オブジェクト(1/2/:/3/4/に寝るよ~)を持つ。

時刻は0~9が並んだテクスチャ画像をliltoonのUVスクロールで変更することで表現。

パラメータは以下の6つ:

パラメータ
時の十の位 integer
時の一の位 integer
分の十の位 integer
分の一の位 integer
時計表示/非表示 boolean
アニメーション(VRCEMote) integer

※パラメータの削減の観点からすると時/分は桁ごとに分けない方が良いが、今回は実装のシンプルさを優先した。

ゆいなゆいな

外部アプリ側

時刻指定用のWEBページをローカルに用意し、XS Overlayから操作する仕組み。
VRコントローラーから操作しやすいように画面いっぱいに特大のテンキーを配置。

時刻を入力すると、OSCを通して時刻パラメータが設定され、時計が表示される。
同時にサーバー内でその時刻にイベントが発火するようにスケジュールされる。

指定した時刻になると、OSCでVRCEmote8にするようにコマンドを送信する。
これはデフォルトのアニメーションでDieに割り当てられている。

ゆいなゆいな

SteamVR Overlay版

https://zenn.dev/kurohuku/books/a082c5728cc1f6

この記事を参考にOverlayを作成。
上記WEBページで行っていたことをOverlayのDashboardに移植した。

Unity内でゲームモードにしたときは快適に動作するものの、exeにビルドして実行するとかなりカクついてしまう。
以下の記事が参考になりそう?
https://moon-bear.com/2020/11/03/unity-deal-with-stuttering/
https://zenn.dev/su_do/articles/ab48464ccb264e

またdashboardだけあれば十分だが、exeを起動すると全画面の真っ黒な画面が表示される。
画面なしにできないか調べてみる。