Uzyskiwanie dostępu do stanu danych wejściowych w zestawie narzędzi MRTK — MRTK2
Istnieje możliwość bezpośredniego wykonywania zapytań dotyczących stanu wszystkich danych wejściowych w zestawie narzędzi MRTK przez iterowanie nad kontrolerami dołączonymi do źródeł wejściowych. MrTK zapewnia również wygodne metody uzyskiwania dostępu do położenia i obrotu oczu, rąk, głowy i kontrolera ruchu.
Zobacz scenę InputDataExample, aby zapoznać się z przykładem wykonywania zapytań dotyczących danych wejściowych zarówno za pośrednictwem iteracji nad kontrolerami, jak i przy użyciu InputRayUtils
klasy .
Przykład: Pozycja dostępu, obrót głowy, ręce, oczy w MRTK
Klasa MRTK zapewnia wygodne metody uzyskiwania InputRayUtils
dostępu do promienia ręki, promienia głowy, promienia wzrokowego i promieni kontrolera ruchu.
Dodaj następujące przestrzenie nazw do skryptu:
using Microsoft.MixedReality.Toolkit.Input;
using Microsoft.MixedReality.Toolkit.Utilities;
Przykładowy kod:
// Get the head ray
UnityEngine.Ray headRay = InputRayUtils.GetHeadGazeRay();
// Get the right hand ray
if (InputRayUtils.TryGetHandRay(Handedness.Right, out UnityEngine.Ray rightHandRay))
{
// Right hand ray is available
}
else
{
// Right hand ray is not available
}
Przykład: pozycja dostępu, rotacja wszystkich kontrolerów 6DOF aktywnych w scenie
Dodaj następujące przestrzenie nazw do skryptu:
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
Przykładowy kod:
foreach (IMixedRealityController controller in CoreServices.InputSystem.DetectedControllers)
{
// Interactions for a controller is the list of inputs that this controller exposes
foreach (MixedRealityInteractionMapping interactionMapping in controller.Interactions)
{
// 6DOF controllers support the "SpatialPointer" type (pointing direction)
// or "GripPointer" type (direction of the 6DOF controller)
if (interactionMapping.InputType == DeviceInputType.SpatialPointer)
{
Debug.Log("Spatial pointer PositionData: " + interactionMapping.PositionData);
Debug.Log("Spatial pointer RotationData: " + interactionMapping.RotationData);
}
if (interactionMapping.InputType == DeviceInputType.SpatialGrip)
{
Debug.Log("Spatial grip PositionData: " + interactionMapping.PositionData);
Debug.Log("Spatial grip RotationData: " + interactionMapping.RotationData);
}
}
}