48 lines
2.1 KiB
Markdown
48 lines
2.1 KiB
Markdown
## OSC モジュール (models.osc)
|
||
|
||
このドキュメントは `models/osc/osc.py` の使い方と注意点を簡潔にまとめたものです。
|
||
|
||
### 概要
|
||
- `OSCHandler` クラスは OSC メッセージの送信 (/chatbox/input, /chatbox/typing 等) と、
|
||
ローカル環境では OSCQuery でエンドポイントを公開するための薄いラッパーを提供します。
|
||
|
||
### 依存関係
|
||
- `python-osc` — UDP クライアント/サーバ
|
||
- `tinyoscquery` — OSCQuery を利用する場合に必要(オプショナル)
|
||
|
||
### 使い方(例)
|
||
|
||
```python
|
||
from models.osc.osc import OSCHandler
|
||
|
||
handler = OSCHandler(ip_address="127.0.0.1", port=9000)
|
||
handler.setDictFilterAndTarget({
|
||
"/chatbox/input": lambda addr, *args: print(args),
|
||
})
|
||
handler.receiveOscParameters()
|
||
handler.sendTyping(True)
|
||
handler.sendMessage("Hello")
|
||
handler.oscServerStop()
|
||
```
|
||
|
||
### 注意点
|
||
- `tinyoscquery` がインストールされていない場合、OSCQuery 関連機能は無効になりますが、送信(UDP クライアント)は動作します。
|
||
- サービスのアドバタイズ中に例外が発生した場合、内部でリトライします。
|
||
# models/osc — 詳細設計
|
||
|
||
目的: VRChat 等と OSC / OSCQuery 経由で値の取得やチャット送信を行う。
|
||
|
||
主要クラス/関数:
|
||
- class OSCHandler
|
||
- sendMessage(message: str, notification: bool=True): OSC で chatbox/input を送信
|
||
- sendTyping(flag: bool): chatbox/typing を送信
|
||
- receiveOscParameters(): OSCQuery を立て、指定したフィルタに対してローカルでサーバを実装してイベントを受ける
|
||
- getOSCParameterValue(address: str): OSCQuery を通じて現在値を問い合わせる(use tinyoscquery)
|
||
|
||
注意点:
|
||
- `is_osc_query_enabled` が True のときに OSCQuery を使う(127.0.0.1 や localhost の場合に True)
|
||
- 受信ハンドラは dispatcher にマップしてコールバックを呼ぶ。
|
||
- ネットワーク環境や OSCQuery の可否により動作が変わるため例外処理が多く入っている。
|
||
|
||
依存: python-osc, tinyoscquery
|