version 2.2.0

This commit is contained in:
srl87
2024-01-10 14:20:05 +08:00
parent 11b730e79b
commit 45b4e46f74
211 changed files with 107849 additions and 1160 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d666d7e462cfc904b8684b09ffaab15f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: eff108a5209eb0a48804dfdba0dabb63
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,285 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &8419823203306955676
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8419823203306955648}
- component: {fileID: 8419823203306955651}
- component: {fileID: 8419823203306955650}
- component: {fileID: 8419823203306955677}
m_Layer: 0
m_Name: CustomGestureDefiner
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8419823203306955648
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8419823203306955676}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.63137037, y: 1.8553617, z: -2.3483706}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8419823203306955651
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8419823203306955676}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a4717f5ed1f0b0a4a8a1aa02c8d30b06, type: 3}
m_Name:
m_EditorClassIdentifier:
LFingers:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
RFingers:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
CurrentGestureL: {fileID: 0}
CurrentGestureR: {fileID: 0}
CurrentGestureDual: {fileID: 0}
--- !u!114 &8419823203306955650
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8419823203306955676}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1fc3b0937a9ed7d4a82e0a0c262beaf4, type: 3}
m_Name:
m_EditorClassIdentifier:
ThumbDefiner:
StraightDistalLowBound: 150
StraightIntermediateLowBound: 150
StraightProximalLowBound: 150
BendingDistalLowBound: 140
BendingIntermediateLowBound: 140
BendingProximalLowBound: 140
IndexDefiner:
StraightDistalLowBound: 160
StraightIntermediateLowBound: 160
StraightProximalLowBound: 160
BendingDistalLowBound: 120
BendingIntermediateLowBound: 120
BendingProximalLowBound: 120
MiddleDefiner:
StraightDistalLowBound: 160
StraightIntermediateLowBound: 160
StraightProximalLowBound: 160
BendingDistalLowBound: 120
BendingIntermediateLowBound: 120
BendingProximalLowBound: 120
RingDefiner:
StraightDistalLowBound: 160
StraightIntermediateLowBound: 160
StraightProximalLowBound: 160
BendingDistalLowBound: 120
BendingIntermediateLowBound: 120
BendingProximalLowBound: 120
PinkyDefiner:
StraightDistalLowBound: 160
StraightIntermediateLowBound: 160
StraightProximalLowBound: 160
BendingDistalLowBound: 120
BendingIntermediateLowBound: 120
BendingProximalLowBound: 120
--- !u!114 &8419823203306955677
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8419823203306955676}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d622bde162fe6524aa1cf99ee5bbda11, type: 3}
m_Name:
m_EditorClassIdentifier:
DefinedGestures:
- GestureName: Fist
TargetHand: 3
ThumbStatus: 0
IndexStatus: 0
MiddleStatus: 0
RingStatus: 0
PinkyStatus: 0
ThumbStatusIs: 3
IndexStatusIs: 3
MiddleStatusIs: 3
RingStatusIs: 3
PinkyStatusIs: 4
DualHandDistance: 0
DualNear: 0
DualFar: 0
ThumbIndexDistance: 0
SingleNear: 0
SingleFar: 0
- GestureName: Point
TargetHand: 3
ThumbStatus: 3
IndexStatus: 1
MiddleStatus: 3
RingStatus: 3
PinkyStatus: 0
ThumbStatusIs: 3
IndexStatusIs: 1
MiddleStatusIs: 4
RingStatusIs: 4
PinkyStatusIs: 4
DualHandDistance: 0
DualNear: 0
DualFar: 0
ThumbIndexDistance: 0
SingleNear: 0
SingleFar: 0
- GestureName: Victory
TargetHand: 3
ThumbStatus: 3
IndexStatus: 1
MiddleStatus: 1
RingStatus: 3
PinkyStatus: 0
ThumbStatusIs: 4
IndexStatusIs: 1
MiddleStatusIs: 1
RingStatusIs: 4
PinkyStatusIs: 4
DualHandDistance: 0
DualNear: 0
DualFar: 0
ThumbIndexDistance: 2
SingleNear: 0
SingleFar: 0
- GestureName: OK
TargetHand: 3
ThumbStatus: 3
IndexStatus: 1
MiddleStatus: 1
RingStatus: 1
PinkyStatus: 0
ThumbStatusIs: 6
IndexStatusIs: 4
MiddleStatusIs: 6
RingStatusIs: 6
PinkyStatusIs: 6
DualHandDistance: 0
DualNear: 0
DualFar: 0
ThumbIndexDistance: 1
SingleNear: 3
SingleFar: 5.5
- GestureName: Like
TargetHand: 3
ThumbStatus: 3
IndexStatus: 1
MiddleStatus: 1
RingStatus: 1
PinkyStatus: 0
ThumbStatusIs: 6
IndexStatusIs: 3
MiddleStatusIs: 3
RingStatusIs: 3
PinkyStatusIs: 3
DualHandDistance: 0
DualNear: 0
DualFar: 0
ThumbIndexDistance: 2
SingleNear: 3
SingleFar: 5.5
- GestureName: Five
TargetHand: 3
ThumbStatus: 1
IndexStatus: 1
MiddleStatus: 1
RingStatus: 1
PinkyStatus: 0
ThumbStatusIs: 6
IndexStatusIs: 1
MiddleStatusIs: 1
RingStatusIs: 1
PinkyStatusIs: 1
DualHandDistance: 0
DualNear: 0
DualFar: 0
ThumbIndexDistance: 0
SingleNear: 0
SingleFar: 0
- GestureName: Rock
TargetHand: 3
ThumbStatus: 1
IndexStatus: 1
MiddleStatus: 3
RingStatus: 3
PinkyStatus: 0
ThumbStatusIs: 1
IndexStatusIs: 1
MiddleStatusIs: 3
RingStatusIs: 3
PinkyStatusIs: 1
DualHandDistance: 0
DualNear: 0
DualFar: 0
ThumbIndexDistance: 0
SingleNear: 0
SingleFar: 0
- GestureName: Vive
TargetHand: 4
ThumbStatus: 1
IndexStatus: 1
MiddleStatus: 3
RingStatus: 3
PinkyStatus: 0
ThumbStatusIs: 6
IndexStatusIs: 6
MiddleStatusIs: 0
RingStatusIs: 0
PinkyStatusIs: 0
DualHandDistance: 1
DualNear: 10
DualFar: 20
ThumbIndexDistance: 2
SingleNear: 5
SingleFar: 10
- GestureName: Push
TargetHand: 4
ThumbStatus: 1
IndexStatus: 1
MiddleStatus: 3
RingStatus: 3
PinkyStatus: 0
ThumbStatusIs: 1
IndexStatusIs: 1
MiddleStatusIs: 1
RingStatusIs: 1
PinkyStatusIs: 1
DualHandDistance: 2
DualNear: 10
DualFar: 20
ThumbIndexDistance: 0
SingleNear: 5
SingleFar: 10

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d40280e42e98ad344b4cc9286448e6ff
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 760bbc4da8f43814c8291367d09bc819
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,162 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using VIVE.OpenXR.Hand;
using VIVE.OpenXR.Toolkits.CustomGesture;
public class DebugHandGesture : MonoBehaviour
{
public Text[] LFingers;
public Text[] RFingers;
public Text CurrentGestureL;
public Text CurrentGestureR;
public Text CurrentGestureDual;
CustomGestureManager HGM;
CustomGestureDefiner GD;
void Start()
{
GD = GetComponent<CustomGestureDefiner>();
HGM = GetComponent<CustomGestureManager>();
}
void Update()
{
UpdateFingerStatus(CGEnums.HandFlag.Left); //get real left hand finger status
UpdateFingerStatus(CGEnums.HandFlag.Right); //get real right hand finger status
ShowCurrentGesture();
}
void ShowCurrentGesture()
{
CurrentGestureL.text = "LGesture: " + "No Gesture";
CurrentGestureR.text = "RGesture: " + "No Gesture";
CurrentGestureDual.text = "DualGesture: " + "No Gesture";
if (!IsGestureReady())
return;
foreach (CustomGesture _Gestures in GD.DefinedGestures)
{
switch (_Gestures.TargetHand)
{
case CGEnums.HandFlag.Either:
//check left hand gesture
if (CustomGestureDefiner.IsCurrentGestureTriiggered(_Gestures.GestureName, CGEnums.HandFlag.Left) && CheckHandValid(CGEnums.HandFlag.Left))
CurrentGestureL.text = "LGesture: " + _Gestures.GestureName;
//check right hand gesture
if (CustomGestureDefiner.IsCurrentGestureTriiggered(_Gestures.GestureName, CGEnums.HandFlag.Right) && CheckHandValid(CGEnums.HandFlag.Right))
CurrentGestureR.text = "RGesture: " + _Gestures.GestureName;
//Debug.Log("DebugHandGesture ShowCurrentGesture() " + _Gestures.GestureName);
break;
case CGEnums.HandFlag.Dual:
if (CustomGestureDefiner.IsCurrentGestureTriiggered(_Gestures.GestureName, CGEnums.HandFlag.Dual) && CheckHandValid(CGEnums.HandFlag.Left) && CheckHandValid(CGEnums.HandFlag.Right))
{
CurrentGestureDual.text = "DualGesture: " + _Gestures.GestureName;
}
break;
default:
CurrentGestureL.text = "LGesture: " + "No Gesture";
CurrentGestureR.text = "RGesture: " + "No Gesture";
CurrentGestureDual.text = "DualGesture: " + "No Gesture";
break;
}
}
}
void UpdateFingerStatus(CGEnums.HandFlag _Hand)
{
Text[] _Fingers = (_Hand == CGEnums.HandFlag.Left) ? LFingers : RFingers;
_Fingers[0].text = HGM.GetFingerStatus(_Hand, CGEnums.FingerFlag.Thumb).ToString();
_Fingers[1].text = HGM.GetFingerStatus(_Hand, CGEnums.FingerFlag.Index).ToString();
_Fingers[2].text = HGM.GetFingerStatus(_Hand, CGEnums.FingerFlag.Middle).ToString();
_Fingers[3].text = HGM.GetFingerStatus(_Hand, CGEnums.FingerFlag.Ring).ToString();
_Fingers[4].text = HGM.GetFingerStatus(_Hand, CGEnums.FingerFlag.Pinky).ToString();
}
bool CheckHandValid(CGEnums.HandFlag _Hand) {
HandJoint[] _Joints = CustomGestureManager.GetHandJointLocations(_Hand);
//Debug.Log("CheckHandValid() 0:" + _Joints[(int)XrHandJointEXT.XR_HAND_JOINT_PALM_EXT].isValid + ", 1:" +
//_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_WRIST_EXT].isValid + ", 2:" +
//_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_THUMB_TIP_EXT].isValid + ", 3:" +
//_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_INDEX_TIP_EXT].isValid + ", 4:" +
//_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_MIDDLE_TIP_EXT].isValid);
if (!(_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_PALM_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_WRIST_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_THUMB_TIP_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_THUMB_PROXIMAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_THUMB_DISTAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_INDEX_METACARPAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_INDEX_PROXIMAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_INDEX_INTERMEDIATE_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_INDEX_DISTAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_INDEX_TIP_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_MIDDLE_METACARPAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_MIDDLE_PROXIMAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_MIDDLE_INTERMEDIATE_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_MIDDLE_DISTAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_MIDDLE_TIP_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_RING_METACARPAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_RING_PROXIMAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_RING_INTERMEDIATE_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_RING_DISTAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_RING_TIP_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_LITTLE_METACARPAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_LITTLE_PROXIMAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_LITTLE_INTERMEDIATE_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_LITTLE_DISTAL_EXT].isValid &&
_Joints[(int)XrHandJointEXT.XR_HAND_JOINT_LITTLE_TIP_EXT].isValid))
{
//Debug.Log("DebugHandGesture CheckHandValid() not valid hand: "+ _Hand);
return false;
}
//Debug.Log("DebugHandGesture CheckHandValid() valid hand: " + _Hand);
return true;
}
bool IsGestureReady() {
HandJoint[] _JointsL = CustomGestureManager.GetHandJointLocations(CGEnums.HandFlag.Left);
HandJoint[] _JointsR = CustomGestureManager.GetHandJointLocations(CGEnums.HandFlag.Right);
//Debug.Log("IsGestureReady left before: " + HandTracking.GetHandJointLocations(HandFlag.Left)[0].isValid + ", " +
//_JointsL[1].isValid + ", " + _JointsL[2].isValid + ", " + _JointsL[3].isValid + ", " + _JointsL[4].isValid + ", " +
//_JointsL[5].isValid + ", " + _JointsL[6].isValid + ", " + _JointsL[7].isValid + ", " + _JointsL[8].isValid + ", " +
//_JointsL[9].isValid + ", " + _JointsL[10].isValid + ", " + _JointsL[11].isValid + ", " + _JointsL[12].isValid + ", " +
//_JointsL[13].isValid + ", " + _JointsL[14].isValid + ", " + _JointsL[15].isValid + ", " + _JointsL[16].isValid + ", " +
//_JointsL[17].isValid + ", " + _JointsL[18].isValid + ", " + _JointsL[19].isValid + ", " + _JointsL[20].isValid);*/
if (_JointsL[(int)XrHandJointEXT.XR_HAND_JOINT_PALM_EXT].position.x == 0 &&
_JointsL[(int)XrHandJointEXT.XR_HAND_JOINT_PALM_EXT].position.y == 0 &&
_JointsL[(int)XrHandJointEXT.XR_HAND_JOINT_PALM_EXT].position.z == 0 &&
_JointsR[(int)XrHandJointEXT.XR_HAND_JOINT_PALM_EXT].position.x == 0 &&
_JointsR[(int)XrHandJointEXT.XR_HAND_JOINT_PALM_EXT].position.y == 0 &&
_JointsR[(int)XrHandJointEXT.XR_HAND_JOINT_PALM_EXT].position.z == 0)
{
//Debug.Log("IsGestureReady left palm before: " + _JointsL[0].position.x + ", " + _JointsL[0].position.y + ", " + _JointsL[0].position.z);
//Debug.Log("IsGestureReady right palm before: " + _JointsR[0].position.x + ", " + _JointsR[0].position.y + ", " + _JointsR[0].position.z);
//Debug.Log("IsGestureReady left wrist before: " + _JointsL[1].position.x + ", " + _JointsL[1].position.y + ", " + _JointsL[1].position.z);
//Debug.Log("IsGestureReady right wrist before: " + _JointsR[1].position.x + ", " + _JointsR[1].position.y + ", " + _JointsR[1].position.z);
//Debug.Log("DebugHandGesture IsGestureReady() not ready");
return false;
}
//Vector3 _LBone1Dir = Vector3.zero, _LBone2Dir = Vector3.zero, _RBone1Dir = Vector3.zero, _RBone2Dir = Vector3.zero;
//HandJoint[] _LJoints = /*HandTracking.*/CustomGestureManager.GetHandJointLocations(HandFlag.Left);
//_LBone1Dir = _LJoints[(int)(XrHandJointEXT.XR_HAND_JOINT_THUMB_DISTAL_EXT + 1)].position - _LJoints[(int)XrHandJointEXT.XR_HAND_JOINT_THUMB_DISTAL_EXT].position;
//_LBone2Dir = _LJoints[(int)(XrHandJointEXT.XR_HAND_JOINT_THUMB_DISTAL_EXT - 1)].position - _LJoints[(int)XrHandJointEXT.XR_HAND_JOINT_THUMB_DISTAL_EXT].position;
//Debug.Log("IsGestureReady left : " + Vector3.Angle(_LBone1Dir, _LBone2Dir));
//HandJoint[] _RJoints = /*HandTracking.*/CustomGestureManager.GetHandJointLocations(HandFlag.Right);
//_RBone1Dir = _RJoints[(int)(XrHandJointEXT.XR_HAND_JOINT_THUMB_DISTAL_EXT + 1)].position - _RJoints[(int)XrHandJointEXT.XR_HAND_JOINT_THUMB_DISTAL_EXT].position;
//_RBone2Dir = _RJoints[(int)(XrHandJointEXT.XR_HAND_JOINT_THUMB_DISTAL_EXT - 1)].position - _RJoints[(int)XrHandJointEXT.XR_HAND_JOINT_THUMB_DISTAL_EXT].position;
//Debug.Log("IsGestureReady right : " + Vector3.Angle(_RBone1Dir, _RBone2Dir));
return true;
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a4717f5ed1f0b0a4a8a1aa02c8d30b06
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -4,6 +4,7 @@ using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
using UnityEngine.XR;
using UnityEngine.XR.OpenXR;
namespace VIVE.OpenXR.Samples.OpenXRInput
{
@@ -159,9 +160,12 @@ namespace VIVE.OpenXR.Samples.OpenXRInput
private float GetRefreshRate()
{
if (XR_FB_display_refresh_rate.GetDisplayRefreshRate(out float rate) == XrResult.XR_SUCCESS) { return rate; }
if (!OpenXRRuntime.IsExtensionEnabled("XR_FB_display_refresh_rate"))
return 0.0f;
return 0;
if (XR_FB_display_refresh_rate.GetDisplayRefreshRate(out float rate) == XrResult.XR_SUCCESS) { return rate; }
return 0.0f;
}
}
}

View File

@@ -0,0 +1,118 @@
// Copyright HTC Corporation All Rights Reserved.
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.XR;
namespace VIVE.OpenXR.Samples.OpenXRInput
{
[RequireComponent(typeof(Text))]
public class InputDevicesText : MonoBehaviour
{
public bool useXrNode = false;
public bool useRole = false;
public int StartIndex = 0, EndIndex = 0;
private Text m_Text = null;
private void Awake()
{
m_Text = GetComponent<Text>();
}
private readonly XRNode[] s_XrNodes = new XRNode[]
{
XRNode.LeftEye, // 0
XRNode.RightEye,
XRNode.CenterEye,
XRNode.Head,
XRNode.LeftHand,
XRNode.RightHand, // 5
XRNode.TrackingReference,
XRNode.HardwareTracker,
};
private readonly InputDeviceRole[] s_DeviceRoles = new InputDeviceRole[]
{
InputDeviceRole.Generic, // 0
InputDeviceRole.LeftHanded,
InputDeviceRole.RightHanded,
InputDeviceRole.GameController,
InputDeviceRole.TrackingReference,
InputDeviceRole.HardwareTracker, // 5
InputDeviceRole.LegacyController,
};
private readonly InputDeviceCharacteristics[] s_Characteristics = new InputDeviceCharacteristics[]
{
InputDeviceCharacteristics.HeadMounted, // 0
InputDeviceCharacteristics.Camera,
InputDeviceCharacteristics.HeldInHand,
InputDeviceCharacteristics.HandTracking,
InputDeviceCharacteristics.EyeTracking,
InputDeviceCharacteristics.TrackedDevice, // 5
InputDeviceCharacteristics.Controller,
InputDeviceCharacteristics.TrackingReference,
InputDeviceCharacteristics.Left,
InputDeviceCharacteristics.Right,
InputDeviceCharacteristics.Simulated6DOF,
};
internal static List<InputDevice> s_InputDevicesXrNode = new List<InputDevice>();
internal static List<InputDevice> s_InputDevices = new List<InputDevice>();
internal static List<InputDevice> s_InputDevicesRole = new List<InputDevice>();
private void Update()
{
if (m_Text == null) { return; }
if (useXrNode)
{
m_Text.text = "";
//for (int node = 0; node < s_XrNodes.Length; node++)
{
InputDevices.GetDevicesAtXRNode(s_XrNodes[7], s_InputDevicesXrNode);
m_Text.text += "Node " + s_XrNodes[7] + " (" + s_InputDevicesXrNode.Count + "):\n";
for (int i = 0; i < s_InputDevicesXrNode.Count; i++)
{
m_Text.text += "\n" + i + "." + s_InputDevicesXrNode[i].name;
m_Text.text += "\n characteristics: " + s_InputDevicesXrNode[i].characteristics;
m_Text.text += "\n serialNumber: " + s_InputDevicesXrNode[i].serialNumber;
m_Text.text += "\n";
}
m_Text.text += "\n";
}
return;
}
if (useRole)
{
m_Text.text = "";
//for (int role = 0; role < s_DeviceRoles.Length; role++)
{
#pragma warning disable
InputDevices.GetDevicesWithRole(s_DeviceRoles[5], s_InputDevicesRole);
#pragma warning enable
//InputDevices.GetDevicesWithCharacteristics(s_Characteristics[5], s_InputDevicesRole);
m_Text.text += "Role " + s_DeviceRoles[5] + " (" + s_InputDevicesRole.Count + "):\n";
for (int i = 0; i < s_InputDevicesRole.Count; i++)
{
m_Text.text += "\n" + i + "." + s_InputDevicesRole[i].name;
m_Text.text += "\n characteristics: " + s_InputDevicesRole[i].characteristics;
m_Text.text += "\n serialNumber: " + s_InputDevicesRole[i].serialNumber;
m_Text.text += "\n";
}
m_Text.text += "\n";
}
return;
}
InputDevices.GetDevices(s_InputDevices);
m_Text.text = "Input Devices (" + s_InputDevices.Count + "):\n";
for (int i = StartIndex; i < s_InputDevices.Count && i <= EndIndex; i++)
{
m_Text.text += "\n" + i + "." + s_InputDevices[i].name;
m_Text.text += "\n characteristics: " + s_InputDevices[i].characteristics;
m_Text.text += "\n serialNumber: " + s_InputDevices[i].serialNumber;
m_Text.text += "\n";
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 871111764a2c66043bf49bde40b9bb1f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -29,8 +29,8 @@ namespace VIVE.OpenXR.Samples.OpenXRInput
}
[SerializeField]
private int m_Index = 0;
public int Index { get { return m_Index; } set { m_Index = value; } }
private string m_TrackerName = "";
public string TrackerName { get { return m_TrackerName; } set { m_TrackerName = value; } }
[SerializeField]
private InputActionReference m_IsTracked = null;
@@ -58,7 +58,7 @@ namespace VIVE.OpenXR.Samples.OpenXRInput
{
if (m_Text == null) { return; }
m_Text.text = "Tracker" + m_Index;
m_Text.text = m_TrackerName;
m_Text.text += " isTracked: ";
{

View File

@@ -34,7 +34,24 @@ namespace VIVE.OpenXR.CompositionLayer.Samples.Passthrough
private void Update()
{
if (passthroughMesh != null && passthroughMeshTransform != null)
if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.B)) //Set Passthrough as Overlay
{
SetPassthroughToOverlay();
}
if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.A)) //Set Passthrough as Underlay
{
SetPassthroughToUnderlay();
}
if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.X)) //Switch to world lock
{
SetWorldLock();
}
if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.Y)) //Switch to head lock
{
SetHeadLock();
}
if (passthroughMesh != null && passthroughMeshTransform != null)
{
if (activePassthroughID == 0)
{
@@ -45,23 +62,6 @@ namespace VIVE.OpenXR.CompositionLayer.Samples.Passthrough
SetPassthroughMesh();
}
}
if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.B)) //Set Passthrough as Overlay
{
SetPassthroughToOverlay();
}
if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.A)) //Set Passthrough as Underlay
{
SetPassthroughToUnderlay();
}
if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.X)) //Switch to world lock
{
SetWorldLock();
}
if (VRSInputManager.instance.GetButtonDown(VRSButtonReference.Y)) //Switch to head lock
{
SetHeadLock();
}
}
public void SetPassthroughToOverlay()