Оценка освещения ARCore - PullRequest
       7

Оценка освещения ARCore

0 голосов
/ 09 февраля 2019

Я пытался понять, как использовать функцию оценки освещенности ядра AR в моем приложении для Android.Большинство уроков по легкой оценке посвящено единству.Однако я использую Android Studio для своего проекта.Если кто-нибудь может объяснить, как использовать оценку освещенности для запуска изменения шейдера или анимации при выключении освещения?

1 Ответ

0 голосов
/ 24 апреля 2019

На данный момент в 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 конечного цвета поверхности.

Надеюсь, это поможет.

...