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

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