メインコンテンツまでスキップ

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 SetupTSMPSetup を実行します。

複雑なシーンを構築する前に、ループバック テストから始めてください。ループバックは、エンコーダー、トランスポート、デコーダー、バインディング、およびレシーバー オブジェクトが相互に一致していることを証明します。

TSMP がシーンに追加するもの

成分何に使うのか
TSMPSetup参照、コーデックの選択、レンダー テクスチャ、バインディング、ネットワーク ID、およびランタイム テーブルを設定します。
TSMPEncoder出力レンダー テクスチャ内に発信 TSMP フレームを作成します。
TSMPDecoder受信した TSMP テクスチャを読み取り、デコードされたメッセージをディスパッチします。
TSMPNetwork* コンポーネントどのシーンデータを送受信するかを選択します。
TSMPDebugCanvasゲーム内でフレーム、帯域幅、損失、ペイロード、ヘッダー、エラー診断を表示します。

TSMP には、デフォルトのコーデックとして Luma4 が含まれています。ユーザー向けのセットアップ パスは、デフォルトで Luma4 を使用します。

TSMP の得意なこと

  • ミラーリング オブジェクトはテクスチャ ストリームを通じて変形します。
  • インスタンス間でのデータの同期。
  • トランスポート遅延を伴うアバターのポーズ データの再生。
  • 選択した人型のポーズ、ブレンド シェイプ、アニメーター、またはタイムラインの状態を送信します。
  • ゲームオブジェクトの切り替えなどの RPC のようなアクションをトリガーします。
  • VRChat ワールド内のトランスポート品質を検査します。

TSMP が隠さないもの

TSMP は依然としてテクスチャ パスの品質に依存します。受信したピクセルが変更された場合、デコーダはフレームを拒否するか、適用するメッセージの数を減らす可能性があります。常に次の順序でデバッグします。

  1. 送信者はフレームを生成します。
  2. テクスチャ パスは、完全なイメージを変更せずに伝送します。
  3. デコーダはヘッダーとペイロードを受け取ります。
  4. 受信側オブジェクトには、一致する TSMP コンポーネントとネットワーク ID があります。

次のステップ

  1. VPM リポジトリから TSMP をインストールします。
  2. TSMPController.prefab を使用して クイックスタート に従います。
  3. VRChat でテストする前に、シーン チェックリスト を使用します。
  4. 最初のトランスポート パスを設定している間、トラブルシューティング を開いたままにしてください。