Impostazioni consigliate per Unity
Unity offre un set di opzioni predefinite che sono in genere il caso medio per tutte le piattaforme. Unity offre tuttavia alcuni comportamenti specifici della realtà mista che possono essere attivati o disattivati tramite le impostazioni del progetto.
Configurazione dell'ambiente ad alte prestazioni
Impostazioni di bassa qualità
È importante modificare le impostazionidi Qualità di Unity su Molto basso in modo che l'applicazione venga eseguita e funzioni correttamente con la frequenza dei fotogrammi appropriata, in particolare per lo sviluppo di HoloLens. Per lo sviluppo su visori VR immersive, a seconda delle specifiche del desktop che alimenta l'esperienza VR, è comunque possibile ottenere la frequenza dei fotogrammi senza i parametri di qualità più bassi.
In Unity 2019 LTS+, è possibile impostare il livello di qualità del progetto passando a Modifica>progetto Impostazioni> Quality e impostando Default facendo clic sulla freccia verso il basso sul livello **Di qualità molto bassa.
Impostazioni di illuminazione
Analogamente alle impostazioni della scena qualità, è importante impostare impostazioni di illuminazione ottimali per l'applicazione Realtà mista. In Unity, l'impostazione Illuminazione che in genere avrà il massimo impatto sulle prestazioni sulla scena è Realtime Global Lighting. È possibile disattivare l'illuminazione globale passando a Illuminazione rendering>finestra>Impostazioni> Realtime Illuminazione globale.
C'è un'altra impostazione di illuminazione, illuminazione globale al forno. Questa impostazione può offrire risultati efficienti e visivamente sorprendenti sui visori VR immersive, ma non è applicabile per lo sviluppo di HoloLens. L'illuminazione globale con bake viene calcolata solo per gameobject statici, che non vengono trovati nelle scene di HoloLens a causa della natura di un ambiente sconosciuto e mutevole.
Per altre informazioni, vedere Illuminazione globale da Unity .
Nota
L'illuminazione globale in tempo reale viene impostataper scena e pertanto gli sviluppatori devono salvare questa proprietà per ogni scena unity nel progetto.
Percorso di rendering a passaggio singolo
Nelle applicazioni Realtà mista viene eseguito il rendering della scena due volte: una per ogni occhio. Rispetto allo sviluppo 3D tradizionale, questo raddoppia in modo efficace la quantità di lavoro che deve essere calcolata. È importante selezionare il percorso di rendering più efficiente in Unity per risparmiare sul tempo di CPU e GPU. Il rendering con istanza a passaggio singolo ottimizza la pipeline di rendering di Unity per le app di realtà mista; È consigliabile abilitare questa impostazione per impostazione predefinita per ogni progetto.
Per abilitare questa funzionalità nel tuo progetto Unity
- Aprire OpenXR Impostazioni (passare a Modifica>progetto Impostazioni> XR Plugin Management>OpenXR).
- Selezionare Single Pass Instanced dal menu a discesa Modalità di rendering.
Per altre informazioni su questo approccio al rendering, vedere gli articoli seguenti di Unity.
- How to maximize AR and VR performance with advanced stereo rendering (Come ottimizzare le prestazioni di AR e VR con il rendering stereo avanzato)
- Single Pass Instancing (Creazione di istanze a singolo passaggio)
Nota
Un problema comune relativo al rendering con istanze a singolo passaggio si verifica se gli sviluppatori dispongono già di shader personalizzati non scritti per la creazione di istanze. Dopo l'abilitazione di questa funzionalità, gli sviluppatori possono notare che per alcuni GameObject viene eseguito il rendering in un solo occhio. Ciò è dovuto al fatto che gli shader personalizzati associati non hanno le proprietà appropriate per la creazione di istanze.
Abilitare la condivisione del buffer di profondità
Per ottenere una migliore stabilità dell'ologramma dalla percezione dell'utente, è consigliabile abilitare la proprietà Depth Buffer Sharing in Unity. Attivando questa opzione, Unity condividerà la mappa di profondità prodotta dall'applicazione con la piattaforma Windows Realtà mista. La piattaforma può quindi ottimizzare meglio la stabilità dell'ologramma specificamente per la scena per qualsiasi fotogramma di cui viene eseguito il rendering dall'applicazione.
Per abilitare questa funzionalità nel tuo progetto Unity
- Aprire OpenXR Impostazioni (passare a Modifica>progetto Impostazioni> XR Plugin Management>OpenXR).
- Selezionare Depth 16 Bit (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 a 16 bit rispetto a 24 bit ridurrà significativamente i requisiti di larghezza di banda perché sarà necessario spostare/elaborare meno dati. Detto questo, l'ottimizzazione viene fornita con un certo costo. Assicurarsi di comprendere le implicazioni indicate nelle caselle Importanti di seguito.
Per ottimizzare la stabilità dell'ologramma di Windows Realtà mista, si basa sul buffer di profondità per essere accurato e corrispondere a qualsiasi ologramma sottoposto a rendering sullo schermo. Pertanto, con la condivisione del buffer di profondità, è importante quando si esegue il rendering del colore anche per il rendering della profondità. In Unity, la maggior parte dei materiali opaco o TransparentCutout eseguirà il rendering della profondità per impostazione predefinita, ma gli oggetti trasparente e di testo non eseguiranno il rendering della profondità, anche se 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:
- Selezionare il materiale trasparente che usa lo shader MRTK Standard e aprire la finestra Dell'editor di controllo
- Selezionare il pulsante Correggi ora all'interno dell'avviso di condivisione del buffer di profondità. Questa operazione può essere eseguita manualmente impostando modalità di rendering su Personalizzata, quindi impostare Modalità su Trasparente e infine impostare Profondità scritturasu Attivato
Importante
Gli sviluppatori devono prestare attenzione a Z-fighting quando si modificano questi valori insieme alle impostazioni del piano vicino/lontano della fotocamera. Z-Fighting si verifica quando due oggetti gioco tentano di eseguire il rendering sullo stesso pixel e a causa di limitazioni nella fedeltà del buffer di profondità (ad esempio la profondità z), Unity non può distinguere quale oggetto si trova di fronte all'altro. Gli sviluppatori noteranno uno sfarfallio tra due oggetti di gioco mentre combattono per lo stesso valore di profondità z. Questo problema può essere risolto passando al formato di profondità a 24 bit perché sarà presente 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 vicini e lontani della fotocamera in un intervallo più piccolo e mantenere invece il formato di profondità a 16 bit. La profondità z è mappata in modo non lineare all'intervallo di valori lungo i piani della fotocamera vicino e lontano. Questa operazione può essere modificata selezionando il Fotocamera principale nella scena e in Inspector (Controllo) modificare i valori Near & Far Clipping Plane (Piano di ritaglio vicino e lontano) per ridurre l'intervallo ,ad esempio da 1000m a 100m o da altri valori x e così via.
Importante
Unity non crea un buffer degli 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 gli stencil non funzioneranno a meno che non venga selezionato un formato di profondità a 24 bit che creerà un buffer degli 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 compilazioni di Visual Studio UWP. Anche se ciò offre diversi vantaggi, la compilazione della soluzione di Visual Studio da Unity per IL2CPP può essere più lenta rispetto al vecchio metodo .NET. È quindi consigliabile seguire le procedure consigliate per la creazione di IL2CPP per risparmiare tempo di iterazione dello sviluppo.
- Sfruttare la compilazione incrementale compilando il progetto nella stessa directory ogni volta, riutilizzando i file predefiniti
- Disabilitare le analisi software antimalware per il progetto e le cartelle di compilazione
- Aprire Protezione da virus e minacce nell'app delle impostazioni di Windows 10
- Selezionare Gestisci Impostazioni in Impostazioni di protezione da virus e 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
- Usare un'unità SSD per la compilazione
Per altre informazioni, vedere Ottimizzazione dei tempi di compilazione per IL2CPP .
Nota
Inoltre, potrebbe essere utile configurare un server di cache, soprattutto per i progetti Unity con una grande quantità di asset (esclusi i file di script) o con asset/scene in continua evoluzione. All'apertura di un progetto, Unity archivia gli asset validi in un formato della cache interna nel computer di sviluppo. Gli elementi devono essere reimportati e quindi rielaborati in caso di modifica. Questo processo può essere eseguito una volta, salvato in un server di cache e quindi condiviso con altri sviluppatori in modo da risparmiare tempo, evitando a ciascuno sviluppatore di elaborare la reimportazione di nuove modifiche in locale.
Proprietà di pubblicazione
Schermata iniziale olografica
HoloLens ha una CPU e una GPU di classe per dispositivi mobili, il che significa che le app potrebbero richiedere più tempo per il caricamento. Mentre l'app viene caricata, gli utenti vedranno solo nero e quindi potrebbero chiedersi cosa sta succedendo. Per rassicurarli durante il caricamento, è possibile aggiungere una schermata iniziale olografica.
Per attivare o disattivare la schermata iniziale olografica:
- Vai alla pagina Modifica>progetto Impostazioni Player>
- Selezionare la scheda Windows Store e aprire la sezione Immagine iniziale
- Applica l'immagine nella proprietà Windows Holographic Holographic > Splash Image .
- Attivando o disattivando l'opzione Mostra schermata iniziale unity verrà abilitata o disabilitata la schermata iniziale di Unity. Se non si ha una licenza Unity Pro, la schermata iniziale personalizzata di Unity verrà sempre visualizzata.
- Se viene applicata un'immagine iniziale holographic, verrà sempre visualizzata se la casella di controllo Mostra schermata iniziale di Unity è abilitata o disabilitata. Specificare un'immagine iniziale olografica personalizzata è disponibile solo per gli sviluppatori con una licenza Unity Pro.
Mostra schermata iniziale di Unity | Immagine iniziale olografica | Comportamento |
---|---|---|
Attivato | None | Mostra la schermata iniziale di Unity predefinita per 5 secondi o fino a quando l'app non viene caricata, a seconda di quale periodo è più lungo. |
Attivato | Personalizzazione | Mostra schermata iniziale personalizzata per 5 secondi o fino a quando l'app non viene caricata, a seconda di quale periodo è più lungo. |
Disattivato | None | Mostra nero trasparente (niente) finché l'app non viene caricata. |
Disattivato | Personalizzazione | Mostra schermata iniziale personalizzata per 5 secondi o fino a quando l'app non viene caricata, a seconda di quale periodo è più lungo. |
Per altre informazioni, vedere la documentazione della schermata iniziale di Unity.
Perdita del tracciamento
Un visore VR realtà mista dipende dal vedere l'ambiente intorno a esso per costruire sistemi di coordinate bloccati a livello globale, che consentono agli ologrammi di rimanere in posizione. Quando l'auricolare non è in grado di individuarsi nel mondo, il visore VR ha detto di aver perso il tracciamento. In questi casi, le funzionalità dipendenti da sistemi di coordinate con blocco globale, ad esempio fasi spaziali, ancoraggi nello spazio 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 del gioco e visualizzare una notifica di rilevamento perso che segue comodamente lo sguardo degli utenti. Le notifiche personalizzate possono essere fornite anche sotto forma di immagine di perdita di rilevamento. Per le app che dipendono dal rilevamento per l'intera esperienza, è sufficiente consentire a Unity di gestirlo completamente fino a quando il rilevamento non viene recuperato. Gli sviluppatori possono fornire un'immagine personalizzata da visualizzare durante la perdita di rilevamento.
Per personalizzare l'immagine di rilevamento perso:
- Vai alla pagina Modifica>progetto Impostazioni Player>
- Selezionare la scheda Windows Store e aprire la sezione Immagine iniziale
- Applicare l'immagine nella proprietà Windows Holographic > Tracking Loss Image .
Rifiuto esplicito della sospensione automatica
Alcune app potrebbero non richiedere il rilevamento (ad esempio, app di sola orientamento, ad esempio visualizzatori video a 360 gradi) o potrebbero dover continuare l'elaborazione senza interruzioni durante la perdita del rilevamento. È possibile rifiutare esplicitamente la perdita predefinita del comportamento di rilevamento, ma si è responsabili di nascondere o disabilitare qualsiasi oggetto, che non viene eseguito correttamente in uno scenario di rilevamento della perdita. Nella maggior parte dei casi, l'unico contenuto consigliato per il rendering in questo caso è contenuto bloccato dal corpo, centrato sulla fotocamera principale.
Per rifiutare esplicitamente il comportamento di sospensione automatica:
- Passare alla pagina Modifica>progetto Impostazioni Player>
- Selezionare la scheda Windows Store e aprire la sezione Immagine iniziale
- Modificare la casella di controllo Windows Holographic > On Tracking Loss Pause and Show Image (Mostra immagine ).
Eventi di rilevamento della perdita
Per definire un comportamento personalizzato quando il rilevamento viene perso, gestire gli eventi di perdita del rilevamento globale.
Funzionalità
Affinché un'app possa sfruttare determinate funzionalità, deve dichiarare le funzionalità appropriate nel relativo manifesto. Le dichiarazioni del manifesto possono essere effettuate in Unity in modo che vengano incluse in ogni esportazione futura del progetto.
Le funzionalità possono essere abilitate per un'applicazione Realtà mista:
- Vai alla pagina Modifica>progetto Impostazioni Player>
- Selezionare la scheda Windows Store, aprire la sezione Pubblicazione Impostazioni e cercare l'elenco Funzionalità
Le funzionalità applicabili per abilitare le API di uso comune per le app Holographic sono:
Funzionalità | API che richiedono funzionalità |
---|---|
SpatialPerception | SurfaceObserver |
WebCam | PhotoCapture e VideoCapture |
PicturesLibrary/VideosLibrary | PhotoCapture o VideoCapture, rispettivamente (quando si archivia il contenuto acquisito) |
Microphone | VideoCapture (durante l'acquisizione di audio), DictationRecognizer, GrammarRecognizer e KeywordRecognizer |
InternetClient | DictationRecognizer (e per usare Unity Profiler) |