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
。