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

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

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

前提条件

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

启用光照估算

请按照以下步骤在应用中启用光照估算功能。

  1. 设置 AR 基础项目ARCore 扩展程序项目
  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