Zugreifen auf den Eingabezustand im MRTK

Es ist möglich, den Status aller Eingaben im MRTK direkt abzufragen, indem Die Controller, die an die Eingabequellen angefügt sind, iterieren. MRTK bietet auch praktische Methoden für den Zugriff auf die Position und Drehung von Augen, Händen, Kopf und Bewegungscontroller.

In der InputDataExample-Szene finden Sie ein Beispiel für das Abfragen von Eingaben sowohl über das Iterieren von Controllern als auch mithilfe der InputRayUtils -Klasse.

Beispiel: Zugriffsposition, Drehung von Kopf, Händen, Augen im MRTK

Die InputRayUtils MRTK-Klasse bietet praktische Methoden für den Zugriff auf hand ray, head ray, eye gaze ray und motion controller ray.

// Get the head ray
var headRay = InputRayUtils.GetHeadGazeRay();

// Get the right hand ray
Ray rightHandRay;
if(InputRayUtils.TryGetHandRay(Handedness.right, rightHandRay))
{
    // Right hand ray is available
}
else
{
    // Right hand ray is not available
}

Beispiel: Zugriffsposition, Drehung aller in der Szene aktiven 6DOF-Controller

foreach(var controller in CoreServices.InputSystem.DetectedControllers)
{
    // Interactions for a controller is the list of inputs that this controller exposes
    foreach(MixedRealityInteractionMapping inputMapping in controller.Interactions)
    {
        // 6DOF controllers support the "SpatialPointer" type (pointing direction)
        // or "GripPointer" type (direction of the 6DOF controller)
        if (inputMapping.InputType == DeviceInputType.SpatialPointer)
        {
            Debug.Log("spatial pointer PositionData: " + inputMapping.PositionData);
            Debug.Log("spatial pointer RotationData: " + inputMapping.RotationData);
        }

        if (inputMapping.InputType == DeviceInputType.SpatialGrip)
        {
            Debug.Log("spatial grip PositionData: " + inputMapping.PositionData);
            Debug.Log("spatial grip RotationData: " + inputMapping.RotationData);
        }
    }
}

Siehe auch