增强现实——用虚拟光照亮真实世界的物体

Augmented Reality – Lighting Real-World objects with Virtual light

是否可以将虚拟 lamp 物体导入 AR 场景,投射光锥,照亮房间周围 space 和其中的真实物体,例如table、地板、墙壁?

对于 ARKit,我发现了这个 SO post

对于ARCore,有一个例子relighting technique. And this source code

我也被建议可以使用post-处理来提亮整个场景。

但是,这些例子是很久以前的事了,也许有更新的或更直接的解决方案来解决这个问题?

在底层,RealityKit 只负责渲染虚拟对象并将它们覆盖在相机框架的顶部。 如果要照亮真实场景,需要post-处理相机帧。

这里有一些关于如何进行 post 处理的教程: Tutorial1⃣️ Tutorial2⃣️


如果您只需要像 This 这样的效果,那么您需要做的就是为虚拟对象(灯光)添加基于 CGImage 的 post 处理效果。

更具体地说,为渲染图像添加布隆过滤器(您也可以使用高斯模糊模拟布隆过滤器)。

这样一来,代码都是围绕着UIImage和CGImage,非常简单

如果想要更逼真,可以考虑使用激光雷达提供的深度图来计算哪些区域可以被照亮以获得更详细的亮度。


或者如果你是一个真正的探险家,你可以使用 Metal 实时创建一个真实世界的数字孪生点云来模拟光的遮挡。

在 2021 年,基于 3D 合成原理的重新照明技术没有什么新鲜事。目前,当您使用 RealityKit 或 SceneKit 时,您必须借助两个额外的渲染过程亲自实现重新照明功能(始终需要 RGB pass)- Normals pass 和 PointPosition pass。两个 AOV 都必须是 32 位。

然而,在不久的将来,当 Apple 工程师最终在场景重建中实现纹理捕获时——任何没有经验的 AR 开发人员都可以应用重新照明程序。


观看此 Vimeo Video 了解如何在 The Foundry NUKE 中实现重新照明。


这里的一个关键点是,在实现重新照明效果时,存在 LiDAR 扫描仪(如果您使用的是 ARCore,则为 iToF 传感器)。也就是说,今天iOS的补光方案是Metal + RealityKit。