# VRC_OSC VRC_OSC は、VRChat の状態を見て Discord やログ連携を行うためのツールです。 一番の使い方は、VRChat の `ExMenu` から操作することです。 `ExMenu` は VRChat のメニュー画面に出る、追加の操作メニューです。 ## できること - VRChat のログを見て Discord に通知する - Discord のミュートを VRChat 側の操作に合わせて切り替える - VRChat 画面を読み取って OCR する - OCR した文字を翻訳してコピーする ## 画面イメージ ### ExMenu VRChat のメニュー画面から、このツールの機能を操作します。 ![ExMenu 1](doc/ExMenu1.png) ![ExMenu 2](doc/ExMenu2.png) ### VRC Log VRChat のログ確認や通知の流れは、次のようなイメージです。 ![VRC Log](doc/VRC_Log.png) ## 使い方 1. 必要な設定ファイルを用意します。 2. ツールを起動します。 3. VRChat を開きます。 4. VRChat の `ExMenu` から必要な機能を選びます。 ### Discord のミュート連動 VRChat 側で特定の操作が行われたときに、Discord のミュート状態を切り替えます。 通話中に VRChat を使うとき、Discord の音声操作を手で切り替える手間を減らすための機能です。 ### OCR と翻訳 VRChat 画面の文字を読み取って、必要に応じて翻訳します。 見た文字や翻訳結果はコピーできるので、内容をそのまま使いやすくなります。 ## 起動方法 PowerShell から起動する場合: ```powershell bin\vrc_osc.ps1 ``` Python から直接起動する場合: ```powershell python src\app.py ``` ## 事前準備 依存関係を入れます。 ```powershell python -m pip install -r requirements.txt ``` ## 設定ファイル 設定は `config/` に置きます。 - `config/config.toml` - `config/secrets.toml` - `config/guests.txt` サンプルはそれぞれ `*.example.*` を使って作成できます。 ## 初期セットアップ 最初は、`config/` のサンプルファイルを実ファイルにしてから中身を埋めます。 1. `config/config.example.toml` を `config/config.toml` にコピーします。 2. `config/secrets.example.toml` を `config/secrets.toml` にコピーします。 3. `config/guests.example.txt` を `config/guests.txt` にコピーします。 4. `config/config.toml` の `self.name` を自分の VRChat 表示名にします。 5. `config/secrets.toml` の `discord.webhook_url` を設定します。 6. `config/secrets.toml` の `vrchat.username` と `vrchat.password` を設定します。 7. `config/guests.txt` に、あらかじめ guest として見たい参加者名を 1 行ずつ書きます。 8. 自分の名前も guest 扱いしたい場合は、`guests.txt` に自分の名前も 1 行追加します。 `guests.txt` は、例として次のように書きます。 ```text GuestUserA GuestUserB YourNameHere ``` ## よく使う設定 - `discord.webhook_url` - Discord に通知を送るための Webhook URL - `vrchat.username` - VRChat のアカウント名 - `vrchat.password` - VRChat のパスワード - `staff.names` - スタッフとして扱う名前 - `guest.file` - guest 名簿のファイル ## 補足 この README は、まず使い方が分かることを優先して簡単にまとめています。 細かい内部仕様が必要な場合は、ソースコードと `config/*.example.*` を見てください。 ## 詳しい資料 - [設計書](doc/design.md) - [シーケンス図](doc/sequence.md) - [ワークフロー](doc/workflow.md)