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.
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:
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:
- Profilo di configurazione principale Realtà mista Toolkit
- Impostazioni dell'esperienza
- Impostazioni della fotocamera
- Impostazioni del sistema di input
- Impostazioni di visualizzazione limiti
- Selezione del sistema di teleportazione
- Impostazioni di consapevolezza spaziale
- Impostazioni di diagnostica
- Impostazioni del sistema scena
- Impostazioni aggiuntive dei servizi
- Impostazioni delle azioni di input
- Regole delle azioni di input
- Configurazione puntatore
- Configurazione dei movimenti
- Comandi vocali
- Configurazione del mapping del controller
- Impostazioni di visualizzazione controller
- Utilità dell'editor
- Modifica dei profili in fase di esecuzione
- Vedere anche
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 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.
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.
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.
Ognuno dei singoli profili è dettagliato di seguito:
- Impostazioni dello stato attivo
- Impostazioni delle azioni di input
- Regole delle azioni di input
- Configurazione puntatore
- Configurazione dei movimenti
- Comandi vocali
- Configurazione del mapping del controller
- Impostazioni di visualizzazione controller
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.
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 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.
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 diagnostica
Una funzionalità facoltativa ma estremamente utile di MRTK è la funzionalità di diagnostica del plug-in.
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 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 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 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.
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.
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.
- 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).
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:
- 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
- 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).
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.
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:
È 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.
Utilità dell'editor
Le utilità seguenti funzionano solo nell'editor e sono utili per migliorare la produttività dello sviluppo.
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.
È 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.
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:
- 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.
- 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.