为虚拟对象添加逼真的光照

Lighting Estimation API 可提供详细的数据,让您可以在渲染虚拟对象时模拟各种光照提示。ARCore 支持三种光估测模式:

  1. 已停用
  2. 氛围强度模式
  3. 环境 HDR 模式

前提条件

确保您了解基本 AR 概念以及如何配置 ARCore 会话,然后再继续。

启用光照估测

请按照以下步骤在您的应用中启用光照估测。

  1. 设置一个 AR 基础项目ARCore Extensions 项目
  2. Hierarchy 标签页中,前往 XR Session Origin > AR Camera

  1. AR Camera Manager 组件下,选择 Light Estimation
  2. Light Estimation下拉菜单中,选择您想要使用的模式。

启用环境 HDR 模式

环境 HDR 模式可启用以下光估测设置:

当满足以下条件时,系统会自动启用此模式:

启用氛围强度模式

ARCameraManager 组件中选择环境强度模式后,系统会自动启用基本光估测。

环境强度模式会启用以下光估测设置:

  • 环境色
  • 环境强度

在场景中使用光照信息

获得正确的光照设置后,您就可以为场景中的虚拟对象添加光照,就像它们是现实世界的一部分一样。

在启用光照估算时,ARCameraManager 组件可以引发 frameReceived 事件,用于估算帧的光照条件。来自 frameReceived 事件的信息以 ARLightEstimationData 的形式存储在 ARCameraFrameEventArgs 结构体中。

若要在运行时更改灯的参数,请按以下步骤操作。

  1. 创建或修改您的场景中现有的方向光。
  2. 将一个新脚本附加到方向光。

    // Sample Lighting Estimation script
    
    Light light;
    void Awake ()
    {
        light = GetComponent<Light>();
    }
    
    void OnEnable()
    {
        if (cameraManager != null)
            cameraManager.frameReceived += FrameChanged;
    }
    
    void OnDisable()
    {
        if (cameraManager != null)
            cameraManager.frameReceived -= FrameChanged;
    }
    
    void FrameChanged(ARCameraFrameEventArgs args)
    {
       // Modify `light` parameters using ARCameraFrameEventArgs.
    }
    
  3. 修改此新脚本以检测光线变化。如需关于如何执行此操作的示例,请查看 Unity 的 BasicLightEstimation.csHDRLightEstimation.cs 脚本。

在场景中使用环境探测

请按照以下步骤在场景中启用环境探测

  1. 在场景的 ARSessionOrigin 中启用系统推荐的展示位置。
  2. AREnvironmentProbeManager 组件添加到 ARSessionOrigin