クイックスタート
このクイックスタートでは、基本的な TSMP 送信者と受信者のセットアップを作成します。
目標はまだパフォーマンスを調整することではありません。最初の目標は、TSMP フレームをエンコード、転送、デコードして、目に見えるオブジェクトに適用できることを証明することです。
1. コントローラープレハブを追加します
通常の Unity と VRChat のどちらでも、次のプレハブをシーンにドラッグします。
Packages/com.kibalab.tsmp.core/Samples/TSMPController.prefab
Setup がエンコーダー、デコーダーとインストール済みコーデックを自動で準備します。変換メニューや実行環境の選択は不要です。要件と Player 設定は インストール を参照してください。
TSMP を学習しながら、プレハブをまとめておきます。ループバック テストが機能した後は、送信者オブジェクトと受信者オブジェクトの分割が簡単になります。
2. テクスチャを割り当てる
トランスポート パスで使用されるテクスチャを割り当てます。
| テクスチャ | 目的 |
|---|---|
| エンコーダ出力のレンダリングテクスチャ | TSMPEncoder が書くテクスチャ。これは、表示、キャプチャ、またはストリーミングするものです。 |
| デコーダ入力テクスチャ | TSMPDecoder が読み込むテクスチャ。実際のストリームでは、これは元のエンコーダ テクスチャではなく、キャプチャされた TSMP イメージである必要があります。 |
| ペイロードバイトテクスチャ | エンコードされたピクセルをバイトに変換する際に使用されるデコーダ作業テクスチャ。 TSMPSetup でサイズを調整できます。 |
ローカル テストの場合、出力は、デコーダ入力に到達する前に、Spout、OBS、カメラ キャプチャ セットアップ、または別のループバック パスを介してルーティングされる場合があります。
送信側の出力と受信側の入力は同じテクスチャである必要はありません。実際のトランスポートでは、通常、これらはキャプチャ パスによって接続された異なるテクスチャである必要があります。
3. 同期するデータを選択する
送信するオブジェクトに TSMP ネットワーク コンポーネントを追加します。
| 成分 | 用途: |
|---|---|
TSMPNetworkTransformSync | オブジェクトの位置、回転、スケール、およびオプションの Rigidbody モーション。 |
TSMPNetworkHumanoidPoseSync | 人型の Animator リグと選択された人型のボーン。 |
TSMPNetworkBlendShapesSync | 選択した顔またはメッシュのブレンド シェイプ。 |
TSMPNetworkAnimatorSync | 選択したアニメーター パラメーターとレイヤー状態。 |
TSMPNetworkTimelineSync | タイムラインまたは PlayableDirector の再生状態。 |
TSMPNetworkVrchatAvatarPoseSync | ライブ VRChat プレーヤーのポーズをアバター インスタンスにミラーリングします。 |
TSMPNetworkGameObjectToggle | 単純な Interact と TSMP RPC テスト。 |
アクティブなゲームオブジェクト上で有効なコンポーネントのみが参加します。コンポーネントまたはゲームオブジェクトを無効にして、TSMP データの送信と適用を停止します。
4. 設定を確認する
TSMPSetup でコーデックと入出力の参照を確認します。コンポーネント、コーデック、バインディングの変更は自動反映され、Play モードやビルドの前にも確認されます。既存の Apply Setup ボタンは任意の手動更新であり、必須の手順ではありません。
5. ストリームをテストする
再生モードに入るか、VRChat でテストします。
ストリームが機能していると予想される兆候:
- 同期されたオブジェクトが移動すると、エンコーダーの出力テクスチャが変化します。
- エンコーダのフレーム インデックスが増加します。
- データが選択されている場合、エンコーダのペイロード バイトは 0 より大きくなります。
- デコーダは有効なヘッダーと有効なフレームを報告します。
- 受信側のオブジェクトは、キャプチャ パスの遅延後に更新されます。
TSMPDebugCanvasは、フレーム インデックス、ペイロード、メッセージ、および損失情報を示します。
キャプチャ ループバックについては、OBS および Spout ループバック を参照してください。
推奨される最初のテスト
最初に TSMPNetworkGameObjectToggle を使用してください。
Interact テストは VRChat 用です。通常の Unity では、まず TSMPNetworkTransformSync の対象をアニメーションやスクリプトで動かして確認します。RPC は UI ボタンやスクリプトから SendTransRPC を呼び出してテストできます。Unity 自体は VRChat の Interact イベントを発行しません。
RPCTarget.All を使用すると、Interact は送信側でオブジェクトをすぐに切り替える必要があります。ストリーム遅延の後、デコードされた RPC は再びそれを切り替える必要があります。これは、短いイベント メッセージがパスを通過することを証明します。
それが機能したら、TSMPNetworkTransformSync を追加します。次に、ヒューマノイド ポーズや VRChat アバター ポーズなどの高帯域幅コンポーネントを追加します。
何も動かない場合
これらを順番に確認してください。
TSMPEncoderフレーム インデックスが増加します。- エンコーダのペイロード バイトがゼロより大きい。
- エンコードされたテクスチャがトランスポート パスに表示されます。
TSMPDecoderはheader=yesとvalid=yesを報告します。- デコーダのメッセージ数がゼロより大きい。
- 受信側オブジェクトには、一致する TSMP ネットワーク コンポーネントがあります。
- 受信補間が
Noneではありません。 TSMPSetupは最後のシーン変更後に適用されました。