TSMP
TSMP、テクスチャ ストリーム メッセージング プロトコルは、テクスチャ フレームを通じて構造化されたランタイム データを送信します。
VRChat の世界では、これは、送信者がシーンの状態を目に見えるテクスチャにエンコードでき、キャプチャ パスまたはストリーミング パスがそのテクスチャを運ぶことができ、受信者がテクスチャをデコードしてオブジェクトの動き、アバターのポーズ、ブレンド シェイプ、アニメーターの状態、タイムラインの状態、または TSMP RPC イベントに戻すことができることを意味します。
どこから始めるべきか
TSMP をシーンに配置する場合、組み込みの同期コンポーネントを使用する場合、またはテクスチャ トランスポート パスをデバッグする場合は、「はじめに」から始めてください。
開発者セクションとスクリプト API セクションは、カスタム TSMP コンポーネント、ツール、テスト、またはコーデック パッケージを作成する場合にのみ使用してください。
メンタルモデル
TSMP は、4 つの部分からなるパイプラインとして理解するのが最も簡単です。
Scene data -> TSMPEncoder -> texture/video path -> TSMPDecoder -> scene data
- シーン データは有効な
TSMPNetwork*コンポーネントから取得されます。 TSMPEncoderは、TSMP フレームを出力レンダー テクスチャに書き込みます。- テクスチャ パスは、VRChat カメラ ビュー、Spout、OBS、または別のキャプチャ ルートである可能性があります。
TSMPDecoderは受信したテクスチャを読み取り、一致する TSMP ネットワーク コンポーネントにメッセージを適用します。
テクスチャはエンコードされたデータの結果です。スケーリング、フィルタリング、色補正、圧縮、またはトリミングを行うと、データが損傷する可能性があります。
プレハブから始めます
推奨される最初のセットアップは次のとおりです。
このプレハブをシーンにドラッグし、必要なテクスチャと参照を割り当ててから、Apply Setup で TSMPSetup を実行します。
複雑なシーンを構築する前に、ループバック テストから始めてください。ループバックは、エンコーダー、トランスポート、デコーダー、バインディング、およびレシーバー オブジェクトが相互に一致していることを証明します。
TSMP がシーンに追加するもの
| 成分 | 何に使うのか |
|---|---|
TSMPSetup | 参照、コーデックの選択、レンダー テクスチャ、バインディング、ネットワーク ID、およびランタイム テーブルを設定します。 |
TSMPEncoder | 出力レンダー テクスチャ内に発信 TSMP フレームを作成します。 |
TSMPDecoder | 受信した TSMP テクスチャを読み取り、デコードされたメッセージをディスパッチします。 |
TSMPNetwork* コンポーネント | どのシーンデータを送受信するかを選択します。 |
TSMPDebugCanvas | ゲーム内でフレーム、帯域幅、損失、ペイロード、ヘッダー、エラー診断を表示します。 |
TSMP には、デフォルトのコーデックとして Luma4 が含まれています。ユーザー向けのセットアップ パスは、デフォルトで Luma4 を使用します。
TSMP の得意なこと
- ミラーリング オブジェクトはテクスチャ ストリームを通じて変形します。
- インスタンス間でのデータの同期。
- トランスポート遅延を伴うアバターのポーズ データの再生。
- 選択した人型のポーズ、ブレンド シェイプ、アニメーター、またはタイムラインの状態を送信します。
- ゲームオブジェクトの切り替えなどの RPC のようなアクションをトリガーします。
- VRChat ワールド内のトランスポート品質を検査します。
TSMP が隠さないもの
TSMP は依然としてテクスチャ パスの品質に依存します。受信したピクセルが変更された場合、デコーダはフレームを拒否するか、適用するメッセージの数を減らす可能性があります。常に次の順序でデバッグします。
- 送信者はフレームを生成します。
- テクスチャ パスは、完全なイメージを変更せずに伝送します。
- デコーダはヘッダーとペイロードを受け取ります。
- 受信側オブジェクトには、一致する TSMP コンポーネントとネットワーク ID があります。
次のステップ
- VPM リポジトリから TSMP をインストールします。
TSMPController.prefabを使用して クイックスタート に従います。- VRChat でテストする前に、シーン チェックリスト を使用します。
- 最初のトランスポート パスを設定している間、トラブルシューティング を開いたままにしてください。