ARCore光线估算

时间:2019-02-09 18:47:43

标签: augmented-reality arcore

我一直在尝试了解如何在我的Android应用中使用AR核心的光照估算功能。关于光照估算的大多数教程都是统一的。但是我正在为项目使用Android Studio。如果有人可以解释如何在关闭灯光时使用灯光估算来触发着色器或动画的更改?

1 个答案:

答案 0 :(得分:0)

目前,ARCore中没有诚实的光照估计,只是粗略的近似。

让我们看看Android Studio中用于ARCore的Light Estimation的代码应如何:

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亮度。

希望这会有所帮助。