Guida alla configurazione del profilo MRTK2

Realtà mista Toolkit centralizza la maggior parte della configurazione necessaria per gestire il toolkit il più possibile (ad eccezione di true runtime "things").

Questa guida è una procedura dettagliata semplice per ogni schermata del profilo di configurazione attualmente disponibile per il toolkit.

Profilo di configurazione principale Realtà mista Toolkit

Il profilo di configurazione principale, collegato a MixedRealityToolkit GameObject nella scena, fornisce il punto di ingresso principale per il Toolkit nel progetto.

Nota

Realtà mista Toolkit "blocca" le schermate di configurazione predefinite per assicurarsi di avere sempre un punto di inizio comune per il progetto ed è consigliabile iniziare a definire le proprie impostazioni durante l'evoluzione del progetto. La configurazione MRTK non è modificabile durante la modalità di riproduzione.

Profilo di configurazione MRTK

Tutti i profili "predefiniti" per Realtà mista Toolkit sono disponibili nel progetto SDK nella cartella Asset/MRTK/SDK/Profili.

Importante

DefaultHoloLens2ConfigurationProfile è ottimizzato per HoloLens 2. Per i dettagli, vedere Profili .

Quando si apre il profilo di configurazione principale Realtà mista Toolkit, verrà visualizzata la schermata seguente nel controllo:

Scena di configurazione MRTK

Se si seleziona un asset MixedRealityToolkitConfigurationProfile senza MixedRealityToolkit nella scena, verrà chiesto se si vuole che MRTK possa configurare automaticamente la scena. Questo è facoltativo; Tuttavia, è necessario che nella scena sia presente un oggetto MixedRealityToolkit attivo per accedere a tutte le schermate di configurazione.

In questo modo viene ospitata la configurazione corrente del runtime attivo per il progetto.

Da qui è possibile passare a tutti i profili di configurazione per MRTK, tra cui:

Questi profili di configurazione sono dettagliati di seguito nelle relative sezioni pertinenti:


Impostazioni dell'esperienza

Situato nella pagina di configurazione principale Realtà mista Toolkit, questa impostazione definisce l'operazione predefinita della scala di ambiente Realtà mista per il progetto.

Impostazioni di esplorazione

Impostazioni della fotocamera

Le impostazioni della fotocamera definiscono la modalità di configurazione della fotocamera per il progetto Realtà mista, definendo le impostazioni generiche di ritaglio, qualità e trasparenza.

Profilo fotocamera

Impostazioni del sistema di input

Il Realtà mista Project fornisce un sistema di input affidabile e ben sottoposto a training per il routing di tutti gli eventi di input intorno al progetto selezionato per impostazione predefinita.

Impostazioni di sistema di input 1

Dietro il sistema di input fornito da MRTK sono diversi altri sistemi, questi consentono di guidare e gestire i complessi inter-trame necessari per astrarre le complessità di un framework di realtà multipiattaforma/mista.

Impostazioni del sistema di input 2

Ognuno dei singoli profili è dettagliato di seguito:


Impostazioni di visualizzazione limiti

Il sistema di limiti converte il limite percepito segnalato dal sistema di limiti/guardiano delle piattaforme sottostanti. La configurazione del visualizzatore limiti consente di visualizzare automaticamente il limite registrato all'interno della scena rispetto alla posizione dell'utente. Il limite reagisce/aggiorna anche in base alla posizione in cui l'utente teleporta all'interno della scena.

Impostazioni di visualizzazione dei limiti

Selezione del sistema di teleportazione

Il Realtà mista Project fornisce un sistema di teleportazione completo per la gestione degli eventi di teleportazione nel progetto selezionato per impostazione predefinita.

Impostazioni del sistema di teleporto

Impostazioni di consapevolezza spaziale

Il progetto Realtà mista fornisce un sistema di consapevolezza spaziale ricompilato per l'uso di sistemi di analisi spaziale nel progetto selezionato per impostazione predefinita.

Impostazioni di consapevolezza spaziale 1

Realtà mista Toolkit di configurazione della consapevolezza spaziale consente di personalizzare il modo in cui il sistema viene avviato automaticamente quando l'applicazione viene avviata o successivamente e impostando gli extent per il campo della visualizzazione.

Consente inoltre di configurare le impostazioni mesh e surface, personalizzando ulteriormente il modo in cui il progetto riconosce l'ambiente intorno all'utente.

Questo è applicabile solo per i dispositivi che possono fornire un ambiente analizzato.

Impostazioni di consapevolezza spaziale 2

Impostazioni di diagnostica

Una funzionalità facoltativa ma estremamente utile di MRTK è la funzionalità di diagnostica del plug-in.

Impostazioni di diagnostica

Il profilo di diagnostica offre diversi sistemi semplici da monitorare durante l'esecuzione del progetto, tra cui un interruttore on/off utile per abilitare/disabilitare il pannello di visualizzazione nella scena.

Impostazioni di diagnostica Impostazioni di sistema 2

Impostazioni del sistema scena

MRTK offre questo servizio facoltativo che consente di gestire il caricamento o lo scaricamento di scene aggiuntive complesse. Per decidere se il sistema scena sarebbe adatto per il progetto, leggere la Guida Introduzione del sistema scene.

Impostazioni del sistema scena 1

Impostazioni aggiuntive dei servizi

Una delle aree più avanzate di Realtà mista Toolkit è l'implementazione del modello di localizzatore di servizi che consente la registrazione di qualsiasi "servizio" con il framework. In questo modo il framework deve essere esteso con nuove funzionalità/sistemi, ma consente anche ai progetti di sfruttare queste funzionalità per registrare i propri componenti di runtime.

Qualsiasi servizio registrato ottiene comunque il vantaggio completo di tutti gli eventi Unity, senza il sovraccarico e il costo dell'implementazione di modelli Singleton MonoBehaviour o clunky. Ciò consente ai componenti C# puri senza sovraccarico della scena per l'esecuzione di processi in primo piano e in background, ad esempio la generazione di sistemi, la logica del gioco di runtime o praticamente qualsiasi altra cosa.

impostazioni di sistema aggiuntive

Impostazioni delle azioni di input

Le azioni di input consentono di astrarre qualsiasi interazione fisica e input da un progetto di runtime. Tutti gli input fisici (da controller/mani/mouse/etc) vengono tradotti in un'azione di input logico da usare nel progetto di runtime. Ciò garantisce, indipendentemente dalla posizione in cui proviene l'input, il progetto implementa semplicemente queste azioni come "Cose da fare" o "Interagisci con" nelle scene.

Per creare una nuova azione di input, fare semplicemente clic sul pulsante "Aggiungi una nuova azione" e immettere un nome di testo descrittivo per ciò che rappresenta. È quindi necessario selezionare un asse (il tipo di dati) che l'azione è destinata a trasmettere o nel caso dei controller fisici, il tipo di input fisico a cui può essere collegato, ad esempio:

Vincolo asse Tipo di dati Descrizione Esempio di utilizzo
Nessuno Nessun dato Usato per un'azione o un evento vuoto Trigger eventi
Non elaborato (riservato) object Riservate per utilizzo futuro N/D
Digitale bool Un valore booleano su o disattivato dati di tipo Pulsante controller
Asse singolo float Valore dei dati di precisione singolo Input a intervalli, ad esempio un trigger
Asse doppio Vector2 Data del tipo a due float per più assi Un Dpad o un pollice
Tre posizioni Dof Vector3 Dati di tipo posizionale da con 3 asse float Solo controller di stile posizione 3D
Tre rotazioni Dof Quaternion Input rotazionale solo con 4 asse float Controller di stile A tre gradi, ad esempio il controller Oculus Go
Sei Dof Realtà mista Pose (Vector3, Quaternion) Input dello stile di posizione e rotazione con componenti Vector3 e Quaternion Un controller di movimento o puntatore

Gli eventi che usano le azioni di input non sono limitati ai controller fisici e possono comunque essere usati all'interno del progetto per generare nuovi effetti di runtime.

Nota

Le azioni di input sono uno dei pochi componenti che non è modificabile in fase di esecuzione, sono solo una configurazione in fase di progettazione. Questo profilo non deve essere scambiato mentre il progetto è in esecuzione a causa del framework (e dei progetti) dipende dalla generazione dell'ID per ogni azione.

Profilo di configurazione

Regole delle azioni di input

Le regole di azione di input consentono di tradurre automaticamente un evento generato per un'azione di input in in azioni diverse in base al valore dei dati. Questi sono gestiti senza problemi all'interno del framework e non comportano costi di prestazioni.

Ad esempio, convertendo l'evento di input a doppio asse singolo da un DPad nel 4 corrispondente "Dpad Up" / "DPad Down" / "Dpad Left" / "Dpad Right" (come illustrato nell'immagine seguente).

Questa operazione può essere eseguita anche nel proprio codice. Tuttavia, visto che questo era un modello molto comune, il framework fornisce un meccanismo per eseguire questa operazione "fuori dalla scatola"

Le regole di azione di input possono essere configurate per qualsiasi asse di input disponibile. Tuttavia, le azioni di input da un tipo di asse possono essere convertite in un'altra azione di input dello stesso tipo di asse. È possibile eseguire il mapping di un'azione a doppio asse a un'altra azione dell'asse duale, ma non a un'azione digitale o nessuna.

Profilo delle regole di azione di input


Configurazione puntatore

I puntatori vengono usati per guidare l'interattività nella scena da qualsiasi dispositivo di input, dando sia una direzione che un hit test con qualsiasi oggetto in una scena (che ha un collider collegato o è un componente dell'interfaccia utente). Per impostazione predefinita, i puntatori sono configurati automaticamente per controller, visori visori (sguardo/stato attivo) e input del mouse/tocco.

I puntatori possono essere visualizzati anche all'interno della scena attiva usando uno dei molti componenti di riga forniti da Realtà mista Toolkit o uno dei propri se implementano l'interfaccia IMixedRealityPointer MRTK.

Profilo puntatore di input
  • Entità puntatore: determina l'estensione globale dei punti per tutti i puntatori, incluso lo sguardo.
  • Puntatore a Raycast Layer Masks: determina i puntatori a livelli che verranno raggiati da.
  • Debug di Raggi di disegno di disegno: helper di debug per visualizzare i raggi usati per il raycasting.
  • Eseguire il debug dei colori dei raggi di disegno: set di colori da usare per la visualizzazione.
  • Prefab del cursore di sguardo: consente di specificare facilmente un cursore di sguardo globale per qualsiasi scena.

C'è un pulsante helper aggiuntivo per passare rapidamente al provider di sguardo per eseguire l'override di alcuni valori specifici per Gaze se necessario.


Configurazione dei movimenti

I movimenti sono un'implementazione specifica del sistema che consente di assegnare azioni di input ai vari metodi di input "Gesture" forniti da vari SDK (ad esempio HoloLens).

Nota

L'implementazione di Gestures corrente è solo per HoloLens e sarà migliorata per altri sistemi man mano che vengono aggiunti al Toolkit in futuro (nessuna data ancora).

Configurazione dei movimenti

Comandi vocali

Come i movimenti, alcune piattaforme di runtime forniscono anche funzionalità intelligenti "Speech to Text" con la possibilità di generare comandi che possono essere ricevuti da un progetto Unity. Questo profilo di configurazione consente di configurare quanto segue:

  1. Impostazioni generali: "Comportamento iniziale" impostato su Avvio automatico o Avvio manuale determina se inizializzare KeywordRecognizer all'avvio del sistema di input o consentire al progetto di decidere quando inizializzare keywordRecognizer. "Livello di attendibilità riconoscimento" viene usato per inizializzare l'API KeywordRecognizer di Unity
  2. Comandi vocali: registra "parole" e li traduce in in azioni di input che possono essere ricevute dal progetto. Possono anche essere collegati alle azioni da tastiera se necessario.

Importante

Il sistema supporta attualmente solo il riconoscimento vocale durante l'esecuzione su piattaforme Windows 10, ad esempio HoloLens e Windows 10 desktop e sarà migliorato per altri sistemi man mano che vengono aggiunti a MRTK in futuro (nessuna data ancora).

Schermate profilo di configurazione

Configurazione del mapping del controller

Una delle schermate di configurazione principali per Realtà mista Toolkit è la possibilità di configurare e mappare i vari tipi di controller che possono essere usati dal progetto.

La schermata di configurazione seguente consente di configurare uno dei controller attualmente riconosciuti dal toolkit.

Controller Mapping

MRTK fornisce una configurazione predefinita per i controller/sistemi seguenti:

  • Mouse (incluso il supporto del mouse spaziale 3D)
  • Touch screen
  • Controller Xbox
  • controller Windows Mixed Reality
  • Movimenti di HoloLens
  • Controller di bacchetta DI HTC Vive
  • Controller tocco Oculus
  • Controller remoto Oculus
  • Dispositivi OpenVR generici (solo utenti avanzati)

Facendo clic sull'immagine per uno dei sistemi controller predefiniti, è possibile configurare un'unica azione di input per tutti gli input corrispondenti, ad esempio, vedere la schermata di configurazione del controller touch Oculus:

Schermata di configurazione del controller

È disponibile anche una schermata avanzata per la configurazione di altri controller di input OpenVR o Unity non identificati in precedenza.


Impostazioni di visualizzazione controller

Oltre al mapping del controller, viene fornito un profilo di configurazione separato per personalizzare la modalità di presentazione dei controller all'interno delle scene.

Questa configurazione può essere configurata in un oggetto "Globale" (tutte le istanze di un controller per una mano specifica) o specifiche per un singolo tipo di controller/mano.

MRTK supporta anche modelli di controller SDK nativi per Windows Mixed Reality e OpenVR. Questi vengono caricati come GameObject nella scena e posizionati usando il rilevamento del controller della piattaforma.

Se la rappresentazione del controller nella scena deve essere sfalstata dalla posizione del controller fisico, è sufficiente impostare tale offset rispetto al prefab del modello controller, ad esempio impostando la posizione di trasformazione del prefab del controller con una posizione di offset.

Profilo di visualizzazione

Utilità dell'editor

Le utilità seguenti funzionano solo nell'editor e sono utili per migliorare la produttività dello sviluppo.

Utilità di configurazione dell'editor MRTK

Controlli del servizio

I controlli servizio sono una funzionalità di sola editor che genera oggetti nella scena che rappresentano i servizi attivi. Selezionando questi oggetti vengono visualizzati i controlli che offrono collegamenti alla documentazione, il controllo sulle visualizzazioni dell'editor e informazioni dettagliate sullo stato del servizio.

Controlli di servizio

È possibile abilitare i controlli di servizio selezionando Use Service Inspectors in Editor Settings (Impostazioni editor) nel profilo di configurazione.

Renderer del buffer di profondità

La condivisione del buffer di profondità con alcune piattaforme di realtà mista può migliorare la stabilizzazione degli ologrammi. Ad esempio, la piattaforma Windows Mixed Reality può modificare la scena di cui è stato eseguito il rendering per pixel in modo da tenere conto dei movimenti sottili della testa durante il tempo necessario per eseguire il rendering di un fotogramma. Tuttavia, queste tecniche richiedono buffer di profondità con dati accurati per sapere dove e quanto è lontana la geometria dall'utente.

Per garantire che una scena esegua il rendering di tutti i dati necessari nel buffer di profondità, gli sviluppatori possono attivare o disattivare la funzionalità Buffer di profondità di rendering in Impostazioni editor nel profilo di configurazione. In questo modo il buffer di profondità corrente verrà visualizzato come colore per la visualizzazione scena applicando un effetto post-elaborazione, DepthBufferRenderer, alla fotocamera principale.

Utilità buffer di profondità Rendering Il cilindro blu nella scena ha un materiale con ZWrite off in modo che non vengano scritti dati di profondità

Modifica dei profili in fase di esecuzione

È possibile aggiornare i profili in fase di esecuzione e in genere esistono due scenari e momenti diversi in cui è utile:

  1. Opzione del profilo di inizializzazione pre-MRTK: all'avvio, prima che MRTK venga inizializzato e il profilo diventi attivo, sostituendo il profilo non ancora in uso per abilitare/disabilitare funzionalità diverse in base alle funzionalità del dispositivo. Ad esempio, se l'esperienza è in esecuzione nella realtà virtuale che non ha hardware di mapping spaziale, probabilmente non ha senso abilitare il componente di mapping spaziale.
  2. Opzione profilo attivo: dopo l'avvio, dopo l'inizializzazione di MRTK e un profilo è diventato attivo, scambiando il profilo attualmente in uso per modificare il comportamento di determinate funzionalità. Ad esempio, nell'applicazione potrebbe essere presente un'esperienza secondaria specifica che vuole rimuovere completamente i puntatori a mano.

Opzione del profilo di inizializzazione di MRTK preliminare

A tale scopo, è possibile associare un MonoBehaviour (esempio riportato di seguito) che viene eseguito prima dell'inizializzazione di MRTK (ad esempio Awake()). Si noti che lo script (ad esempio la chiamata a SetProfileBeforeInitialization) deve essere eseguito prima dello MixedRealityToolkit script, che può essere ottenuto impostando le impostazioni dell'ordine di esecuzione dello script.

using Microsoft.MixedReality.Toolkit;
using UnityEngine;

/// <summary>
/// Sample MonoBehaviour that will run before the MixedRealityToolkit object, and change
/// the profile, so that when MRTK initializes it uses the profile specified below
/// rather than the one that is saved in its scene.
/// </summary>
/// <remarks>
/// Note that this script must have a higher priority in the script execution order compared
/// to that of MixedRealityToolkit.cs. See https://docs.unity3d.com/Manual/class-MonoManager.html
/// for more information on script execution order.
/// </remarks>
public class PreInitProfileSwapper : MonoBehaviour
{

    [SerializeField]
    private MixedRealityToolkitConfigurationProfile profileToUse = null;

    private void Awake()
    {
        // Here you could choose any arbitrary MixedRealityToolkitConfigurationProfile (for example, you could
        // add some platform checking code here to determine which profile to load).
        MixedRealityToolkit.SetProfileBeforeInitialization(profileToUse);
    }
}

Invece di "profileToUse", è possibile avere un set arbitrario di profili che si applicano a piattaforme specifiche (ad esempio, una per HoloLens 1, una per VR, una per HoloLens 2 e così via). È possibile usare vari altri indicatori (ad esempio https://docs.unity3d.com/ScriptReference/SystemInfo.html, o se la fotocamera è opaca/trasparente), per determinare quale profilo caricare.

Opzione profilo attivo

A tale scopo, impostare la MixedRealityToolkit.Instance.ActiveProfile proprietà su un nuovo profilo sostituendo il profilo attivo.

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

Si noti che durante l'impostazione ActiveProfile durante il runtime, l'eliminazione definitiva dei servizi attualmente in esecuzione verrà eseguita dopo l'ultimo LateUpdate() di tutti i servizi e la creazione di istanze e l'inizializzazione dei servizi associati al nuovo profilo verranno eseguiti prima del primo update() di tutti i servizi.

Durante questo processo può verificarsi un'esitazione evidente dell'applicazione. Qualsiasi script con priorità più alta rispetto allo MixedRealityToolkit script può immettere il relativo aggiornamento prima che il nuovo profilo venga configurato correttamente. Per altre informazioni sulla priorità dello script, vedere Script Execution Order settings (Impostazioni dell'ordine di esecuzione script).

Nel processo di cambio del profilo la fotocamera dell'interfaccia utente esistente rimarrà invariata, assicurando che i componenti dell'interfaccia utente di Unity che richiedono il canvas funzionino ancora dopo l'opzione.

Vedi anche