На данный момент в ARCore нет честной оценки освещенности, только приблизительное приближение.
Посмотрим, как должен выглядеть код в Android Studio для оценки освещенности ARCore:
try {
session.setCameraTextureName(backgroundRenderer.getTextureId());
Frame frame = session.update();
Camera camera = frame.getCamera();
// Compute lighting from average intensity of the image.
// 3 components here are color factors, the fourth one is intensity.
final float[] colorCorrectionRgba = new float[4];
frame.getLightEstimate().getColorCorrection(colorCorrectionRgba, 0);
} catch (Throwable t) {
Log.e(TAG, "Exception on the OpenGL thread", t);
}
Оценка - это просто средняя яркость всей захваченной сцены с цветной камеры телефона.,1.0 - это белый, а 0.0 - это черный.Это не связано с фактической яркостью комнаты, в которой вы находитесь, но зависит от того, как камера воспринимает ее через настройки экспозиции.Экспозиция камеры всегда неточная, и она зависит от того, куда направлена камера.Вы получаете только одно глобальное значение оценки освещенности для всей сцены.Вы не можете настроить свой объект в соответствии с конкретной региональной яркостью, в которой он находится.
Шейдер проекта Hello_AR_Example
умножает цвет объекта на общую оценку освещения.Это адаптирует (и обычно уменьшает) яркость RGB конечного цвета поверхности.
Надеюсь, это поможет.