Table of Contents

Usare EasyAR Mega in Unity per implementare occlusion

Occlusion è una tecnologia chiave per migliorare l'immersione dell'integrazione tra contenuti virtuali e reali in AR. Questo articolo descrive come implementare effetti di occlusion in Unity tramite EasyAR Mega.

Prima di iniziare

Modalità di implementazione di occlusion

  • Modellazione offline: nel sistema di coordinate Block, creare geometry con corrispondenza 1:1 per entità del mondo reale, come pareti, colonne e grandi apparecchiature; oppure ottenere un modello ottimizzato tagliando e riducendo le face del dense model Block.

  • Allineamento runtime: a runtime, allineare il sistema di coordinate Block con lo spazio reale tramite cloud localization e caricare la geometry corrispondente.

  • Sostituzione materiale: assegnare materiali speciali di occlusion a queste geometry.

  • Effetto visivo: quando la GPU renderizza altri oggetti virtuali, i pixel delle parti occluse vengono automaticamente scartati perché non superano il depth test, facendo sì che gli oggetti virtuali seguano la logica di occlusion dello spazio fisico reale.

Usare i file maschera dai risultati di mapping

Seguire i passaggi seguenti per scaricare il file maschera dal risultato di mapping tramite Mask file download nel cloud localization database, usarlo come modello bianco per occlusion e importarlo nella scena. Il file può essere usato direttamente o ritagliato secondo necessità.

Nota

Questo metodo di download è applicabile solo ai risultati di mapping della versione 9.6 o successiva.

Scaricare il file maschera

Dopo aver aggiunto il Block al cloud localization database, fare clic su Mask file download nella colonna Action della riga del Block.

Voce di download file maschera

Nella finestra di dialogo, scegli la precisione standard o bassa secondo necessità e fai clic su Scarica per ottenere l'archivio della maschera (zip). Estrai l'archivio per ottenere i file dei modelli.

Scaricare file maschera

Nota

L'archivio può contenere uno o più modelli glb. Puoi importarli separatamente in Unity oppure unirli prima in un software di creazione di contenuti digitali come Blender.

[Opzionale] Ritagliare il modello

I modelli scaricati coprono insieme l'intero Block. Per applicare l'occlusione all'intero Block, salta questo passaggio e importali direttamente in Unity. Per una sola area, ritaglia i modelli come segue.

Importa i file dei modelli estratti in un software di creazione di contenuti digitali, ad esempio Blender.

Prima del ritaglio

Ritaglia i modelli mantenendo solo le parti necessarie per l'occlusione ed esportali in formato glb. Se hai importato più modelli, puoi unirli prima dell'esportazione. Mantieni invariati posizione, orientamento e dimensioni nel sistema di coordinate del Block, in modo che siano allineati dopo l'importazione in Unity.

Dopo il ritaglio

Importare il modello in Unity

Importa i modelli in Unity e collegali come figli del nodo Block corrispondente nella scena. Se usi più modelli, importali singolarmente e collegali tutti allo stesso nodo Block.

Nota

Per importare un modello glb in Unity è richiesto il pacchetto com.unity.cloud.gltfast, versione 6.8 o successiva. Installarlo o aggiornarlo tramite Package Manager.

Nel pannello Inspector, modifica il Transform di ogni modello di occlusione per impostare posizione, rotazione e scala rispetto al nodo Block:

  • Impostare Position su (0, 0, 0).
  • Impostare Rotation su (0, 180, 0).
  • Impostare Scale su (1, 1, 1).

Al termine, il modello di occlusion dovrebbe combaciare con la parte corrispondente del dense model del Block.

Importare modello di occlusion

Nota

Il file maschera scaricato usa una definizione di coordinate diversa da Unity, quindi il componente Y di Rotation deve essere impostato a 180.

Assegnare un materiale occlusion al modello

Assegna un materiale di occlusione a ogni modello. Puoi usare SpatialMappingOcclusion integrato in Unity.

Cambiare materiale del modello occlusion

Simulare con dati EIF o eseguire su dispositivo reale

Usare la simulazione con dati EIF o un dispositivo reale per verificare se gli oggetti virtuali sono occlusi dalle aree reali corrispondenti.

Usare geometry come occlusion

Seguire i passaggi seguenti per aggiungere nella scena geometry usata come occlusion e verificare l'effetto.

Posizionare occlusion geometry

Secondo il dense model di Mega Block, usare built-in geometry o geometry personalizzata come occlusion e posizionarla nella posizione corretta nel sistema di coordinate Block. Place occlusion geometry

[Optional] Regolare finemente la posizione della geometry secondo il panorama

Fine-tune occlusion according to the panorama

Assegnare un materiale di occlusion alla geometry

Modificare il materiale della geometry in materiale di occlusion. È possibile usare SpatialMappingOcclusion integrato in Unity. Fine-tune occlusion according to the panorama

Simulare l'esecuzione con EIF data o eseguire su dispositivo reale

Regolare finemente il posizionamento del modello di occlusion in base all'effetto di esecuzione.

Usare un dense model tagliato e ridotto come occlusion

Seguire i passaggi seguenti per tagliare e ridurre il dense model Mega Block esportato, ottenere un modello bianco per occlusion e importarlo nella scena come occlusion.

Esportare in Mega Blocks

Fare clic sul pulsante Export a destra di Mesh per esportare il dense model.

Modificare le opzioni di export

Durante l'export, prestare attenzione a modificare le opzioni di export.

Nella figura, 1 è il LOD level. Più basso è il livello, più semplice è il modello e minore è il numero di face. Se è necessaria la massima precisione, selezionare il livello più alto.

Nella figura, 2 è l'opzione di export texture. Qui è necessario solo il modello bianco come occlusion, quindi non servono texture.

Tagliare e ridurre il modello

Tagliare e ridurre il modello esportato in un software di creazione contenuti digitali, ad esempio Blender, e salvarlo come glb.

Consiglio

Nell'esempio viene usato Decimate Modifier di Blender.

Before cropping

Dopo taglio e riduzione:

After cropping

Importare il modello di occlusion in Unity e montarlo sotto il nodo Block nella scena

Import occlusion model

Modificare Transform del modello

Modificare il Transform del modello in modo che Position e Rotation siano entrambi 0.

A questo punto, il modello bianco usato per occlusion dovrebbe aderire al dense model, perché durante taglio e riduzione nel software di creazione contenuti digitali non è stata modificata la definizione del sistema di coordinate Block.

Occlusion model fit

Assegnare un materiale di occlusion al modello

Modificare il materiale del modello in materiale di occlusion. È possibile usare SpatialMappingOcclusion integrato in Unity.

Replace occlusion model material

Simulare l'esecuzione con EIF data o eseguire su dispositivo reale

Usare EIF data per simulare l'esecuzione o eseguire su dispositivo reale per vedere l'effetto.

Aspettative sull'effetto di occlusion

L'effetto di occlusion è influenzato principalmente da:

  • Accuratezza del localization tracking stesso
  • Accuratezza del posizionamento del modello
  • Accuratezza del modello stesso, se non è una geometry semplice

Durante localization drift, una mancata corrispondenza di alcuni centimetri è normale.

Un modello di occlusion con troppe face può influire facilmente sulle prestazioni. Si consiglia di usarlo solo nelle aree necessarie e di usare il più possibile simple geometry come occlusion.

Argomenti correlati