2.1 KiB
2.1 KiB
OSC モジュール (models.osc)
このドキュメントは models/osc/osc.py の使い方と注意点を簡潔にまとめたものです。
概要
OSCHandlerクラスは OSC メッセージの送信 (/chatbox/input, /chatbox/typing 等) と、 ローカル環境では OSCQuery でエンドポイントを公開するための薄いラッパーを提供します。
依存関係
python-osc— UDP クライアント/サーバtinyoscquery— OSCQuery を利用する場合に必要(オプショナル)
使い方(例)
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