2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VRChatでOSCパラメータの送受信を確認してみる

Last updated at Posted at 2022-03-04

はじめに

VRChatのアップデートによって、OSCでの送受信が出来るようになりました。
何番煎じかはわかりませんが、とりあえず触ってみたのでまとめていきます。
(通信部分等をすべて作成するわけではありません)

目次

  1. 開発環境
  2. Server側(VRC)
  3. Client側(PC側)
  4. 参考文献
  5. アバターとの連携(Unity)
  6. 発展形:心臓の鳴動を描画してみる(WIP)

開発環境

・Windows10
・VRChat IK-Beta(2022/3/4時点)
・Javascript
・Node.js
・VisualStudioCode

Server側(VRC)

VRC側からの受信データを見てみる

とりあえずProtokolをインストールします。
https://hexler.net/protokol

起動してOSCタブでPORTを9001番で接続、VRCでアバターを動かしてみると、3.PNG
この様にアバターの向き等の情報がパラメーターの値毎に受け取ることができます。
これはVRC側が出力しているOutputのパラメータになります。

VRCゲーム内での設定

VRChatをBeta版で起動すると、Optionのメニューに[OSC]の項目が追加されます。1.PNG
EnabledをONにして、OSCDebug画面も表示させておくと、受信確認がスムーズに進みます。2.PNG

Client側(PC側)

まずはアバターとの連携等考えずに、VRCへパラメータを送ってみます。

Send.js
const osc = require('node-osc');

const client = new osc.Client('127.0.0.1', 9000);
client.send('/avatar/parameters/Hoge', 1);

Nodeで実行して、VRCのOSC Debug画面を確認してみると...
4.PNG
送信したデータが確認出来ました!
色々と複雑そうな気はしますが、ただ送信するだけであればこれでOKです。

アバターとの連携(Unity)

上記でパラメータを一方的にVRCへ送りつけることは出来るようになりましたが、
ここからアバターのパラメータと紐づけを行う必要があります。
OSCが有効な状態で変更したアバターは、以下にOSC用のjsonファイルが追加されます。
\Users[username]\AppData\LocalLow\VRChat\VRChat\OSC[userID]\Avatars
ファイル内に以下パラメータを追加しておきます。

avaterID.json
    {
      "name": "hoge",
      "input":{
        "address":"/avatar/parameters/hoge",
        "type":"Float"
      }
    }

Unity上では、まずはFXLayerのパラメータにFloat型で"Hoge"を追加します。
また連携したいアニメーションを作成し、以下の様に設定しておきます。
5.PNG
ここで追加、MotionTimeに設定するパラメータの名称は、jsonファイルに設定したaddress内のパラメータ名と同一にしておきます。
同様に、ExpressionsParameterにも同名のFloat型のパラメータを作成しておきます。
6.PNG
ゲーム内のExpressionMenuから操作しないのであれば、これだけでOKです!

参考文献

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?