VRChat OSC
VRChat OSC は、OSC 経由で vrOS を VRChat につなぎます。手首のパネルからチャット ボックスのメッセージを送り、アバターのパラメーターが変わるのをその場で眺め、ゲー ム内のカメラを操作し、VRChat に vrOS を自力で見つけさせます。
vrOS に付属し、ファーストパーティの拡張機能と同じくあらかじめ許可済みです。同意の しくみと取り消し方は拡張機能のしくみを参照してください。
VR なしで動きます。SteamVR を閉じていてもチャットボックスは使えます。
vrOS は mDNS で自身を OSCQuery サービスとしてアドバタイズし、何を受信するのかを記 した小さな OSCQuery ツリーを提供します。VRChat がそれを見つけ、アドバタイズされた ポートを読み、送信を始めます。ポートをどこかに打ち込む必要はありません。
これで 2 つのことが手に入ります。
- vrOS は固定のポートではなく、システムが割り当てたポートで待ち受けるので、VRChat 自身のリスナーと衝突しません。
- vrOS は VRChat が本当にそこにいるかどうかを把握します。見つけたサービスをプロー ブし、受信するトラフィックも見ています。プローブが 1 回届かないだけで状態が反転 することはありませんが、VRChat が閉じたことは、推測ではなく検出されます。
アドバタイズは既定でオンです。VRChat のほうから vrOS を指定したい場合は、拡張機能 の設定でオフにしてください。
| 設定 | 既定値 | 内容 |
|---|---|---|
| 送信先 | 127.0.0.1:9000 |
vrOS が OSC を送る先。VRChat の既定の受信ポートです。 |
| 受信バインド | 127.0.0.1:0 |
vrOS が受信する場所。ポート 0 はシステムに選ばせる指定で、選ばれたポートを OSCQuery がアドバタイズします。 |
| アドバタイズ (OSCQuery/mDNS) | オン | mDNS で告知し、OSCQuery のリクエストに応答します。 |
| コンタクトプレフィックス | 空 | コンタクトイベントとして扱うパラメーターのプレフィックス。カンマ区切りです。 |
チャットボックス
Section titled “チャットボックス”チャットボックスは、1 つの状態を共有する 2 つの面にあります。生成可能なオーバーレ イパネルと、ダッシュタブの「チャット」ページです。どちらでも入力できます。オー バーレイパネルを手首にアンカーすれば、再起動してもその手首に戻ります。
パネルにはテキストフィールド、「送信」、そして 3 つのトグルがあります。
- 入力中 は、入力している間ゲーム内の入力インジケーターを表示します。送信した とき、フィールドを空にしたとき、パネルからフォーカスが外れたときに消えます。
- サウンド は、メッセージが届いたときに VRChat の通知音を鳴らすかどうかを決め ます。
- ライブ は、「送信」を押したときだけでなく、入力しながら途中のテキストを送り ます。
VRChat のチャットボックスは 144 文字までです。それより長いテキストは文字の境界で 切られ、パネルがそう伝えます。
vrOS は一気に流し込まず、キューに積みます。短いバーストはそのまま出て、その後の送 信は一定の間隔に落ち着きます。個々のメッセージは順番にキューへ入ります。ライブで は、途中のテキストは積み上がらず、新しいものが待機中のものを置き換えるので、届く のは最後に入力した内容です。
キューがあふれた場合はパネルが知らせます。破棄された送信は数えられて表示され、黙 って消えることはありません。
ダッシュタブ
Section titled “ダッシュタブ”ページは 4 つで、それぞれのフッターにカスタム送信の行があります。
| ページ | 載っているもの |
|---|---|
| チャット | オーバーレイパネルと状態を共有するチャットボックス |
| パラメーター | アバターのパラメーターを名前・型・現在値でライブ表示、それに読み込まれているアバター |
| カメラ | モード、撮影のアクション、文書化されたトグル、そしてスライダー |
| トラッカー | トラッカー送信と、その間隔のトグル |
カスタム送信の行はアドレスと値を取り、ページが扱わないものはここから送れます。
「パラメーター」はログではなく、ライブビューです。ページが画面に出ている間は更新 され、出ていない間は送出を止めます。ただし拡張機能はどちらの場合も値を学習し続け るので、開いた瞬間からページの内容は正しくなっています。
カメラモードは 0 から 6 です。オフ、フォト、ストリーム、絵文字、マルチレイヤー、 プリント、ドローン。スライダー(ズーム、焦点距離、絞り、色相など)は、通信に出る 前に VRChat の文書化された範囲へ丸められます。
送るものと受け取るもの
Section titled “送るものと受け取るもの”| 面 | 方向 | 備考 |
|---|---|---|
| チャットボックスの入力と入力中の表示 | 送信 | 上記のとおりレート制限あり |
| アバターのパラメーター | 送受信 | 文字列パラメーターと複数引数のパラメーターも含む |
| アバターの変更 | 送受信 | 送信と、アバターが読み込まれた通知の両方 |
/input/* |
送信 | 9 軸を -1..1 に丸めた float、20 ボタンを 0 か 1 の int で |
/usercamera/* |
送信 | モード、アクション、トグル、スライダー |
| トラッカー 1-8 と頭部の位置と回転 | 送信 | 一定の間隔で、機能がオンのときだけ |
| コンタクトとハプティクスのパラメーター | 受信 | 設定したプレフィックスがイベントとして届く |
どれにも一致しない受信アドレスは、黙って捨てられずに数えられます。プレフィックス の打ち間違いは、謎ではなく目に見える形になります。
アイトラッキングは意図的にここにありません
Section titled “アイトラッキングは意図的にここにありません”この拡張機能はアイトラッキングを VRChat に送りません。それは VRCFaceTracking の仕 事であり、重ねて実装しても足を引っ張り合うだけです。
vrOS 自身が OSC 経由で視線を受け取る場面はありますが、それは vrOS のコンポジターの 中にある専用のリスナーで、意図的にこの拡張機能ではありません。生の視線が拡張機能 API を越えることはなく、イベントバスに届くこともありません。拡張機能が受け取るの はフォーカスと確定のイベントだけで、視線のストリームは受け取りません。そのイベン トにも、それ専用のケーパビリティの許可が必要です。
これも扱いません
Section titled “これも扱いません”VRChat の Web API、その websocket、ログの解析、アバターの JSON は、いずれも設計上 この拡張機能の範囲外です。扱うのは OSC のしくみだけです。両者を分けておいたこと が、vrOS 1 の OSC コードが、たまたま隣にあった VRChat の機能すべてに依存していくの を止めました。
VRChat が vrOS を見つけられないとき
Section titled “VRChat が vrOS を見つけられないとき”- 拡張機能のステータス行を確認してください。VRChat を見つけられたかどうかが書いて あります。
- VRChat 側で OSC が有効になっているか確かめてください。vrOS から代わりにオンにす ることはできません。
- アドバタイズがオフだと、VRChat には vrOS が待ち受けているポートを知る手段があり ません。オンに戻すか、VRChat の送信ポートを自分で設定してください。
詳しくはトラブルシューティングを参照してください。