Guide specifiche per piattaforma
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine

Un aspetto fondamentale per creare esperienze AR realistiche è l'illuminazione. Quando un oggetto virtuale non ha un'ombra o ha un materiale lucido che non riflette lo spazio circostante, gli utenti possono percepire che l'oggetto non si adatta perfettamente, anche se non riescono a spiegare il motivo. Questo perché gli esseri umani percepiscono inconsciamente gli indizi su come gli oggetti sono illuminati nel loro ambiente. L'API Lighting Estimation analizza le immagini fornite per individuare questi indizi, fornendo informazioni dettagliate sull'illuminazione di una scena. Puoi quindi utilizzare queste informazioni durante il rendering degli oggetti virtuali per illuminarli nelle stesse condizioni della scena in cui vengono posizionati, mantenendo gli utenti coinvolti e con i piedi per terra.
Segnali luminosi
L'API Lighting Estimation fornisce dati dettagliati che ti consentono di imitare vari segnali di illuminazione durante il rendering di oggetti virtuali. Questi indizi sono ombre, luce ambientale, ombreggiatura, riflessi speculari e riflessioni.
Ombre
Le ombre sono spesso direzionali e indicano agli spettatori la provenienza delle fonti di luce.
Luce ambientale
La luce ambientale è la luce diffusa generale che proviene dall'ambiente circostante, rendendo tutto visibile.
Ombreggiatura
L'ombreggiatura è 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 sua vicinanza a una fonte di luce.
Specularità
I riflessi speculari sono le parti lucide delle superfici che riflettono direttamente una sorgente luminosa. I punti luce su 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 sfera metallica sarà altamente speculare e rifletterà l'ambiente circostante, mentre un'altra sfera verniciata di un grigio opaco e spento sarà diffusa. La maggior parte degli oggetti del mondo reale presenta una combinazione di queste proprietà, ad esempio una palla da bowling graffiata o una carta di credito molto usata.
Le superfici riflettenti assorbono 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 granulare e realistica dell'illuminazione per l'illuminazione direzionale, le ombre, le alte luci speculari e i riflessi.
La modalità HDR ambientale utilizza il machine learning per analizzare le immagini della videocamera in tempo reale e sintetizzare l'illuminazione ambientale per supportare il rendering realistico degli oggetti virtuali.
Questa modalità di stima dell'illuminazione fornisce:
Luce direzionale principale. Rappresenta la fonte di luce principale. Può essere utilizzato per proiettare ombre.
Armoniche sferiche ambientali. Rappresenta l'energia della luce ambientale rimanente nella scena.
Una cubemap HDR. Può essere utilizzato per eseguire il rendering dei riflessi in oggetti metallici lucidi.
Puoi utilizzare queste API in diverse combinazioni, ma sono progettate per essere utilizzate insieme per ottenere l'effetto più realistico.
Luce direzionale principale
L'API Main Directional Light calcola la direzione e l'intensità della fonte di luce principale della scena. Queste informazioni consentono agli oggetti virtuali nella scena di mostrare punti luce speculari ragionevolmente posizionati e di proiettare ombre in una direzione coerente con gli altri oggetti reali visibili.
Per capire come funziona, considera queste due immagini dello stesso razzo virtuale. Nell'immagine a sinistra, c'è un'ombra sotto il razzo, ma la sua direzione non corrisponde alle altre ombre della scena. Nel razzo a destra, l'ombra è orientata nella direzione corretta. Si tratta di una differenza sottile ma importante, che rende il razzo più realistico nella scena perché la direzione e l'intensità dell'ombra corrispondono meglio alle altre ombre della scena.

Quando la sorgente luminosa principale o un oggetto illuminato è in movimento, il riflesso speculare sull'oggetto regola la sua posizione in tempo reale rispetto alla sorgente luminosa.
Anche le ombre direzionali regolano la lunghezza e la direzione in base alla posizione della fonte di luce principale, proprio come nel mondo reale. Per illustrare questo effetto, considera questi due manichini, uno virtuale e l'altro reale. Il manichino a sinistra è quello virtuale.

Armoniche sferiche ambientali
Oltre all'energia luminosa nella 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 segnali sottili che mettono in evidenza 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 sia dall'API per la luce direzionale principale sia dall'API per gli armonici sferici ambientali. Il secondo razzo ha una definizione visiva più chiara e si integra meglio nella scena.

Cubemap HDR
Utilizza il cubemap HDR per eseguire il rendering di riflessi realistici su oggetti virtuali con lucentezza da media ad alta, come superfici metalliche lucide. La cubemap 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à di blu. Il calcolo della cubemap HDR richiede una piccola quantità di calcolo della CPU aggiuntivo.
Se devi utilizzare la cubemap 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. Pertanto, trae vantaggio dalla cubemap. D'altra parte, un oggetto virtuale con un materiale opaco grigio spento non ha alcuna componente speculare. Il suo colore dipende principalmente dal componente diffuso e non trarrebbe vantaggio da una cubemap.
Tutte e tre le API Environmental HDR sono state utilizzate per il rendering del razzo riportato di seguito. La cubemap HDR consente di visualizzare i segnali riflettenti e un'ulteriore evidenziazione che radica completamente l'oggetto nella scena.

Ecco lo stesso modello di razzo in ambienti con illuminazione diversa. Tutte queste scene sono state renderizzate utilizzando le informazioni delle tre API, con ombre direzionali applicate.

Modalità Intensità ambientale
La modalità Intensità ambientale determina l'intensità media dei pixel e gli scalari di correzione del colore per una determinata immagine. Si tratta di un'impostazione grossolana progettata per i casi d'uso in cui l'illuminazione precisa non è fondamentale, ad esempio gli oggetti con illuminazione integrata.
Intensità pixel
Acquisisce 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 frame. Puoi quindi correggere il colore di un oggetto virtuale in modo che si integri più facilmente nella colorazione complessiva della scena.
Probe ambientali
Le sonde ambientali organizzano le visualizzazioni della videocamera a 360 gradi in texture ambientali come le cubemap. Queste texture possono poi essere utilizzate per illuminare in modo realistico gli oggetti virtuali, ad esempio una palla di metallo virtuale che "riflette" la stanza in cui si trova.