平台专用指南
Android (Kotlin/Java)
Android NDK (C)
Unity(AR Foundation)
Unreal Engine
要想打造逼真的 AR 体验,光线是关键。如果虚拟对象缺少阴影或采用不反射周围空间的亮光材质,用户会感觉该对象不太合适,即使他们无法解释原因。这是因为人类会潜意识地感知物体在环境中的光照方式。Lighting Estimation API 会分析给定图片以获取此类提示,并提供有关场景中光线的详细信息。然后,您可以在渲染虚拟对象时使用这些信息,在与它们所在场景相同的条件下为其提供光照,从而让用户保持着陆并全身心投入。
灯光提示
Lighting Estimation API 提供详细数据,可让您在渲染虚拟对象时模拟各种光照提示。这些提示包括阴影、环境光、阴影、镜面高光和反射。
阴影
阴影通常具有方向性,可让观看者知道光源的来源。
环境光
环境光是从环境周围射入的整体漫射光,使所有物体都清晰可见。
阴影
阴影是光的强度。例如,在同一场景中,同一对象的不同部分可能会有不同的阴影程度,具体取决于相对于观看者的角度以及与光源的距离。
高光高光
镜面高光是指直接反射光源的表面的亮面。对象上的亮点会相对于观看者在场景中的视角而发生变化。
反思
光线从表面反射的方式因表面具有镜面(高反射率)或漫射(不反射)属性而异。例如,金属球具有高镜面反射率,会反射其周围环境,而另一个涂成哑光灰色的球则具有漫反射。大多数现实世界中的物体都具有这些属性的组合,例如磨损的保龄球或使用过的信用卡。
反射表面还会从周围环境中提取颜色。物体的着色可能会直接受到其环境的着色影响。例如,蓝色房间中的白色球会呈现出蓝色调。
环境 HDR 模式
这些模式由单独的 API 组成,可对定向光照、阴影、镜面高光和反射进行精细且逼真的光照估算。
Environmental HDR 模式使用机器学习来实时分析相机图像并合成环境光照,以支持虚拟对象的逼真渲染。
此测光模式提供:
主要方向灯。表示主光源。可用于投射阴影。
环境球谐函数。表示场景中的剩余环境光能量。
HDR 立方体贴图。可用于渲染亮面金属物体中的反射。
您可以将这些 API 以不同的组合方式使用,但它们的设计目的是搭配使用,以实现最逼真的效果。
主方向灯
主定向光源 API 会计算场景的主要光源的方向和强度。此信息可让场景中的虚拟对象显示位置合理的镜面高光,并在与其他可见的真实对象一致的方向上投射阴影。
如需了解其运作方式,请考虑以下两张同一虚拟火箭的图片。在左侧的图片中,火箭下方有阴影,但其方向与场景中的其他阴影不符。在右侧的火箭中,阴影指向正确的方向。这是一种微妙而重要的区别,它可以让火箭出现在场景中,因为阴影的方向和强度与场景中的其他阴影更加匹配。
当主光源或被照亮的物体处于运动状态时,物体上的镜面高光会实时调整其相对于光源的位置。
与现实世界中一样,定向阴影也会根据主光源的位置调整其长度和方向。为便于说明这一点,请考虑以下两个模特,一个是虚拟的,另一个是真实的。左边的人体模型是虚拟模特。
环境球谐函数
除了主平行光中的光能量之外,ARCore 还提供球谐函数,表示从场景中所有方向射入的整体环境光。在渲染期间使用此信息添加微妙的提示,以突出显示虚拟对象的定义。
请考虑以下两张同一火箭模型的图片。左侧的火箭是使用主方向光 API 检测到的光照估算信息进行渲染的。右侧的火箭是使用主定向光源 API 和环境球面调和 API 检测到的信息渲染的。第二个火箭的视觉清晰度明显更高,并且与场景融为一体。
HDR 立方体贴图
使用 HDR 立方体贴图可在具有中高光泽度的虚拟对象(例如闪亮的金属表面)上渲染逼真的反射效果。立方体贴图还会影响对象的着色和外观。例如,被蓝色环境包围的镜面物体的材质会反射蓝色色调。计算 HDR 立方体贴图需要额外的少量 CPU 计算。
是否使用 HDR 立方体贴图取决于对象如何反映其周围环境。由于虚拟火箭是金属材质,因此具有强烈的镜面反射成分,可直接反射周围环境。因此,它从立方体贴图中受益。另一方面,使用无光泽灰色材质的虚拟对象完全没有镜面反射分量。其颜色主要取决于漫射分量,不会受立方体贴图的影响。
以下全部三个 Environmental HDR API 可用于渲染以下火箭。HDR 立方体贴图可启用反射提示,并进一步突出显示对象在场景中的完全贴合。
下面是同一火箭模型在不同光照环境下的效果。所有这些场景均使用三个 API 中的信息进行渲染,并应用定向阴影。
氛围强度模式
“氛围光强度”模式用于确定给定图片的平均像素强度和色彩校正标量。这是一个粗略设置,专为不要求精确光照的用例(例如具有内置光照的对象)而设计。
像素强度
捕获场景中光照的平均像素强度。您可以将这种光照应用于整个虚拟对象。
颜色
检测每个单独帧的白平衡。然后,您可以对虚拟对象进行色彩校正,使其更顺畅地融入场景的整体色彩。
环境探测
环境探测器会将 360 度相机视图整理为环境纹理,例如立方体贴图。然后,这些纹理可用于逼真地照亮虚拟对象,例如“反射”其所在房间的虚拟金属球。