Guide specifiche per la piattaforma
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine
Un aspetto fondamentale per creare esperienze AR realistiche è l'illuminazione. Quando in un oggetto virtuale manca un'ombra o presenta un materiale lucido che non riflette lo spazio circostante, gli utenti possono percepire che l'oggetto non si adatta del tutto, anche se non sono in grado di spiegarne il motivo. Questo perché gli esseri umani percepiscono inconsciamente segnali relativi a come gli oggetti vengono illuminati nel loro ambiente. L'API Lighting Estimation analizza le immagini date alla ricerca di questi segnali, fornendo informazioni dettagliate sull'illuminazione di una scena. Puoi quindi utilizzare queste informazioni quando esegui il rendering di oggetti virtuali per illuminarli nelle stesse condizioni della scena in cui si trovano, mantenendo gli utenti concentrati e coinvolti.
Segnali luminosi
L'API Lighting Estimation fornisce dati dettagliati che ti consentono di simulare vari indicatori di illuminazione durante il rendering di oggetti virtuali. Questi indizi sono ombre, luce ambientale, ombreggiatura, riflessi speculari e riflessi.
Ombre
Le ombre sono spesso direzionali e indicano agli spettatori da dove provengono le sorgenti di luce.
Luce ambientale
La luce ambientale è la luce diffusa complessiva che proviene dall'ambiente circostante e rende tutto visibile.
Ombreggiatura
L'ombreggiatura indica l'intensità della luce. Ad esempio, diverse parti dello stesso oggetto possono avere diversi livelli di ombreggiatura nella stessa scena, a seconda dell'angolazione rispetto allo spettatore e della vicinanza a una fonte di luce.
Luci speculari
Gli highlight speculari sono le parti lucide delle superfici che riflettono direttamente una sorgente di luce. Gli elementi in evidenza di un oggetto cambiano in base alla posizione di uno spettatore in una scena.
Stati d'animo
La luce rimbalza sulle superfici in modo diverso a seconda che la superficie abbia proprietà speculari (altamente riflettenti) o diffuse (non riflettenti). Ad esempio, una palla metallica sarà altamente speculare e rifletterà l'ambiente circostante, mentre un'altra palla dipinta di grigio opaco sarà diffusa. La maggior parte degli oggetti reali ha una combinazione di queste proprietà: pensa a una palla da bowling sfregiata o a una carta di credito molto usata.
Le superfici riflettenti acquisiscono anche i colori dell'ambiente circostante. La colorazione di un oggetto può essere influenzata direttamente dalla colorazione del suo ambiente. Ad esempio, una palla bianca in una stanza blu assumerà una tonalità bluastra.
Modalità HDR ambientale
Queste modalità sono costituite da API separate che consentono una stima dell'illuminazione granulare e realistica per illuminazione direzionale, ombre, riflessi speculari e riflessi.
La modalità HDR ambientale utilizza il machine learning per analizzare le immagini della fotocamera in tempo reale e sintetizzare l'illuminazione ambientale al fine di supportare il rendering realistico degli oggetti virtuali.
Questa modalità di stima dell'illuminazione fornisce:
Luce di direzione principale. Rappresenta la sorgente di luce principale. Può essere utilizzato per creare ombre.
Armoniche sferiche ambientali. Rappresenta l'energia della luce ambientale rimanente nella scena.
Una mappa cubo HDR. Può essere utilizzato per riprodurre le riflessioni in oggetti metallici lucidi.
Puoi utilizzare queste API in combinazioni diverse, ma sono progettate per essere utilizzate insieme per un effetto più realistico.
Luce di direzione principale
L'API della luce direzionale principale calcola la direzione e l'intensità della fonte di luce principale della scena. Queste informazioni consentono agli oggetti virtuali nella scena di mostrare riflessi speculari ragionevolmente posizionati e di proiettare ombre in una direzione coerente con altri oggetti reali visibili.
Per capire come funziona, considera queste due immagini della stessa navicella spaziale virtuale. Nell'immagine a sinistra, sotto il razzo è presente un'ombra, ma la sua direzione non corrisponde a quella delle altre ombre nella scena. Nel razzo a destra, l'ombra è nella direzione corretta. Si tratta di una differenza sottile, ma importante, che dà solidità al razzo nella scena perché la direzione e l'intensità dell'ombra corrispondono meglio alle altre ombre presenti.
Quando la sorgente di luce principale o un oggetto illuminato sono in movimento, l'evidenziazione speculare sull'oggetto regola la sua posizione in tempo reale rispetto alla sorgente di luce.
Anche le ombre dirette regolano la loro lunghezza e direzione in base alla posizione della fonte di luce principale, proprio come accade nel mondo reale. Per illustrare questo effetto, prendi in considerazione questi due manichini, uno virtuale e l'altro reale. Il manichino a sinistra è quello virtuale.
Armoniche sferiche ambientali
Oltre all'energia luminosa della luce direzionale principale, ARCore fornisce armoniche sferiche che rappresentano la luce ambientale complessiva proveniente da tutte le direzioni della scena. Utilizza queste informazioni durante il rendering per aggiungere indizi sottili che mettano in risalto la definizione degli oggetti virtuali.
Considera queste due immagini dello stesso modello di razzo. Il razzo a sinistra viene visualizzato utilizzando le informazioni di stima dell'illuminazione rilevate dall'API di luce direzionale principale. Il razzo a destra viene visualizzato utilizzando le informazioni rilevate dalle API di direzione principale della luce e delle armoniche sferiche ambientali. Il secondo razzo ha chiaramente una maggiore definizione visiva e si fonde più facilmente nella scena.
Mappa cubo HDR
Utilizza la mappa del cubo HDR per rendere riflessi realistici su oggetti virtuali con lucentezza medio-alta, come superfici metalliche lucide. La mappa del cubo influisce anche sull'ombreggiatura e sull'aspetto degli oggetti. Ad esempio, il materiale di un oggetto speculare circondato da un ambiente blu rifletterà le tonalità blu. Il calcolo della mappa cubica HDR richiede una piccola quantità di calcolo della CPU aggiuntivo.
L'utilizzo della mappa cubo HDR dipende da come un oggetto riflette l'ambiente circostante. Poiché il razzo virtuale è metallico, ha una forte componente speculare che riflette direttamente l'ambiente circostante. Di conseguenza trae vantaggio dalla "cubemap". D'altra parte, un oggetto virtuale con un materiale opaco grigio opaco non ha alcun componente speculare. Il suo colore dipende principalmente dal componente diffuso e non trarrebbe vantaggio da una mappa del cubo.
Per il rendering del razzo di seguito sono state utilizzate tutte e tre le API HDR per l'ambiente. La mappa del cubo HDR consente di attivare gli indicatori riflettenti e di evidenziare ulteriormente l'oggetto nella scena.
Ecco lo stesso modello di razzo in ambienti con illuminazione diversa. Tutte queste scene sono state visualizzate utilizzando le informazioni delle tre API, con ombre direzionali applicate.
Modalità di intensità dell'ambiente
La modalità Intensità ambiente determina l'intensità media dei pixel e gli scalari di correzione del colore per una determinata immagine. Si tratta di un'impostazione approssimativa progettata per casi d'uso in cui l'illuminazione precisa non è fondamentale, ad esempio oggetti con illuminazione incorporata.
Intensità pixel
Cattura l'intensità media dei pixel dell'illuminazione in una scena. Puoi applicare questa illuminazione a un intero oggetto virtuale.
Colore
Rileva il bilanciamento del bianco per ogni singolo fotogramma. Puoi quindi correggere il colore di un oggetto virtuale in modo che si integri più facilmente nella colorazione complessiva della scena.
Probe di ambiente
Le sonde ambientali organizzano le visualizzazioni della fotocamera a 360 gradi in texture ambientali come le mappe cubiche. Queste texture possono essere utilizzate per illuminare in modo realistico gli oggetti virtuali, ad esempio una sfera di metallo virtuale che "riflette" la stanza in cui si trova.