Zugreifen auf den Eingabezustand im MRTK

Es ist möglich, den Status aller Eingaben im MRTK direkt durch Iterieren der Controller zu abfragen, die an die Eingabequellen angefügt sind. MRTK bietet auch praktische Methoden für den Zugriff auf die Position und Drehung der Augen, Hände, des Kopfs und des Bewegungscontrollers.

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 MRTK-Klasse bietet Benutzerfreundlichkeitsmethoden für den Zugriff auf den Handstrahl, den Kopfstrahl, den Strahl des Anvierens der Augen und die InputRayUtils Motion Controller-Lichtstrahl.

// 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