java - ARCore – 光估计

标签 java android kotlin augmented-reality arcore

我一直在尝试了解如何在我的 Android 应用中使用 ARCore 的光估计功能。大多数关于光估计的教程都是针对 Unity 的。不过我的项目使用的是 Android Studio。

如果有人可以解释如何使用光估计来在关闭灯光时触发着色器或动画的变化?

最佳答案

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

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

相关文章:

android - Fragment 超出屏幕

kotlin - Dagger2和Kotlin:@Binds与@IntoMap不兼容

android - 单击另一个 Activity 中的按钮时,如何使按钮在一个 Activity 中可见? - 安卓

Java 类收集所有子属性

java - 在我的 Kafka SpringBoot 应用程序的 @PostConstruct 方法中拆分数组时遇到问题

java - 将照片上传到 ParseUser 对象时,它会被保存到我添加的上一个用户

android - 工具栏不接触屏幕的两侧

java - 如何完全求助于RecyclerView的SortedList

generics - Kotlin,通用加法

java - maven 跳过编译错误的测试