Lighting Estimation API 可提供详细的数据,让您可以在渲染虚拟对象时模拟各种光照提示。ARCore 支持三种光估测模式:
前提条件
确保您了解基本 AR 概念以及如何配置 ARCore 会话,然后再继续。
启用光照估测
请按照以下步骤在您的应用中启用光照估测。
- 设置一个 AR 基础项目或 ARCore Extensions 项目。
- 在 Hierarchy 标签页中,前往 XR Session Origin > AR Camera。
- 在 AR Camera Manager 组件下,选择 Light Estimation。
- 在Light Estimation下拉菜单中,选择您想要使用的模式。
启用环境 HDR 模式
环境 HDR 模式可启用以下光估测设置:
当满足以下条件时,系统会自动启用此模式:
- 在 AR 相机管理器提供的光估测模式下,选择环境球谐波、主光方向和/或主光强度。
- 在
AREnvironmentProbeManager
中启用了环境探测功能 - 已选择兼容的摄像头配置
启用氛围强度模式
在 ARCameraManager
组件中选择环境强度模式后,系统会自动启用基本光估测。
环境强度模式会启用以下光估测设置:
- 环境色
- 环境强度
在场景中使用光照信息
获得正确的光照设置后,您就可以为场景中的虚拟对象添加光照,就像它们是现实世界的一部分一样。
在启用光照估算时,ARCameraManager
组件可以引发 frameReceived
事件,用于估算帧的光照条件。来自 frameReceived
事件的信息以 ARLightEstimationData
的形式存储在 ARCameraFrameEventArgs
结构体中。
若要在运行时更改灯的参数,请按以下步骤操作。
- 创建或修改您的场景中现有的方向光。
将一个新脚本附加到方向光。
// 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. }
修改此新脚本以检测光线变化。如需关于如何执行此操作的示例,请查看 Unity 的
BasicLightEstimation.cs
和HDRLightEstimation.cs
脚本。
在场景中使用环境探测
请按照以下步骤在场景中启用环境探测。
- 在场景的
ARSessionOrigin
中启用系统推荐的展示位置。 - 将
AREnvironmentProbeManager
组件添加到ARSessionOrigin
。