打好光线

平台专用指南

要打造逼真的 AR 体验,一个关键环节就是调整光线。当虚拟对象缺少阴影或具有无法反映周围空间的闪亮材料时,即使他们无法解释原因,用户也可以感觉到该对象不太适合。这是因为人类会下意识地感知关于周围环境中物体如何点亮的线索。Lighting Estimation API 会分析给定图片中的此类提示,从而提供有关场景中光照的详细信息。然后,您可以在渲染虚拟对象时使用这些信息,以便在与对象所处的场景相同的条件下为其提供光照,从而吸引用户保持关注和互动。

光线提示

Lighting Estimation API 提供了详细的数据,让您可以在渲染虚拟对象时模拟各种光照提示。这些提示包括阴影、环境光、阴影、镜面高光和反射。

阴影

阴影通常具有方向性,可让观看者了解光源的来源。

环境光

环境光是从环境周围照射进来的整体漫射光,让一切可见。

阴影

阴影是指光的强度。例如,同一物体的不同部分在同一场景中可能会有不同级别的阴影,具体取决于相对于观看者的角度及其与光源的距离。

镜面高光

镜面高光是指直接反射光源的表面发光点。物体上的高光会相对于场景中观看者的位置而变化。

反应

光从表面弹跳的方式不尽相同,具体取决于表面是具有镜面反射(高反射)还是漫射(非反射)属性。例如,一个金属球将具有高度镜面反射率并反射其环境,而另一个涂有暗淡哑光的球则是漫射的。现实世界中的大多数物体都具有上述特征 - 比如一个打乱的保龄球或一张常用的信用卡。

反光表面也可以从环境环境中捕捉颜色。对象的颜色可能会直接受到其环境颜色的影响。例如,蓝色房间中的白球会呈现蓝色调。

环境 HDR 模式

这些模式由单独的 API 组成,支持对定向光照、阴影、镜面高光和反射进行精细且逼真的光照估测。

环境 HDR 模式使用机器学习技术实时分析相机图像,并合成环境照明以支持逼真呈现虚拟对象。

此光照估算模式提供:

  1. 主朝向光。表示主光源。可用于投射阴影。

  2. 环境球谐波。表示场景中剩余的环境光能量。

  3. HDR 立方体贴图。可用于渲染闪亮金属物体中的反射。

虽然您可以通过不同的组合使用这些 API,但为了实现最真实的效果,它们旨在一起使用。

主朝向光

主方向光 API 用于计算场景中主光源的方向和强度。此信息让场景中的虚拟对象可以显示合理定位的镜面高光,并沿与其他可见真实对象一致的方向投射阴影。

为了了解其工作原理,请参考这两张同一虚拟火箭的图片。在左图中,火箭下面有阴影,但其方向与场景中的其他阴影不一致。在右侧的火箭中,阴影指向正确的方向。这是一个细微但很重要的区别,它将火箭置于场景中,因为阴影的方向和强度更好地匹配场景中的其他阴影。

     

当主光源或照明对象运动时,对象上的镜面高光会相对于光源实时调整其位置。

定向阴影还会根据主光源的位置调整其长度和方向,就像在现实世界中一样。为了说明这种效果,让我们以这两个人体模型为例,一个是虚拟的,另一个是真实的。左侧的人体模型是虚拟的。

环境球谐波

除了主朝向光中的光能之外,ARCore 还提供球谐波,表示从场景中各个方向进入的整体环境光。在渲染过程中使用这些信息可以添加微妙的线索,从而突显虚拟对象的定义。

以同一个火箭模型的这两张图片为例。左侧的火箭是使用主方向光 API 检测到的光照估测信息渲染的。右侧的火箭是使用主方向光 API 和环境球谐波 API 检测到的信息渲染的。第二个火箭的视觉清晰度更高,并且与场景更自然地融为一体。

     

HDR 立方体贴图

使用 HDR 立方体贴图可在具有中高光泽度的虚拟对象(例如闪亮的金属表面)上渲染逼真的反射效果。立方体贴图还会影响对象的阴影和外观。例如,被蓝色环境包围的镜面反射物体的材质会反射蓝色色调。计算 HDR 立方体贴图需要进行一些额外的 CPU 计算。

是否应使用 HDR 立方体贴图取决于对象如何反映其周围环境。由于虚拟火箭是金属状的,因此具有强烈的镜面反射分量,直接反射周围的环境。因此,它受益于立方体贴图。另一方面,采用暗灰色哑光材质的虚拟物体根本没有镜面反射成分。其颜色主要取决于漫射组件,而不会从立方体贴图中受益。

以下所有三个 Environmental HDR API 用于渲染火箭。HDR 立方体贴图支持反射提示,并进一步突出显示对象在场景中的完美地面。

这是同一火箭模型在不同照明环境中的效果。所有这些场景都使用来自三个 API 的信息进行渲染,并应用了方向性阴影。

           

环境强度模式

“环境强度”模式决定了指定图片的平均像素强度和色彩校正标量。这是一种粗略设置,适用于对精确光照不重要的用例,例如采用嵌入式光照的对象。

像素强度

拍摄场景中光照的平均像素强度。您可以将该光照应用到整个虚拟对象。

颜色

检测每一帧的白平衡。然后,您可以对虚拟对象进行色彩校正,使其更顺畅地融入场景的整体色彩。

环境探测

环境探测工具可将 360 度相机视图整理成立方图等环境纹理。然后,这些纹理可以用来逼真地虚拟物体的光照,例如“反射”物体的虚拟金属球。