UnitySDKの使用方法
このページではv1.1.0以降のSDKの使い方を説明しています。

使用例
Assets/ContactGloveSDK/Example/ フォルダ内には HowToUse_SteamVR と HowToUse_NoSteamVR の2つのシーンが存在しています。
- HowToUse_SteamVRシーンは、SteamVRのSkeltal Inputとの併用を想定したサンプルシーンです。実行にはSteamVR Pluginが必要です。
- HowToUse_NoSteamVRシーンは、ContactGloveへの各種情報へのアクセスのみを目的としたサンプルシーンです。
本ページではHowToUse_NoSteamVRシーンを使用して、ContactGlove API の使用方法を説明します。このシーンでは、ボタン入力による振動の発生、ジョイスティックによる移動、指の曲げ具合の表示を行っています。
ContactGlove API へのアクセス
ContactGloveManagerWithSteamVR.cs もしくは ContactGloveManager.cs がアタッチされているオブジェクトから コンポーネントを取得することで、ContactGlove API へアクセスすることができます。
IContactGloveManager gloveManager = GetComponent<IContactGloveManager>();Hands という名前のオブジェクトに ContactGloveManager がアタッチされています。

HowToUse という名前のオブジェクトにアタッチされている HowToUse.csでは、 Start関数内で IContactGloveManager を取得しています

void Start()
{
this.cgManager = contactGloveObj.GetComponent<IContactGloveManager>();
}このようにして取得した IContactGloveManager を通じて ContactGlove API へアクセスすることができます。
複数台運用
v1.1.0以降のSDKでは複数のContactGloveを同時に運用することができます。 新しいデバイスを追加する場合は Assets/ContactGloveSDK/Prefab 内にある Hands プレハブをシーン内に配置してください。

HandsにアタッチされているContactGloveManagerのPriority属性が最初はNoneになっています。これをいずれか別の値に変更することで他のデバイスに対応させることができます。

OSCポートの変更
ToDSCommunicatorオブジェクトのReceive Osc Portを変更してください。

振動の発生
HowToUse_NoSteamVR シーンでは、キーボード入力によって振動を発生させています。
void Update()
{
if (Input.GetKeyDown(KeyCode.F))
{
cgManager.SetVibration(HandSides.Left, 0.2f, 160.0f, 0.5f);
}
if (Input.GetKeyDown(KeyCode.J))
{
cgManager.SetVibration(HandSides.Right, 0.2f, 160.0f, 0.5f);
}
}指の関節の回転量の取得
float flex = cgManager.GetFingerRotationAmplitude(HandSides.Left, FingerRotationAmplitude_e.IndexDistal);上記のコードでは、左手の人差し指の第1関節の回転量を取得しています。
コントローラ入力
コントローラ入力をトリガーにして特定のイベントを登録することができます。 下記のコードでは、左手のAボタンが押された時に、振動を0.1秒間発生させています。
void Start()
{
this.cgManager.AddOnControllerInputHandler(HandSides.Left, ControllerButtonType.A, () =>
{
cgManager.SetVibration(HandSides.Left, 0.5f, 160, 0.1f);
});
}また、コントローラの入力値を取得したい場合は以下のようにします。 このコードでは、左手Aボタンの入力状態と、右手ジョイスティックのx座標を取得しています。
ButtonState leftA = cgManager.GetControllerInput(HandSides.Left, ControllerButtonType.A);
float rightX = cgManager.GetControllerInput(HandSides.Right, ControllerFloatInputType.JoystickX);手首の回転の取得
下記のコードでは、左手の手首の回転を取得しています。
Quaternion leftWrist = cgManager.GetWristPose(HandSides.Left);より詳細な使用方法については、ドキュメントを参照してください。