コンテンツにスキップ

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 のリクエストに応答します。
コンタクトプレフィックス 空 コンタクトイベントとして扱うパラメーターのプレフィックス。カンマ区切りです。

チャットボックスは、1 つの状態を共有する 2 つの面にあります。生成可能なオーバーレ イパネルと、ダッシュタブの「チャット」ページです。どちらでも入力できます。オー バーレイパネルを手首にアンカーすれば、再起動してもその手首に戻ります。

パネルにはテキストフィールド、「送信」、そして 3 つのトグルがあります。

  • 入力中 は、入力している間ゲーム内の入力インジケーターを表示します。送信した とき、フィールドを空にしたとき、パネルからフォーカスが外れたときに消えます。
  • サウンド は、メッセージが届いたときに VRChat の通知音を鳴らすかどうかを決め ます。
  • ライブ は、「送信」を押したときだけでなく、入力しながら途中のテキストを送り ます。

VRChat のチャットボックスは 144 文字までです。それより長いテキストは文字の境界で 切られ、パネルがそう伝えます。

vrOS は一気に流し込まず、キューに積みます。短いバーストはそのまま出て、その後の送 信は一定の間隔に落ち着きます。個々のメッセージは順番にキューへ入ります。ライブで は、途中のテキストは積み上がらず、新しいものが待機中のものを置き換えるので、届く のは最後に入力した内容です。

キューがあふれた場合はパネルが知らせます。破棄された送信は数えられて表示され、黙 って消えることはありません。

ページは 4 つで、それぞれのフッターにカスタム送信の行があります。

ページ 載っているもの
チャット オーバーレイパネルと状態を共有するチャットボックス
パラメーター アバターのパラメーターを名前・型・現在値でライブ表示、それに読み込まれているアバター
カメラ モード、撮影のアクション、文書化されたトグル、そしてスライダー
トラッカー トラッカー送信と、その間隔のトグル

カスタム送信の行はアドレスと値を取り、ページが扱わないものはここから送れます。

「パラメーター」はログではなく、ライブビューです。ページが画面に出ている間は更新 され、出ていない間は送出を止めます。ただし拡張機能はどちらの場合も値を学習し続け るので、開いた瞬間からページの内容は正しくなっています。

カメラモードは 0 から 6 です。オフ、フォト、ストリーム、絵文字、マルチレイヤー、 プリント、ドローン。スライダー(ズーム、焦点距離、絞り、色相など)は、通信に出る 前に VRChat の文書化された範囲へ丸められます。

面 方向 備考
チャットボックスの入力と入力中の表示 送信 上記のとおりレート制限あり
アバターのパラメーター 送受信 文字列パラメーターと複数引数のパラメーターも含む
アバターの変更 送受信 送信と、アバターが読み込まれた通知の両方
/input/* 送信 9 軸を -1..1 に丸めた float、20 ボタンを 0 か 1 の int で
/usercamera/* 送信 モード、アクション、トグル、スライダー
トラッカー 1-8 と頭部の位置と回転 送信 一定の間隔で、機能がオンのときだけ
コンタクトとハプティクスのパラメーター 受信 設定したプレフィックスがイベントとして届く

どれにも一致しない受信アドレスは、黙って捨てられずに数えられます。プレフィックス の打ち間違いは、謎ではなく目に見える形になります。

アイトラッキングは意図的にここにありません

Section titled “アイトラッキングは意図的にここにありません”

この拡張機能はアイトラッキングを VRChat に送りません。それは VRCFaceTracking の仕 事であり、重ねて実装しても足を引っ張り合うだけです。

vrOS 自身が OSC 経由で視線を受け取る場面はありますが、それは vrOS のコンポジターの 中にある専用のリスナーで、意図的にこの拡張機能ではありません。生の視線が拡張機能 API を越えることはなく、イベントバスに届くこともありません。拡張機能が受け取るの はフォーカスと確定のイベントだけで、視線のストリームは受け取りません。そのイベン トにも、それ専用のケーパビリティの許可が必要です。

VRChat の Web API、その websocket、ログの解析、アバターの JSON は、いずれも設計上 この拡張機能の範囲外です。扱うのは OSC のしくみだけです。両者を分けておいたこと が、vrOS 1 の OSC コードが、たまたま隣にあった VRChat の機能すべてに依存していくの を止めました。

VRChat が vrOS を見つけられないとき

Section titled “VRChat が vrOS を見つけられないとき”
  • 拡張機能のステータス行を確認してください。VRChat を見つけられたかどうかが書いて あります。
  • VRChat 側で OSC が有効になっているか確かめてください。vrOS から代わりにオンにす ることはできません。
  • アドバタイズがオフだと、VRChat には vrOS が待ち受けているポートを知る手段があり ません。オンに戻すか、VRChat の送信ポートを自分で設定してください。

詳しくはトラブルシューティングを参照してください。