# SDKの使用方法 (v1.1.0以降)

WARNING

このページではv1.1.0以降のSDKの使い方を説明しています。 v1.1.0より前のSDKを使用している場合はこちらを参照してください。

# 使用例

Assets/Sample/ フォルダ内には HowToUse_SteamVR と HowToUse の2つのシーンが存在しています。

  • HowToUse_SteamVRシーンは、SteamVRのSkeltal Inputとの併用を想定したサンプルシーンです
  • HowToUseシーンは、ContactGloveへの各種情報へのアクセスのみを目的としたサンプルシーンです。

本ページではHowToUseシーンを使用して、ContactGlove API の使用方法を説明します。このシーンでは、ボタン入力による振動の発生、ジョイスティックによる移動、指の曲げ具合の表示を行っています。

# ContactGlove API へのアクセス

ContactGloveManagerWithSteamVR.cs もしくは ContactGloveManager.cs がアタッチされているオブジェクトから コンポーネントを取得することで、ContactGlove API へアクセスすることができます。

IContactGloveManager gloveManager = GetComponent<IContactGloveManager>();

Hands という名前のオブジェクトに ContactGloveManager がアタッチされています。

howtouse3

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

howtouse5

void Start()
{
    this.cgManager = contactGloveObj.GetComponent<IContactGloveManager>();
}

このようにして取得した IContactGloveManager を通じて ContactGlove API へアクセスすることができます。

# 複数台運用

v1.1.0以降のSDKでは複数のContactGloveを同時に運用することができます。 新しいデバイスを追加する場合は ContactGloveSDK/Prefab 内にある Hands プレハブをシーン内に配置してください。

howtouse6

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

howtouse7

# OSCポートの変更

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

howtouse4

# 振動の発生

HowToUse シーンでは、キーボード入力によって振動を発生させています。

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, ControllerBoolInputType.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);

より詳細な使用方法については、ドキュメントを参照してください。