平台专用指南
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 立方体贴图取决于对象如何反射其周围环境。由于虚拟火箭是金属材质,因此具有强烈的镜面反射成分,可直接反射周围环境。因此,它可以从立方体贴图中受益。另一方面,使用无光泽灰色材质的虚拟对象完全没有镜面反射分量。其颜色主要取决于漫射分量,不会受立方体贴图的影响。
下图中的火箭是使用这三个环境 HDR API 渲染的。HDR 立方体贴图可启用反射提示,并进一步突出显示对象在场景中的完全贴合。
下面是同一火箭模型在不同光照环境下的效果。所有这些场景均使用这三个 API 中的信息渲染而成,并应用了定向阴影。
氛围强度模式
“氛围强度”模式用于确定给定图片的平均像素强度和色彩校正标量。这是一种粗略的设置,适用于精确光照不太重要的用例,例如具有内置光照的对象。
像素强度
捕获场景中光照的平均像素强度。您可以将此照明效果应用于整个虚拟对象。
颜色
检测每个单独帧的白平衡。然后,您可以对虚拟对象进行色彩校正,使其更顺畅地融入场景的整体色彩。
环境探测
环境探测器会将 360 度相机视图整理成环境纹理,例如立方体贴图。然后,这些纹理可用于逼真地照亮虚拟对象,例如“反射”其所在房间的虚拟金属球。