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 a un oggetto virtuale manca un'ombra o è realizzato con 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 spiegarne il motivo. Questo perché gli esseri umani percepiscono inconsciamente gli indizi relativi all'illuminazione degli oggetti nel loro ambiente. L'API Lighting Estimation analizza le immagini in questione per rilevare questi indizi, fornendo informazioni dettagliate sull'illuminazione in una scena. Puoi quindi utilizzare queste informazioni durante il rendering degli oggetti virtuali per illuminarli nelle stesse condizioni della scena in cui sono posizionati, mantenendo gli utenti concentrati e coinvolti.
Indicatori di illuminazione
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 fonti di luce.
Luce ambientale
La luce ambientale è la luce diffusa complessiva che proviene dall'ambiente circostante e rende tutto visibile.
Ombreggiatura
L'ombreggiatura è l'intensità della luce. Ad esempio, parti diverse dello stesso oggetto possono avere livelli diversi di ombreggiatura nella stessa scena, a seconda dell'angolazione rispetto allo spettatore e della vicinanza a una sorgente 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 (molto 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 scalcinata 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 del 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 di luce direzionale principale calcola la direzione e l'intensità della sorgente 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 sottili indizi che mettano 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 Luce principale che dall'API di armoniche sferiche ambientali. Il secondo razzo ha una definizione visiva più chiara e si fonde più facilmente nella scena.
Mappa cubo HDR
Utilizza la mappa 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à tonalità blu. Il calcolo della mappa cubica HDR richiede una piccola quantità di calcolo della CPU aggiuntivo.
L'utilizzo della mappa cubica HDR dipende da come un oggetto riflette l'ambiente circostante. Poiché il razzo virtuale è metallico, ha un forte componente speculare che riflette direttamente l'ambiente circostante. Pertanto, trae vantaggio dalla mappa del cubo. 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 attiva gli indicatori riflettenti e ne accentua l'effetto, ancorando completamente l'oggetto alla 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à dei 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.
Sonde ambientali
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.