基于移动AR的光照一致性
发布时间:2017-09-27 16:52 来源: 芬莱科技
仅靠一颗普通摄像头,ARKit和ARcore都实现了对环境光照的估计,虽然效果比起拥有专业设备的特效团队的光照采集差上不少,但是对于移动端AR来说已经不错了。
今天我们来具体看一看移动端的AR是如何恢复场景光照的。
概念介绍
大致介绍一些相关的基础理论
微表面理论:
一个物体表面越粗糙,反射光的朝向将更无序。表面越光滑,入射光基本沿着同一方向射出,形成更清晰的反射画面。
在自然环境下,没有任何物体的表面是完全光滑的,只有相对光滑和粗糙,故而引入一个“粗糙度”概念。
粗糙度由低至高。
能量守恒:
能量守恒是指一个对象的反射光不能比接受光更多。
根据粗糙度的不同,反射分为漫反射和镜面反射,漫反射越多,镜面反射越少,反之亦然。
albedo反照率:
反照率(albed) 通常是指物体反射太阳辐射与该物体表面接收太阳总辐射的两者比率或分数度量(有一部分光照能量会被物体吸收),也就是指反射辐射与入射总辐射的比值。
立体角:
想象自己作为一个观察者站在单位球的中心看向正方形方向,你的视线画出的实线的尺寸就是立体角。
BRDF:BRDF(Bidirectional Reflectance Distribution Function,即双向反射分布函数)。可以说今天的主角就是它了。
它描述了入射光线经过某个表面反射后如何在各个出射方向上分布——这可以是从理想镜面反射到漫反射、各向同性(isotropic)或者各向异性(anisotropic)的各种反射。
光照分析:
摄像机拍到图像,对环境光稀疏锋利边缘
然后对于微表面进行BRDF光照分析
通过对环境中的光源和BRDF反射模型进行反复迭代计算,完成光估测。
技术的细节方面:
假如我们有一组动态拍摄的玩具鸭子图像,对于图像表面的每一个像素点,逐帧BRDF分析,并得到立体角
将立体角和环境光照结合起来,进行高光分布和反照率分析。
环境光方面
稀疏环境光边缘
固定BRDF,分析环境光。
效果:
ARkit中的光照渲染
ARKit 中,光源向量与表面法线的夹角越小,该表面越亮,夹角越大,表面越暗。渲染引擎就是这么计算表面的亮度的。
结语
不知何时起“手机硬件性能过剩”被越来越多人挂在嘴边。
Naive!就拿这个来回迭代的计算来说,计算量也是很大的。更不用说基于深度学习的光照场景的恢复算法了。
移动AR的光照问题要做好,仅仅基于RGB相机还是不太够的,未来还是得让专业的传感器来实现。
推荐阅读