セットアップ
SDKを導入し、サンプルSceneでDivingStationからのデータ受信を確認するまでの手順をご説明します。
必要環境
| 項目 | 構成 |
|---|---|
| Unity | Unity 6.3 LTS。以下の手順では6000.3.25f1を使用 |
| 対象プラットフォーム | Windows、macOS 13以降、Ubuntu 22.04/24.04(Unity 6.3 LTSのエディターの動作環境) |
| デバイス | ContactGlove3 Pro |
| サーバー | DivingStation v2.0.0以降 |
| C# API互換性 | .NET Standard 2.1 |
| SDKの依存パッケージ | Unity UI 2.0、Physics、IMGUI、ImageConversion。SDK導入時にUnityが導入します |
SDKパッケージの導入
Unity Hubで新しいプロジェクトを作成します。以下の手順ではUniversal 3Dテンプレートを使用しています。
com.melt-interface-technologies.contactglove.sdkv2を導入します。Protocolクライアント、Unityアダプター、Basic Sampleが1つのパッケージに含まれます。次のどちらかの方法を選んでください。
Window > Package Management > Package Managerを開き、左上の+メニューから導入方法を選びます。

Git URLから導入する
Package Managerの+からInstall package from git URLを選び、次のURLを入力します。UnityからGitとリポジトリへアクセスできる環境が必要です。
https://github.com/MeltInterfaceTechnologies/ContactGloveSDKv2Unity.git?path=/Packages/com.melt-interface-technologies.contactglove.sdkv2#mainコンパイルが終わったら、ContactGlove SDK v2 > Samples > Basic SampleでImportを押してください。URLの#mainはmainの最新コミットを参照します。同じ版を使い続ける場合は、導入するコミットSHAまたは公開済みタグに置き換えます。Gitからの導入とリビジョン指定も参照できます。

ローカルのチェックアウトから導入する
- ContactGloveSDKv2Unityを取得します。
- Unityプロジェクトを開き、
Window > Package Management > Package Managerを選択します。 - Package Manager左上の
+からInstall package from diskを選択します。 - 取得したリポジトリ内の
Packages/com.melt-interface-technologies.contactglove.sdkv2/package.jsonを選択し、パッケージの解決とコンパイルが終わるまで待ちます。 - パッケージ一覧で
ContactGlove SDK v2を選択します。SamplesタブのBasic SampleでImportを押します。
Unityプロジェクトが参照している間は、取得したリポジトリを同じ場所に保ってください。ディスクからの導入はUnityマニュアルでも確認できます。
DivingStationの準備
- グローブを接続するPCでDivingStationを起動します。
- ContactGlove3 Proを接続・有効化し、DivingStationの案内に従って機器の設定、キャリブレーション、Retarget profileの設定を行います。
- DivingStation上でグローブが動作していることを確認します。
- 最初はUnityも同じPCで実行(接続先
127.0.0.1)すると接続設定が簡単です。
信頼できるLANから接続する
- 信頼できるLANを使用してください。
- DivingStationの
SDK / Protocolで待受範囲をLAN に公開にします。待受範囲を変更した場合は、DivingStationを再起動してください。 - Unity側の
IpAddressにはDivingStationを実行しているPCの数値IPアドレス、ServerPortにはその待受ポート(既定25791)を指定します。SDKから接続するアプリケーションでもBasic Sampleでも同じ設定を使います。 - 接続承認が必要な設定では、DivingStationに表示される接続要求を許可してください。
- 両方のPCの実際の受信ポートで、必要なUDP通信を許可してください。SDK側は
ReceivePortを使用します。0で自動割り当てする場合は、実行中の診断表示で実際のポートを確認してください。
公開範囲と接続承認はDivingStationで管理します。Protocolのセッションは暗号化や暗号学的認証を提供しないため、信頼できるLANで使用してください。
サンプルを開いて設定する
Assets/SamplesにImportされたサンプル(例:Assets/Samples/ContactGlove SDK v2/0.1.0/Basic Sample/)からBasicSample.unityを開きます。Import先フォルダーはパッケージ名とバージョンに応じて変わる場合があります。URPのプロジェクトでは、開いた直後にSceneへ未保存の印が付きます。URPがライトに設定を追加するためで、保存しても問題ありません。

シーン内のContactGloveBehaviourゲームオブジェクトを選択します。Hosts配列に接続情報があります。

| フィールド | 既定値 | 意味 |
|---|---|---|
HostId | localhost | アプリケーション内でサーバーセッションを識別するキー |
DisplayName | DivingStation | ホストの表示用名称 |
IpAddress | 127.0.0.1 | DivingStationを実行するコンピューターの数値IPアドレス |
ServerPort | 25791 | DivingStationがコマンドを受信するUDPポート |
ReceivePort | 25788 | SDK側のUDPデータ受信ポート。0はOSによる自動割り当て |
SendPort | 0 | SDK側のUDP送信元ポート。0はOSによる自動割り当て |
表に示す値はHostOptionsの既定値です。シーンに保存されている値や、プロジェクトで変更した値が優先されます。HostIdを変更する場合は、HowToUseゲームオブジェクトにあるHowToUse.HostIdも同じホストIDにしてください。同じコンピューターで複数クライアントを実行する場合は、使用ポートが競合しないように設定します。ReceivePort=0やSendPort=0の場合、実際の割り当てポートは実行中の診断表示で確認できます。
GameビューはFree Aspectなどの横長の比率にしてください。縦長の比率ではUIが小さく表示されます。
Playを押します。SDKが自動的にDivingStationに接続し、有効なレコードを受信すると診断表示がReceivingになります。DivingStationでは、右上の歯車から設定 > SDK / Protocolを開き、SDK / DivingStationProtocol v2のSDK の状態が接続中になっていることを確認できます。使用方法に従って現在値を確認してください。

VR連携:OpenXRとXR Hands
ContactGlove3 Proは、SteamVRに接続してVR用の手の形状を送信できます。本節では、SteamVRが受け取っている手の形状や、割り当てられたポジショントラッカーの位置を取得してUnity内で可視化する方法をご紹介します。
サンプルとして、Unity公式のHandVisualizerシーンを使用します。SDKのBasic Sampleとは別になりますのでご注意ください。
Windows向けのパッケージ構成
以下は手順で使用するバージョンです。
| 項目 | バージョン |
|---|---|
| Unity | 6000.3.25f1 |
OpenXR Plugin (com.unity.xr.openxr) | 1.17.1 |
XR Hands (com.unity.xr.hands) | 1.8.1 |
Input System (com.unity.inputsystem) | 1.20.0 |
公式VR Templateを使用する
Unity Hubのプロジェクト作成画面で「VR」を選択します(ダウンロードしていない場合「Download Template」ボタンでダウンロードしてください)。プロジェクト名と保存場所を設定してプロジェクトを作成します。

下の自動起動の設定を確認してください。
Package ManagerでXR Handsを選択し、SamplesタブのHandVisualizerでImportを押します。すでにImportされている場合は、Assets/Samples/XR Hands/1.8.1/HandVisualizer/HandVisualizer.unityを開きます。Import先フォルダーはパッケージ名とバージョンに応じて変わる場合があります。実行するへ進んでください。
手動で設定する
Windows向けのプロジェクトを用意します。Render pipelineはUniversal Render Pipeline (URP)の利用を推奨します。Package Managerの+ > Install package by nameを開き、上表のパッケージIDをNameに、バージョンをVersionに入力してInstallを押します。OpenXR Plugin、XR Hands、Input Systemの3つについて繰り返してください。
次の自動起動・描画・入力の設定を確認したあと、Package ManagerのXR Hands > Samples > HandVisualizerでImportを押し、Assets/Samplesに導入されるHandVisualizer.unityを開きます。
自動起動の設定
Edit > Project Settings > XR Plug-in Managementで設定します。本手順では、PlayやPlayer起動時にXRと手の追跡を自動で開始します。
| 設定 | 値 |
|---|---|
| OpenXR loader | ON |
| Initialize XR on Startup | ON |
| Hand Tracking Subsystem | ON |
| Auto Start Subsystem | ON |
OpenXRとInitialize XR on StartupをONにします。続いてXR Plug-in Management > OpenXRのFeature一覧でHand Tracking SubsystemをONにし、右側の歯車からAuto Start SubsystemをONにします。
自分のアプリケーションで起動処理を実装する場合は、XRの初期化や手の追跡の開始を手動で制御することもできます。
実行する
Window > XR > OpenXR > Project Validationのエラーを確認し、選択したruntimeと機器に合う設定にします。コントローラー入力を利用する場合は、対応するInteraction Profileと入力のbindingも設定してください。
SteamVRをOpenXR runtimeとして設定しておいてください。DivingStation、ContactGlove3 Pro、ヘッドマウントディスプレイ(HMD)、ポジショントラッカーを準備し、SteamVRで正常にトラッキングされている状態にしてください。手の関節データを取得するには、runtimeがXR_EXT_hand_trackingを通じて手のデータを提供している必要があります。
HandVisualizerシーンでPlayを押し、VR映像内で左右の手の形状・向き・動きを確認します。表示されない場合は、トラブルシューティングをご覧ください。
