【Unity】【Oculus Quest2】コントローラーの位置と角度の取得

目次

コントローラー座標と回転の取得方法の種類

コントローラーの座標の取得方法は2通りの方法があります。

  1. コントローラーオブジェクトのTransformを取得する
  2. OVRInputクラスのGetLocalControllerPositionGetLocalControllerRotationを使用する

1. コントローラーオブジェクトのTransformを取得する

以下の画像の赤枠のオブジェクト2つがそれぞれ右手コントローラーと左手コントローラーのオブジェクトになります。

ControllerTarget

サンプルコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[SerializeField] private Transform rightControllerTransform;
[SerializeField] private Transform leftControllerTransform;

private void Update()
{
// 右手座標の取得
Debug.Log(rightControllerTransform.position);
// 右手回転の取得
Debug.Log(rightControllerTransform.eulerAngles);

// 左手座標の取得
Debug.Log(leftControllerTransform.position);
// 左手回転の取得
Debug.Log(leftControllerTransform.eulerAngles);
}

備考

  • Inspectorの参照忘れが起こりそうなうえ、あまり美しくない気がする

2. OVRInputクラスのGetLocalControllerPosition,GetLocalControllerRotationを使用する

OVRInputクラスに用意されている、GetLocalControllerPositionGetLocalControllerRotationを使用することで、コントローラーのローカル座標を取得することができます。

取得した、ローカル座標をTrackingSpace座標空間に変換することで、コントローラーのワールド座標を取得することができます。

TrackingSpaceは以下の赤枠のオブジェクトです。

TrackingSpace

サンプルコード

  • 右手 : OVRInput.Controller.RTouch
  • 左手 : OVRInput.Controller.LTouch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[SerializeField] private Transform TrackingSpace;

private void Update()
{
// 右手
// コントローラーの位置を取得
Vector3 localPos = OVRInput.GetLocalControllerPosition(OVRInput.Controller.RTouch);
Vector3 rpos = TrackingSpace.TransformPoint(localPos);

// コントローラーの角度を取得
Vector3 localRot = OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTouch);
Vector3 rrot = TrackingSpace.TransformDirection(localRot);

Debug.Log(rpos);
Debug.Log(rrot);

// 左手
// コントローラーの位置を取得
Vector3 localPos = OVRInput.GetLocalControllerPosition(OVRInput.Controller.LTouch);
Vector3 lpos = TrackingSpace.TransformPoint(localPos);

// コントローラーの角度を取得
Vector3 localRot = OVRInput.GetLocalControllerRotation(OVRInput.Controller.LTouch);
Vector3 lrot = TrackingSpace.TransformDirection(localRot);

Debug.Log(lpos);
Debug.Log(lrot);
}

備考

  • 1の方法よりはInspectorの参照忘れが起こらなさそう?

参考

【Unity】【Oculus Quest2】コントローラーの位置と角度の取得

https://blog.djima.net/2021/07/26/【Unity】【Oculus-Quest2】コントローラーの位置と角度の取得/

Author

Daiki Iijima

Posted on

2021-07-26

Updated on

2024-04-17

Licensed under