ターゲティング
ターゲティングの概要
Section titled “ターゲティングの概要”Hapbeat のコマンドは、同じネットワーク上の device に届きます。どの device が再生するかは、コマンドに含まれる Target と、device が持つ Address の照合で決まります。
Address は 3 セグメントの正準形です。
player_<N> / <position> / group_<M> │ │ └ 一斉制御の単位(1〜99) │ └ 装着部位(pos_neck、pos_r_arm など) └ プレイヤー番号(1〜99)Target は前方一致で照合され、* は 1 セグメント分の任意値に一致します。例えば player_2 は player 2 の全 device に、*/pos_neck は全 player の neck に届きます。形式の詳細はアドレス形式を参照してください。
構成別の使い分け
Section titled “構成別の使い分け”| 構成 | 分ける軸 | 設定 |
|---|---|---|
| 送信 1 / 受信 1 種類 | 分けない | 既定のまま |
| 送信 1 / 1 人が複数装着 | position | 部位ごとに Address を設定し、Target で指定 |
| 送信 1 / 複数 player | player | 各 device に player 番号を割り当て |
| 送信 N / 受信 N(1:1 の組が N 組) | group + override | 組ごとに同じ group を割り当て |
| 複数送信元 / 受信混在 | group | 送信元ごとに group 範囲を分ける |
1 人が複数装着する場合
Section titled “1 人が複数装着する場合”部位の識別には position を使います。各 device の position を設定し、*/pos_neck や */pos_r_arm のような Target を指定します。player を増やす予定があれば、player 軸をこの用途に使わない方が扱いやすくなります。
複数 player に個別送信する場合
Section titled “複数 player に個別送信する場合”各 device に player 1、2、3 のような番号を割り当て、player_1 のような Target を使います。送信する player を実行時に切り替える場合は Address Override を使います。
HMD と Hapbeat が 1:1 で複数組ある場合
Section titled “HMD と Hapbeat が 1:1 で複数組ある場合”LBE のように複数のペアが並ぶ場合は、group をペアの識別子にします。HMD 側の override と Hapbeat 側の Address に同じ group 番号を設定します。Event Map は共通のまま、同じビルドをすべての端末に配布できます。
複数の送信元が混在する場合
Section titled “複数の送信元が混在する場合”device は送信元を区別しません。別アプリや別 PC が同じネットワークにある場合は、送信元ごとに group の範囲を分けます。例えば送信元 A は group 1〜10、B は group 11〜20 を使います。
Address Override
Section titled “Address Override”Address Override は、Event Map に記録した Target の player / group を送信直前に上書きします。各軸は独立して指定でき、off の軸は Event Map に記録した Target をそのまま使います。
これにより Event Map を複製せず、端末ごとの実行時設定だけで送信先を切り替えられます。複数端末へ同じビルドを配布する構成に使います。
| 単位 | 用途 |
|---|---|
| this build | ビルド全体で固定する override。展示ごとに別ビルドを作る場合に使用 |
| this device | 実行端末ごとに保持する override。1 本のビルドを複数端末へ配る場合に使用 |
各 SDK の設定場所と API は、その SDK のターゲティングページを参照してください。
運用のヒント
Section titled “運用のヒント”- Event Map を複数端末で使い回す場合、Target の player 軸は
*にしておくと、override が off のときは全 player、設定済みのときは指定先へ送れます。 groupoverride を使う場合、Hapbeat 側の group 番号も同じ値にします。- 既定の Address は
player_1/group_1です。設定漏れとの衝突を避けたい展示では、運用番号を 2 以上から始めると確認しやすくなります。
共通ガイド「ターゲティング」と同じ内容を表示しています。
Unity で設定する
Section titled “Unity で設定する”Event Map の Target を設定する
Section titled “Event Map の Target を設定する”通常の送信先は Event Map entry ごとに決めます。Hapbeat → Open Event Map で Event Map を開き、entry の Targeting を編集します。例えば */pos_neck を指定すると、その entry を再生するすべての Trigger が neck の Hapbeat だけへ送ります。
Event Map の Target は、触覚演出そのものに属する送信先です。同じ entry を再生する GameObject ごとに設定を重複させる必要はありません。
Address Override を選ぶ
Section titled “Address Override を選ぶ”複数 HMD で同じ Event Map を使い、端末ごとに送信先だけ変えたい場合は、Event Map を編集せず Address Override を使います。
- this build —
Hapbeat → Open Settingsの Override Addressing。展示端末用に player / group を固定する場合。 - this device — 下記の API または実行時パネル。1 本の build を配り、起動した端末ごとに player / group を選ぶ場合。
Address Override は Event Map の Target を上書きするだけで、asset 自体は変更しません。
スクリプトから設定
Section titled “スクリプトから設定”// 起動時、または設定画面で番号を確定するタイミングで呼ぶHapbeatManager.Instance.SetAddressOverride(player: 3, group: HapbeatManager.AddressOverrideDisabled, persist: true);player/groupは 1〜99。AddressOverrideDisabled(-1)を渡した軸は上書きしないpersist: trueで PlayerPrefs に保存され、次回起動時も復元- 付け替え時は
ClearPersistedAddressOverride()を呼ぶ(Play モード中はHapbeatManagerインスペクタの Clear Saved Override ボタン)
現在の値は Hapbeat > Open Runtime Status で確認できる(→ Editor メニュー一覧)。
設定パネルを置く
Section titled “設定パネルを置く”HapbeatAddressOverridePanel を GameObject に 1 個追加するだけで、player / group を選んで Apply する実行時 UI が生成される。シーン側で UI 階層を組む必要はない。画面固定の HUD としても、VR 用の 3D パネルとしても置ける。
設定項目とコントローラー操作の受け付け方は その他のコンポーネント を参照。
| サンプル | 内容 |
|---|---|
| VR Config Example | override 設定専用のシーン。VR 側の設定画面としてそのまま流用可能 |
| Showcase / Z4 Stream Console | AddressOverrideDemo がパネルを継承しただけの薄いクラス。独自 UI の出発点として読める |
いずれも Package Manager の Samples から Import する。
現場での確認手段
Section titled “現場での確認手段”HapbeatConfig.appName に <p> / <g> を含めると、送信直前に現在の override 値へ置換されて OLED に表示される(無効時は -)。
appName = "Booth <p>/<g>"→ player=3, group 無効: "Booth 3/-"「この HMD が正しい Hapbeat とペアか」をデバイスの画面だけで確認可能。
運用上の注意
Section titled “運用上の注意”- EventMap のターゲットのプレイヤー部分は
*にしておく — override 無効の端末では全デバイスに、設定済みの端末ではペア先だけに届き、同じ EventMap を使い回せる - group override を使うならデバイス側の group 番号も合わせる — 照合は位置ベースのため、
group_5宛ては group_5 のデバイスにしか届かない - 送信元アプリ単位の排他制御は未実装 — 同じ番号を使う複数アプリを排他的に切り替える機能(デバイスが最初の app_id を pin する方式)は、contracts / firmware / SDK の同時改修を要するため現時点では無い。必要な場合はユースケースを添えて GitHub Issues へ
- Address の仕組み — アドレスの仕様
- 通信モデル — 送信経路と台数の目安
- Editor メニュー一覧 — Settings / Runtime Status の場所