クイックスタート
このクイックスタートでは、基本的な TSMP 送信者と受信者のセットアップを作成します。
目標はまだパフォーマンスを調整することではありません。最初の目標は、TSMP フレームをエンコード、転送、デコードして、目に見えるオブジェクトに適用できることを証明することです。
1. コントローラープレハブを追加します
このプレハブをシーンにドラッグします。
Packages/com.kibalab.tsmp.core/Samples/TSMPController.prefab
プレハブが推奨される開始点です。これには、通常のコントローラー オブジェクト、コーデック参照、エンコーダー、デコーダー、およびセットアップ エントリ ポイントが含まれています。
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 でオブジェクトを選択し、Apply Setup をクリックします。
次の操作を行った後、これを再度実行します。
- TSMP ネットワーク コンポーネントを追加または削除します。
- 同期されたオブジェクトをプレハブまたはシーン オブジェクト間で移動します。
- Luma4 またはテクスチャ参照を変更します。
- 手動ネットワーク ID を変更します。
- エンコーダー、デコーダー、またはコーデック オブジェクトを置き換えます。
Apply Setup は、エンコーダとデコーダの両方で使用されるバインディング テーブルを再構築するため重要です。
5. ストリームをテストする
再生モードに入るか、VRChat でテストします。
ストリームが機能していると予想される兆候:
- 同期されたオブジェクトが移動すると、エンコーダーの出力テクスチャが変化します。
- エンコーダのフレーム インデックスが増加します。
- データが選択されている場合、エンコーダのペイロード バイトは 0 より大きくなります。
- デコーダは有効なヘッダーと有効なフレームを報告します。
- 受信側のオブジェクトは、キャプチャ パスの遅延後に更新されます。
TSMPDebugCanvasは、フレーム インデックス、ペイロード、メッセージ、および損失情報を示します。
キャプチャ ループバックについては、OBS および Spout ループバック を参照してください。
推奨される最初のテスト
最初に TSMPNetworkGameObjectToggle を使用してください。
RPCTarget.All を使用すると、Interact は送信側でオブジェクトをすぐに切り替える必要があります。ストリーム遅延の後、デコードされた RPC は再びそれを切り替える必要があります。これは、短いイベント メッセージがパスを通過することを証明します。
それが機能したら、TSMPNetworkTransformSync を追加します。次に、ヒューマノイド ポーズや VRChat アバター ポーズなどの高帯域幅コンポーネントを追加します。
何も動かない場合
これらを順番に確認してください。
TSMPEncoderフレーム インデックスが増加します。- エンコーダのペイロード バイトがゼロより大きい。
- エンコードされたテクスチャがトランスポート パスに表示されます。
TSMPDecoderはheader=yesとvalid=yesを報告します。- デコーダのメッセージ数がゼロより大きい。
- 受信側オブジェクトには、一致する TSMP ネットワーク コンポーネントがあります。
- 受信補間が
Noneではありません。 TSMPSetupは最後のシーン変更後に適用されました。