Lighting Estimation API 提供详细数据,可让您在渲染虚拟对象时模拟各种光照提示。ARCore 支持三种测光模式:
前提条件
确保您了解基本 AR 概念以及如何配置 ARCore 会话,然后再继续。
启用光照估算
请按照以下步骤在应用中启用光照估算功能。
- 设置 AR 基础项目或 ARCore 扩展程序项目。
- 在 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
。