Impostazioni consigliate per Unity

Unity offre un set di opzioni predefinite che sono in genere il caso medio per tutte le piattaforme. Tuttavia, Unity offre alcuni comportamenti specifici della realtà mista che possono essere attivati o disattivati tramite le impostazioni del progetto.

Configurazione dell'ambiente performante

Impostazioni di bassa qualità

È importante modificare le impostazioni di qualità di Unity su Molto bassa in modo che l'applicazione venga eseguita e funzioni correttamente alla frequenza di fotogrammi appropriata, in particolare per lo sviluppo di HoloLens. Per lo sviluppo su visori immersivi, a seconda delle specifiche del desktop che alimenta l'esperienza VR, è comunque possibile ottenere il framerate senza i parametri di qualità più bassi.

In Unity 2019 LTS+, puoi impostare il livello di qualità del progetto andando su Modifica>la qualità delle impostazioni> del progetto e impostando il valore predefinito facendo clic sulla freccia in giù sul livello **Qualità molto bassa.

Impostazioni di illuminazione

Analogamente alle impostazioni di scena di qualità, è importante impostare impostazioni di illuminazione ottimali per l'applicazione di realtà mista. In Unity, l'impostazione di illuminazione che di solito ha il maggiore impatto sulle prestazioni della scena è l'illuminazione globale in tempo reale. Puoi disattivare l'illuminazione globale andando su Impostazionidi illuminazione>del rendering>delle finestre>Illuminazione globale in tempo reale.

C'è un'altra impostazione di illuminazione, Illuminazione globale cotta. Questa impostazione può fornire risultati performanti e visivamente sorprendenti sui visori VR immersivi, ma non è applicabile per lo sviluppo di HoloLens. L'illuminazione globale viene calcolata solo per i GameObject statici, che non si trovano nelle scene di HoloLens a causa della natura di un ambiente sconosciuto e in evoluzione.

Leggi Global Illumination di Unity per maggiori informazioni.

Nota

L'illuminazione globale in tempo reale è impostata per scena e quindi gli sviluppatori devono salvare questa proprietà per ogni scena di Unity nel loro progetto.

Percorso di rendering dell'istanza a passaggio singolo

Nelle applicazioni di realtà mista, la scena viene renderizzata due volte: una per ciascun occhio. Rispetto allo sviluppo 3D tradizionale, questo raddoppia di fatto la quantità di lavoro che deve essere calcolata. È importante selezionare il percorso di rendering più efficiente in Unity per risparmiare tempo sia sulla CPU che sulla GPU. Il rendering con istanza a passaggio singolo ottimizza la pipeline di rendering di Unity per le app di realtà mista. Si consiglia di abilitare questa impostazione per impostazione predefinita per ogni progetto.

Per abilitare questa funzionalità nel progetto Unity

  1. Apri le impostazioni di OpenXR (vai a Modifica>impostazioni> progettoGestione plug-in> XROpenXR).
  2. Selezionare Istanza a passaggio singolo dal menu a discesa Modalità di rendering .

Per altri dettagli su questo approccio di rendering, vedi gli articoli seguenti di Unity.

Nota

Un problema comune con il rendering con istanze a passaggio singolo si verifica se gli sviluppatori hanno già shader personalizzati esistenti non scritti per l'istanza. Dopo aver abilitato questa funzionalità, gli sviluppatori potrebbero notare che alcuni GameObject eseguono il rendering solo in un occhio. Ciò è dovuto al fatto che gli shader personalizzati associati non hanno le proprietà appropriate per l'istanza.

Abilita la condivisione del buffer di profondità

Per ottenere una migliore stabilità dell'ologramma dalla percezione dell'utente, è consigliabile abilitare la proprietà Condivisione buffer di profondità in Unity. Attivando questa opzione, Unity condividerà la mappa di profondità prodotta dall'applicazione con la piattaforma Windows Mixed Reality. La piattaforma può quindi ottimizzare meglio la stabilità dell'ologramma in modo specifico per la scena per qualsiasi fotogramma sottoposto a rendering dall'applicazione.

Per abilitare questa funzionalità nel progetto Unity

  1. Apri le impostazioni di OpenXR (vai a Modifica>impostazioni> progettoGestione plug-in> XROpenXR).
  2. Seleziona Profondità 16 bit dal menu a discesa Modalità di invio profondità .

L'impostazione del buffer di profondità a 16 bit è particolarmente consigliata per lo sviluppo di HoloLens. La selezione della versione a 16 bit rispetto a quella a 24 bit riduce significativamente i requisiti di larghezza di banda, poiché sarà necessario spostare o elaborare meno dati. Detto questo, l'ottimizzazione ha un certo costo. Assicurarsi di aver compreso le implicazioni menzionate nelle caselle importanti di seguito.

Affinché la piattaforma Windows Mixed Reality ottimizzi la stabilità dell'ologramma, si basa sul buffer di profondità per essere accurata e corrispondere a qualsiasi ologramma di cui è stato eseguito il rendering sullo schermo. Pertanto, con la condivisione del buffer di profondità attivata, è importante quando si esegue il rendering del colore anche la profondità di rendering. In Unity, la maggior parte dei materiali Opaque o TransparentCutout esegue il rendering della profondità per impostazione predefinita, mentre gli oggetti trasparenti e di testo non la rendono in profondità, anche se ciò dipende dagli shader e da altri fattori.

Se si usa lo shader Standard di Realtà mista Toolkit, per eseguire il rendering della profondità per gli oggetti trasparenti:

  1. Selezionare il materiale trasparente che usa lo shader MRTK Standard e aprire la finestra dell'editor di Inspector.
  2. Seleziona il pulsante Correggi ora all'interno dell'avviso di condivisione del buffer di profondità. Questo può essere eseguito anche manualmente impostando la modalità di rendering su Personalizzato; quindi imposta Mode su Transparent e infine imposta Depth Write su On.

Importante

Gli sviluppatori devono fare attenzione ai combattimenti Z quando modificano questi valori insieme alle impostazioni del piano vicino/lontano della fotocamera. Z-Fighting si verifica quando due oggetti di gioco tentano di eseguire il rendering sullo stesso pixel e, a causa di limitazioni nella fedeltà del buffer di profondità (cioè profondità z), Unity non è in grado di discernere quale oggetto si trova di fronte all'altro. Gli sviluppatori noteranno uno sfarfallio tra due oggetti di gioco mentre lottano per lo stesso valore di profondità z. Questo problema può essere risolto passando al formato di profondità a 24 bit, poiché ci sarà un intervallo più ampio di valori per ogni oggetto da calcolare per la profondità z dalla fotocamera.

Tuttavia, è consigliabile, in particolare per lo sviluppo di HoloLens, modificare i piani vicino e lontano della fotocamera su un intervallo più piccolo e mantenere il formato profondità a 16 bit. La profondità z viene mappata in modo non lineare all'intervallo di valori lungo i piani della fotocamera vicino e lontano. Questo può essere modificato selezionando la fotocamera principale nella scena e, in Controllo, modificare i valori del piano di ritaglio da vicino & lontano per ridurne l'intervallo (ad esempio da 1000 m a 100 m o altri valori x, ecc.)

Importante

Unity non crea un buffer di stencil quando si usa il formato di profondità a 16 bit. Di conseguenza, alcuni effetti dell'interfaccia utente di Unity e altri effetti necessari per lo stencil non funzionano a meno che non venga selezionato il formato a 24 bit che creerà un buffer di stencil a 8 bit.

Compilazione per IL2CPP

Unity ha deprecato il supporto per il back-end di scripting .NET e pertanto consiglia agli sviluppatori di usare IL2CPP per le build di Visual Studio UWP. Sebbene ciò comporti vari vantaggi, la creazione della soluzione Visual Studio da Unity per IL2CPP può essere più lenta rispetto al metodo .NET precedente. Pertanto, si consiglia vivamente di seguire le migliori pratiche per la creazione di IL2CPP per risparmiare sui tempi di iterazione dello sviluppo.

  1. Sfrutta la compilazione incrementale creando ogni volta il progetto nella stessa directory, riutilizzando i file predefiniti in tale posizione.
  2. Disabilitare le analisi del software antimalware per le cartelle di progetto & compilazione:
    • Apri Protezione da virus & minacce nell'app Impostazioni Windows 10
    • Selezionare Gestisci impostazioni in Impostazioni di protezione da virus & minacce
    • Selezionare Aggiungi o rimuovi esclusioni nella sezione Esclusioni
    • Selezionare Aggiungi un'esclusione e selezionare la cartella contenente il codice del progetto Unity e gli output di compilazione
  3. Usa un SSD per la costruzione.

Per altre informazioni, vedi Ottimizzazione dei tempi di compilazione per IL2CPP .

Nota

Inoltre, può essere utile configurare un server di cache, in particolare per i progetti Unity con una grande quantità di risorse (esclusi i file di script) o scene/risorse in continua evoluzione. Quando si apre un progetto, Unity archivia le risorse idonee in un formato di cache interna nel computer dello sviluppatore. Gli articoli devono essere reimportati e quindi rielaborati quando vengono modificati. Questo processo può essere eseguito una volta e salvato in un server di cache e di conseguenza condiviso con altri sviluppatori per risparmiare tempo, invece che ogni sviluppatore elabori la reimportazione delle nuove modifiche in locale.

Proprietà di pubblicazione

Schermata iniziale olografica

HoloLens dispone di CPU e GPU di classe mobile, il che significa che il caricamento delle app potrebbe richiedere più tempo. Durante il caricamento dell'app, gli utenti vedranno solo il nero e quindi potrebbero chiedersi cosa stia succedendo. Per rassicurarli durante il caricamento, puoi aggiungere una schermata iniziale olografica.

Per attivare o disattivare la schermata iniziale olografica:

  1. Vaialla paginaModifica>lettore impostazioni progetto>.

  2. Selezionare la scheda Windows Store e aprire la sezione Immagine iniziale .

  3. Applica l'immagine nella proprietà Windows Holographic Holographic > Splash Image .

    • Attivando o disattivando l'opzione Mostra schermata iniziale di Unity , si abiliterà o si disabiliterà la schermata iniziale con marchio Unity. Se non hai una licenza Unity Pro, verrà sempre visualizzata la schermata iniziale con marchio Unity.
    • Se viene applicata un'immagine olografica , verrà sempre visualizzata indipendentemente dal fatto che la casella di controllo Mostra schermata iniziale di Unity sia abilitata o disabilitata. La specifica di un'immagine olografica personalizzata è disponibile solo per gli sviluppatori con una licenza Unity Pro.
    Mostra schermata iniziale di Unity Immagine iniziale olografica Comportamento
    Attivato Nessuno Mostra la schermata iniziale predefinita di Unity per 5 secondi o finché l'app non viene caricata, a seconda di quale sia il periodo più lungo.
    Attivato Personalizzato Mostra la schermata iniziale personalizzata per 5 secondi o finché l'app non viene caricata, a seconda di quale sia il periodo più lungo.
    Disattivato Nessuno Mostra nero trasparente (niente) finché l'app non viene caricata.
    Disattivato Personalizzato Mostra la schermata iniziale personalizzata per 5 secondi o finché l'app non viene caricata, a seconda di quale sia il periodo più lungo.

Per altre informazioni, vedere la documentazione della schermata iniziale di Unity .

Perdita di tracciamento

Un visore VR realtà mista dipende dalla visione dell'ambiente circostante per costruire sistemi di coordinate bloccati nel mondo, che consentono agli ologrammi di rimanere in posizione. Quando l'headset non è in grado di localizzarsi nel mondo, si dice che ha perso il rilevamento. In questi casi, le funzionalità che dipendono da sistemi di coordinate bloccati dal mondo, ad esempio fasi spaziali, ancoraggi spaziali e mapping spaziale, non funzionano.

Se si verifica una perdita di rilevamento, il comportamento predefinito di Unity consiste nell'interrompere il rendering degli ologrammi, sospendere il ciclo di gioco e visualizzare una notifica di rilevamento perso che segue comodamente lo sguardo dell'utente. Le notifiche personalizzate possono essere fornite anche sotto forma di immagine della perdita di tracciamento. Per le app che dipendono dal rilevamento per l'intera esperienza, è sufficiente lasciare che Unity gestisca completamente questo problema fino a quando non viene recuperato il rilevamento. Gli sviluppatori possono fornire un'immagine personalizzata da mostrare durante la perdita di tracciamento.

Per personalizzare l'immagine di rilevamento persa:

  1. Vaialla paginaModifica>lettore impostazioni progetto>.
  2. Seleziona la scheda Windows Store e apri la sezione Immagine iniziale .
  3. Applicare l'immagine nella proprietà Immagine della perdita di rilevamento olografico > di Windows .

Rinuncia alla sospensione automatica

Alcune app potrebbero non richiedere il rilevamento (ad esempio le app di solo orientamento come i visualizzatori di video a 360 gradi) o potrebbe dover continuare l'elaborazione ininterrotta mentre il rilevamento viene perso. Puoi rifiutare esplicitamente il comportamento predefinito di perdita di rilevamento, ma sei responsabile di nascondere/disabilitare gli oggetti, il che non verrebbe visualizzato correttamente in uno scenario di rilevamento-perdita. Nella maggior parte dei casi, l'unico contenuto di cui si consiglia il rendering è il contenuto bloccato sul corpo, centrato sulla fotocamera principale.

Per disattivare il comportamento di sospensione automatica:

  1. Passare alla pagina Modifica>impostazioni>progetto Player
  2. Selezionare la scheda Windows Store e aprire la sezione Immagine iniziale
  3. Modifica la casella di controllo Windows Holographic > Quando si tiene traccia della perdita, sospendi e mostra immagine .

Tenere traccia degli eventi di perdita

Per definire un comportamento personalizzato in caso di perdita del rilevamento, gestire gli eventi globali di perdita del rilevamento.

Funzionalità

Affinché un'app possa sfruttare determinate funzionalità, deve dichiarare le funzionalità appropriate nel manifesto. Le dichiarazioni manifesto possono essere fatte in Unity in modo che siano incluse in ogni futura esportazione del progetto.

Le funzionalità possono essere abilitate per un'applicazione di realtà mista mediante:

  1. Vaialla paginaModifica>lettore impostazioni progetto>.
  2. Seleziona la scheda Windows Store , apri la sezione Impostazioni di pubblicazione e cerca l'elenco Funzionalità .

Le funzionalità applicabili per abilitare le API di uso comune per le app olografiche sono:

Funzionalità API che richiedono funzionalità
Percezione spaziale SurfaceObserver
WebCam PhotoCapture e VideoCapture
Libreria di immagini / Libreria di video PhotoCapture o VideoCapture, rispettivamente (quando si memorizza il contenuto acquisito)
Microfono VideoCapture (durante l'acquisizione di audio), DictationRecognizer, GrammarRecognizer e KeywordRecognizer
InternetClient DictationRecognizer (e per usare il profiler Unity)

Vedere anche