我一直在尝试了解如何在我的Android应用程序中使用ARCore的light estimation功能。关于光照估算的大多数教程都是针对Unity的。但是我正在为项目使用Android Studio。

是否有人可以解释如何在关闭灯光时使用光照估计来触发着色器或动画的更改?

最佳答案

目前,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亮度。

关于java - ARCore –估算灯,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54609526/

10-11 20:26