Utiliser Lighting Estimation avec des modèles Sceneform

L'API Lighting Estimation analyse une image donnée pour détecter des indicateurs visuels distincts et fournit des informations détaillées sur la luminosité d'une scène donnée. Vous pouvez ensuite utiliser ces informations lors du rendu des objets virtuels pour les éclairer dans les mêmes conditions que la scène dans laquelle ils sont placés. Vous rendre ainsi ces objets plus réalistes et améliorer l'expérience immersive pour les utilisateurs.

Signaux et concepts d'éclairage

Les êtres humains perçoivent inconsciemment des indices subtils concernant la façon dont des objets ou des êtres vivants sont éclairés dans leur environnement. Lorsqu'il manque une ombre dans un objet virtuel ou un matériau brillant qui ne reflète pas l'espace environnant, les utilisateurs peuvent sentir que l'objet ne s'intègre pas parfaitement dans une scène particulière, même s'ils ne peuvent pas expliquer pourquoi. C'est pourquoi le rendu d'objets de RA pour correspondre à la luminosité d'une scène est essentiel pour des expériences immersives et plus réalistes.

La plupart du temps, l'estimation de la luminosité effectue la majeure partie du travail en vous fournissant des données détaillées qui vous permettent d'imiter différents signaux d'éclairage lors du rendu d'objets virtuels. Ces indicateurs sont les suivants : ombres, luminosité ambiante, ombrage, tons clairs spéculaires et réflexions.

Nous pouvons décrire ces indicateurs visuels comme suit:

  • Lumière ambiante La lumière ambiante est la lumière diffuse globale qui provient de l'environnement et qui éclaire tout.

  • Les ombres Les ombres sont souvent directionnelles et indiquent aux spectateurs d'où viennent les sources de lumière.

  • Ombrage. L'ombrage correspond à l'intensité de la lumière dans différentes zones d'une image donnée. Par exemple, différentes parties d'un même objet peuvent avoir différents niveaux d'ombrage dans la même scène, en fonction de l'angle par rapport au spectateur et de sa proximité avec une source de lumière.

  • Caractéristiques importantes Ces surfaces brillantes reflètent directement la source de lumière. Les points forts d'un objet changent par rapport à la position du spectateur dans la scène.

  • Réflexion La lumière rebondit sur les surfaces différemment selon qu'elles présentent des propriétés spéculatives (c'est-à-dire très réfléchissantes) ou diffuses (non réflexives). Par exemple, une boule métallique sera très spéculative et reflètera son environnement, tandis qu'une autre boule peinte en gris mat satiné sera diffusée. La plupart des objets du monde réel combinent ces propriétés : une boule de bowling étouffée ou une carte de crédit très utilisée.

    Les surfaces réfléchissantes récupèrent également les couleurs de l'environnement ambiant. La coloration d'un objet peut être directement affectée par la coloration de son environnement. Par exemple, une boule blanche dans une pièce bleue prend une teinte bleuâtre.

Utiliser les modes d'estimation de la luminosité pour améliorer le réalisme

L'API Config.LightEstimationMode dispose de modes qui estiment l'éclairage dans l'environnement avec différents degrés de précision et de réalisme.

  • Mode HDR pour l'environnement (ENVIRONMENTAL_HDR) : ce mode se compose d'une API qui permet une estimation réaliste de la luminosité pour l'éclairage directionnel, les ombres, les tons clairs spéculatifs et les reflets.

  • Mode d'intensité ambiante (AMBIENT_INTENSITY). Ce mode détermine l'intensité moyenne en pixels et la couleur d'éclairage d'une image donnée. Il s'agit d'un paramètre standard conçu pour les cas où l'éclairage précis n'est pas essentiel (par exemple, pour les objets dotés d'un éclairage intégré).

  • DISABLED. Désactivez Config.LightEstimationMode si l'éclairage correspond à un environnement donné et qu'il n'est pas pertinent pour une scène ou un objet.

Utiliser le mode ENVIRONMENTAL_HDR

Le mode ENVIRONMENTAL_HDR utilise le machine learning pour analyser l'image de la caméra d'entrée et synthétiser l'éclairage de l'environnement afin d'afficher un objet virtuel.

Ce mode combine l'éclairage directionnel, des harmoniques sphériques ambiantes et un cube HDR pour donner l'impression que les objets virtuels font partie intégrante d'une scène donnée:

  • L'éclairage directionnel analyse la source de lumière apparente pour une image donnée. Ce type d'éclairage ajoute des tons clairs spéculatifs raisonnablement positionnés et projette les ombres dans une direction cohérente avec les autres objets réels visibles.

  • Les harmonies sphériques ambiantes obtiennent une représentation réaliste de la lumière ambiante globale provenant de toutes les directions d'une scène. Lors du rendu, ces informations sont utilisées pour ajouter des repères subtils qui font ressortir la définition d'objets virtuels.

  • Une carte cube HDR capture l'éclairage ambiant de l'objet virtuel. Lors du rendu, ce cube crée le reflet du matériau moyen à haut.

L'image suivante montre un exemple d'objet virtuel placé dans une scène avec ENVIRONMENTAL_HDR activé.

Configurer le mode ENVIRONMENTAL_HDR pour une scène Sceneform

Pour utiliser ENVIRONMENTAL_HDR avec une scène Sceneform, développez la classe ARFragment et remplacez la configuration comme suit:

@Override
protected Config getSessionConfiguration(Session session) {
  Config config = new Config(session);
  config.setLightEstimationMode(Config.LightEstimationMode.ENVIRONMENTAL_HDR);
  return config;
}

Pour voir comment cela fonctionne, consultez l'exemple de système solaire. (Cet exemple implémente ENVIRONMENTAL_HDR sans ARFragment.)

Utiliser le mode AMBIENT_INTENSITY

Le mode AMBIENT_INTENSITY détermine l'intensité moyenne des pixels et les scalaires de correction des couleurs pour une image donnée. Il s'agit d'un paramètre grossier conçu pour les cas où l'éclairage précis n'est pas critique, comme les objets dotés d'un éclairage intégré.

  • L'intensité des pixels capture l'intensité moyenne des pixels de l'éclairage dans une scène, pour une application à un objet virtuel entier.

  • Les scalaires de correction des couleurs détectent la balance des blancs pour chaque image et vous permettent de corriger la couleur d'un objet virtuel afin qu'il s'intègre plus facilement à la couleur globale d'une scène.

Configurer le mode AMBIENT_INTENSITY pour une scène Sceneform

Pour utiliser AMBIENT_INTENSITY avec une scène Sceneform, développez la classe ARfragment et remplacez la configuration comme suit:

@Override
protected Config getSessionConfiguration(Session session) {
  Config config = new Config(session);
  config.setLightEstimationMode(Config.LightEstimationMode.AMBIENT_INTENSITY);
  return config;
}