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 Configurazione della consapevolezza spaziale di Toolkit 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# pure 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, è sufficiente fare clic sul pulsante "Aggiungi una nuova azione" e immettere un nome di testo descrittivo per ciò che rappresenta. È quindi sufficiente selezionare un asse (il tipo di dati) a cui l'azione deve essere trasmessa 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 di evento
Non elaborato (riservato) object Riservate per utilizzo futuro N/D
Digitale bool Dati di tipo booleano attivato o disattivato Pulsante del controller
Asse singolo float Un singolo valore di dati di precisione Un input con intervallo, ad esempio un trigger
Asse doppio Vector2 Data di tipo float doppio per più assi Un Dpad o una levetta
Posizione tre dof Vector3 Dati di tipo posizionale da con 3 assi float Controller di solo stile posizione 3D
Tre rotazioni Dof Quaternion Input rotazionale solo con 4 assi float Controller di stile A tre gradi, ad esempio controller Oculus Go
Sei Dof Realtà mista Pose (Vector3, Quaternion) Input dello stile di posizione e rotazione con componenti Vector3 e Quaternion Controller di movimento o puntatore

Gli eventi che usano azioni di input non sono limitati ai controller fisici e possono comunque essere utilizzati all'interno del progetto per generare nuove azioni.

Nota

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

Profilo di configurazione

Regole delle azioni di input

Le regole di azione di input consentono di convertire automaticamente un evento generato per un'azione di input in in azioni diverse in base al valore dei dati. Questi vengono 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 in nel 4 corrispondente "Dpad Up" / "DPad Down" / "Dpad Left" / "Dpad Right" (come illustrato nell'immagine seguente).

Questa operazione può essere eseguita anche nel codice personalizzato. Tuttavia, visto che si tratta di un modello molto comune, il framework fornisce un meccanismo per eseguire questa operazione "predefinita"

Le regole di azione di input possono essere configurate per qualsiasi asse di input disponibile. Tuttavia, le azioni di input di 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 a doppio asse, ma non a un'azione digitale o nessuna.

Profilo delle regole di azione di input


Configurazione del 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 (con un collisore collegato o è un componente dell'interfaccia utente). Per impostazione predefinita, i puntatori sono configurati automaticamente per controller, visori VR (sguardo fisso/stato attivo) e input tocco/mouse.

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

Profilo puntatore di input
  • Extent di puntamento: determina l'extent di puntamento globale per tutti i puntatori, incluso lo sguardo fisso.
  • Pointing Raycast Layer Masks (Maschera di livello Raycast puntamento): determina i puntatori ai livelli rispetto ai quali verrà eseguito il raycast.
  • Debug di raggi di puntamento disegno: un helper di debug per visualizzare i raggi usati per il raycast.
  • Debug dei colori dei raggi di disegno puntamento: un set di colori da usare per la visualizzazione.
  • Prefab cursore sguardo fisso: consente di specificare facilmente un cursore dello sguardo fisso globale per qualsiasi scena.

È disponibile un pulsante helper aggiuntivo per passare rapidamente al provider di sguardo fisso per eseguire l'override di alcuni valori specifici per lo sguardo fisso, 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 "Movimento" forniti da vari SDK (ad esempio HoloLens).

Nota

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

Configurazione dei movimenti

Comandi vocali

Analogamente ai movimenti, alcune piattaforme di runtime forniscono anche funzionalità intelligenti di riconoscimento vocale 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 di avvio" impostato su Avvio automatico o Avvio manuale determina se inizializzare KeywordRecognizer all'avvio del sistema di input o lasciare che il progetto decida quando inizializzare KeywordRecognizer. "Livello di attendibilità del riconoscimento" viene usato per inizializzare l'API KeywordRecognizer di Unity
  2. Comandi vocali: registra le "parole" e le converte in in azioni di input che possono essere ricevute dal progetto. Possono anche essere collegati alle azioni della 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 verrà 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 ed eseguire il mapping dei 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 della bacchetta HTC Vive
  • Controller Oculus Touch
  • Controller remoto Oculus
  • Dispositivi OpenVR generici (solo utenti avanzati)

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

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 del 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 "Globale" (tutte le istanze di un controller per una mano specifica) o specifiche di un singolo tipo di controller/mano.

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

Se la rappresentazione del controller nella scena deve essere offset 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 di servizio sono una funzionalità di sola editor che genera oggetti in scena che rappresentano servizi attivi. Selezionando questi oggetti vengono visualizzati i controlli che offrono collegamenti alla documentazione, controllare le visualizzazioni dell'editor e informazioni dettagliate sullo stato del servizio.

Controlli di servizio

È possibile abilitare i controlli del servizio controllando Usa controlli servizio in 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 dell'ologramma. Ad esempio, la piattaforma Windows Mixed Reality può modificare la scena di cui è stato eseguito il rendering per pixel in modo da tenere conto di movimenti di testa sottili durante il tempo necessario per eseguire il rendering di un frame. Tuttavia, queste tecniche richiedono buffer di profondità con dati accurati per sapere dove e la geometria è dall'utente.

Per garantire che una scena esegue il rendering di tutti i dati necessari nel buffer di profondità, gli sviluppatori possono attivare la funzionalità Buffer profondità di rendering in Impostazioni editor nel profilo di configurazione. In questo modo il buffer di profondità corrente e lo eseguirà come colore nella visualizzazione della scena applicando un effetto post-elaborazione, DepthBufferRendereralla fotocamera principale.

Utilità buffer profondità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 sono disponibili due scenari e tempi diversi in cui questo è utile:

  1. Pre MRTK inizializzazione profilo: 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 in VR che non ha hardware di mapping spaziale, probabilmente non ha senso avere il componente di mapping spaziale abilitato.
  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 modo in cui si comportano determinate funzionalità. Ad esempio, potrebbe essere presente un'esperienza secondaria specifica nell'applicazione che vuole che i puntatori a mano siano completamente rimossi.

Opzione di inizializzazione del profilo di inizializzazione MRTK

Questa operazione può essere eseguita collegando un MonoBehaviour (esempio seguente) che viene eseguito prima dell'inizializzazione MRTK (ad esempio Sveglia()). Si noti che lo script (ad esempio la chiamata a SetProfileBeforeInitialization) deve essere eseguito in precedenza dello script, che può essere ottenuto impostando le impostazioni dell'ordineMixedRealityToolkit di esecuzione 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 capire quale profilo caricare.

Commutatore di profilo attivo

Questa operazione può essere eseguita impostando la MixedRealityToolkit.Instance.ActiveProfile proprietà su un nuovo profilo sostituendo il profilo attivo.

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

Nota quando si imposta ActiveProfile durante il runtime, l'eliminazione dei servizi attualmente in esecuzione si verificherà dopo l'ultimo LateUpdate() di tutti i servizi e l'istanza e l'inizializzazione dei servizi associati al nuovo profilo si verificheranno prima del primo aggiornamento() di tutti i servizi.

Un'esitazione dell'applicazione evidente può verificarsi durante questo processo. Inoltre, qualsiasi script con priorità superiore rispetto allo MixedRealityToolkit script può immettere il relativo aggiornamento prima che il nuovo profilo sia configurato correttamente. Per altre informazioni sulla priorità dello script, vedere 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 ancora il funzionamento dell'area di disegno dopo l'opzione.

Vedi anche