Sistema di teletrasporto - MRTK2

Il sistema di teletrasportazione è un sotto system di MRTK che gestisce il teletrasportamento dell'utente quando l'applicazione usa una visualizzazione opaca. Per le esperienze AR (ad esempio HoloLens), il sistema di teletrasporto non è attivo. Per le esperienze HMD immersive (OpenVR, WMR) è possibile abilitare il sistema di teletrasporto.

Abilitazione e disabilitazione

Il sistema di teletrasporto può essere abilitato o disabilitato attivando o disattivando la casella di controllo nel proprio profilo. A tale scopo, selezionare l'oggetto MixedRealityToolkit nella scena, fare clic su "Teleport" e quindi attivare la casella di controllo "Abilita sistema di teletrasporto".

Questa operazione può essere eseguita anche in fase di esecuzione:

void DisableTeleportSystem()
{
    CoreServices.TeleportSystem.Disable();
}

void EnableTeleportSystem()
{
    CoreServices.TeleportSystem.Enable();
}

evento

Il sistema di teletrasporto espone gli eventi tramite l'interfaccia IMixedRealityTeleportHandler per fornire segnali su quando le azioni di teletrasporto iniziano, terminano o vengono annullate. Per altre informazioni sui meccanismi degli eventi e sul payload associato, vedere la documentazione dell'API collegata.

Utilizzo

Come registrarsi per gli eventi di teletrasporto

Il codice seguente illustra come creare un MonoBehaviour che ascolterà gli eventi di teleportazione. Questo codice presuppone che il sistema di teletrasporto sia abilitato.

using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Teleport;
using UnityEngine;

public class TeleportHandlerExample : MonoBehaviour, IMixedRealityTeleportHandler
{
    public void OnTeleportCanceled(TeleportEventData eventData)
    {
        Debug.Log("Teleport Cancelled");
    }

    public void OnTeleportCompleted(TeleportEventData eventData)
    {
        Debug.Log("Teleport Completed");
    }

    public void OnTeleportRequest(TeleportEventData eventData)
    {
        Debug.Log("Teleport Request");
    }

    public void OnTeleportStarted(TeleportEventData eventData)
    {
        Debug.Log("Teleport Started");
    }

    void OnEnable()
    {
        // This is the critical call that registers this class for events. Without this
        // class's IMixedRealityTeleportHandler interface will not be called.
        CoreServices.TeleportSystem.RegisterHandler<IMixedRealityTeleportHandler>(this);
    }

    void OnDisable()
    {
        // Unregistering when disabled is important, otherwise this class will continue
        // to receive teleportation events.
        CoreServices.TeleportSystem.UnregisterHandler<IMixedRealityTeleportHandler>(this);
    }
}

Teletrasportazione su MRTK

Per eseguire il teletrasporto con un controller nei dispositivi MR con configurazioni predefinite, usare la levetta. Per teletrasportarlo con mani articolate, fai un gesto con il palmo rivolto verso l'alto con l'indice e il pollice che si attacca verso l'esterno, completando il teletrasporto curling il dito indice. Per eseguire il teletrasporto con la simulazione di input, vedere la documentazione aggiornata del servizio simulazione input.

Movimento di teletrasporto