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 impostazioni di qualità di Unity su Molto basso in modo che l'applicazione venga eseguita e funzioni correttamente a livello di framerate appropriato, 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 velocità dei fotogrammi senza i parametri di qualità più bassi.

In Unity 2019 LTS+, è possibile impostare il livello di qualità del progetto passando a Modifica>qualitàdelle impostazioni> del progetto e impostando il valore predefinito facendo clic sulla freccia verso il basso sul livello **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 maggiore impatto sulle prestazioni sulla scena è l'illuminazione globale in tempo reale. È possibile disattivare l'illuminazione globale passando aImpostazioni di> illuminazionerendering>finestra>In tempo reale illuminazione globale.

C'è un'altra impostazione di illuminazione, illuminazione globale in bake. Questa impostazione può offrire risultati efficienti e visivamente accattivanti nei 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 pass-instancing singolo

Nelle applicazioni Realtà mista il rendering della scena viene eseguito due volte: una per ogni occhio. Rispetto allo sviluppo 3D tradizionale, questo raddoppia efficacemente 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 a istanza singola ottimizza la pipeline di rendering 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

  1. Aprire OpenXR Settings (Apri impostazioni progetto) OpenXRPlugin Management>OpenXR (Modifica>impostazioni> progetto).
  2. Selezionare Single Pass Instanced dal menu a discesa Modalità di rendering .

Per altre informazioni su questo approccio per il rendering, vedere gli articoli seguenti da Unity.

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.

Per informazioni su come risolvere questo problema, vedi l'articolo di Unity Single Pass Stereo Rendering for HoloLens (Rendering stereo a singolo passaggio per HoloLens)

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 Mixed Reality. La piattaforma può quindi ottimizzare meglio la stabilità dell'ologramma in modo specifico per la scena per qualsiasi frame specificato di cui viene eseguito il rendering dall'applicazione.

Per abilitare questa funzionalità nel tuo progetto Unity

  1. Aprire OpenXR Settings (Apri impostazioni progetto) OpenXRPlugin Management>OpenXR (Modifica>impostazioni> progetto).
  2. Selezionare Depth 16 Bit (Profondità 16 bit ) dal menu a discesa Depth Submission Mode (Modalità 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 riportate di seguito.

Affinché la piattaforma Windows Mixed Reality ottimizza la stabilità dell'ologramma, si basa sul buffer di profondità per essere accurato e corrispondere agli ologrammi sottoposti a rendering sullo schermo. Pertanto, con la condivisione del buffer di profondità su , è 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 questo 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 controllo
  2. Selezionare il pulsante Correggi ora all'interno dell'avviso di condivisione del buffer di profondità. Questa operazione può essere eseguita manualmente impostando la modalità di rendering su Personalizzata; impostare quindi Modalità su Trasparente e infine impostare Depth Writesu On

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 gameobject tentano di eseguire il rendering nello stesso pixel e a causa di limitazioni nella fedeltà del buffer di profondità (ad esempio la profondità z), Unity non può distinguere l'oggetto davanti all'altro. Gli sviluppatori noteranno uno sfarfallio tra due oggetti gioco mentre combattono per lo stesso valore di profondità z. Questo problema può essere risolto passando al formato di profondità a 24 bit, perché ci sarà un intervallo più ampio di valori per ogni oggetto su cui calcolare 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 modifica può essere modificata selezionando la fotocamera principale nella scena e in Inspector (Controllo) modificare i valori Near & Far Clipping Plane 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 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 consiglia quindi agli sviluppatori di usare IL2CPP per le compilazioni di Visual Studio UWP. Anche se ciò offre vari vantaggi, la compilazione della soluzione 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 sul tempo di iterazione dello sviluppo.

  1. Sfruttare la compilazione incrementale compilando il progetto nella stessa directory ogni volta, riutilizzando i file predefiniti
  2. Disabilitare le analisi software antimalware per il progetto & cartelle di compilazione
    • Aprire Protezione dalle minacce & virus nell'app delle impostazioni di Windows 10
    • Selezionare Gestisci impostazioni in Impostazioni di protezione dalle minacce & virus
    • 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. 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 mobile, il che significa che le app potrebbero richiedere un po' 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 la schermata iniziale olografica:

  1. Passarealla paginaModifica>lettore impostazioni> progetto
  2. Selezionare la scheda Windows Store e aprire la sezione Immagine iniziale
  3. Applicare l'immagine nella proprietà Holographic Holographic > Splash Image di Windows .
    • L'opzione Mostra schermata iniziale di Unity abilita o disabilita la schermata iniziale di Unity branded. Se non si ha una licenza Unity Pro, verrà sempre visualizzata la schermata iniziale di Unity branded.
    • Se viene applicata un'immagine iniziale holographic , verrà sempre visualizzata se la casella di controllo Mostra schermata iniziale di Unity è abilitata o disabilitata. Se si specifica un'immagine iniziale olografica personalizzata, è disponibile solo per gli sviluppatori con una licenza Unity Pro.
Mostra schermata iniziale di Unity Immagine iniziale olografica Comportamento
On Nessuno Visualizzare la schermata iniziale di Unity predefinita per 5 secondi o fino a quando l'app non viene caricata, a seconda che sia più lunga.
On Personalizzato Mostra schermata iniziale personalizzata per 5 secondi o fino a quando l'app non viene caricata, a seconda che sia più lunga.
Off Nessuno Mostra nero trasparente (niente) finché l'app non viene caricata.
Off Personalizzato Mostra schermata iniziale personalizzata per 5 secondi o fino a quando l'app non viene caricata, a seconda che sia più lunga.

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

Perdita del tracciamento

Un visore di realtà mista dipende dal vedere l'ambiente intorno a esso per costruire sistemi di coordinate bloccate a livello mondiale, che consentono agli ologrammi di rimanere in posizione. Quando il visore non è in grado di individuarsi nel mondo, l'auricolare ha detto di aver perso il rilevamento. In questi casi, le funzionalità dipendenti dai sistemi di coordinate a blocco mondiale, 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'arrestare il rendering degli ologrammi, sospendere il ciclo del gioco e visualizzare una notifica di rilevamento persa che segue comodamente lo sguardo degli utenti. Le notifiche personalizzate possono essere fornite anche sotto forma di un'immagine di perdita di rilevamento. Per le app che dipendono dal rilevamento per l'intera esperienza, è sufficiente consentire a Unity di gestire completamente questa funzionalità 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 persa del rilevamento:

  1. Passarealla paginaModifica>lettore impostazioni> progetto
  2. Selezionare nella scheda Windows Store e aprire la sezione Immagine iniziale
  3. 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 potrebbe dover continuare l'elaborazione senza interruzioni durante la perdita del rilevamento. È possibile rifiutare esplicitamente la perdita predefinita del comportamento di rilevamento, ma si è responsabili della nascondere o disabilitare gli oggetti, che non eseguirebbero correttamente il rendering in uno scenario di rilevamento-perdita. Nella maggior parte dei casi, l'unico contenuto che è consigliabile eseguire il rendering in questo caso è contenuto bloccato dal corpo, incentrato sulla fotocamera principale.

Per rifiutare esplicitamente il comportamento di sospensione automatica:

  1. Passarealla paginaModifica> lettoreimpostazioni progetto>
  2. Selezionare la scheda Windows Store e aprire la sezione Immagine iniziale
  3. Modificare la casella di controllo Windows Holographic > On Tracking Loss Pause e Show Image (Mostra immagine ).

Rilevamento degli eventi di perdita

Per definire il comportamento personalizzato quando il rilevamento viene perso, gestire gli eventi di perdita di rilevamento globale.

Funzionalità

Per un'app che sfrutta determinate funzionalità, deve dichiarare le funzionalità appropriate nel relativo manifesto. Le dichiarazioni manifesto possono essere effettuate in Unity in modo che siano incluse in ogni futura esportazione del progetto.

Le funzionalità possono essere abilitate per un'applicazione Realtà mista:

  1. Passarealla paginaModifica>lettore impostazioni> progetto
  2. Selezionare la scheda Windows Store, aprire la sezione Impostazioni di pubblicazione e cercare l'elenco Funzionalità

Le funzionalità applicabili per abilitare le API comunemente usate per le app Holographic sono:

Funzionalità API che richiedono funzionalità
SpatialPerception SurfaceObserver
WebCam FotoCapture e VideoCapture
ImmaginiLibrary/VideosLibrary FotoCapture o VideoCapture, rispettivamente (durante l'archiviazione del contenuto acquisito)
Microfono VideoCapture (durante l'acquisizione di audio), DictationRecognizer, GrammarRecognizer e KeywordRecognizer
InternetClient DictationRecognizer (e per usare Unity Profiler)

Vedi anche