ARKit之路-LiDAR传感器(二)

版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载。

(二)、虚拟物体放置

   相对使用视觉SLAM技术恢复场景,LiDAR检测物理环境非常快速和准确,包括平面检测,对弱纹理表面也同样高效,并且不需要使用者移动设备进行环境扫描,因此,AR虚拟物体放置会非常迅速,这对自动放置虚拟物体非常有用,如使用AR Quick Look进行webAR物体展示时,可以大大提高用户的使用体验。在ARKit中,加入LiDAR传感器后,所有这些变化或者提升都自动完成(ARKit透明化了相关底层硬件的处理),完全不需要开发人员介入,无需变更任何代码。

   在进行场景重建后,可以使用射线检测功能将虚拟元素放置到场景中物体表面任何位置。射线可以与场景几何网格进行交互,因此,利用场景几何网格可以精确的将虚拟物体放置到物体表面,而不再局限于水平平面、垂直平面,也不再局限于富纹理表面。

   使用射线与场景几何网格进行碰撞检测与使用射线与平面进行碰撞检测完全一致,典型射线检测代码如下代码所示。

    @objc func handleTap(_ sender: UITapGestureRecognizer? = nil) {
     guard let touchInView = sender?.location(in: self) else {
          return
    }
    //方法一
     guard let raycastQuery = self.makeRaycastQuery(from: touchInView, allowing: .estimatedPlane,alignment: .any) else {
          return
     }
     guard let result = self.session.raycast(raycastQuery).first else {
          return
     }
       
      //方法二
     guard let result = self.raycast(from: touchInView, allowing: .estimatedPlane, alignment: .any).first  else{
         return
      }

    ......
}

   在上述代码中,利用射线与场景几何网格进行碰撞检测时需要设置allowinig参数为ARRaycastQuery.Target.estimatedPlane,alignment参数为ARRaycastQuery.TargetAlignment.any。在检测到碰撞点之后就可以利用碰撞点姿态信息放置虚拟元素。

(三)、动捕与人形遮挡

   由于LiDAR精确的深度检测能力,ARKit对图像中人形捕获的尺寸估计更加准确,利用该尺寸进行的虚拟模型缩放更加贴合实际,同时对人形遮挡也更加准确,虚拟物体与真实人体之间的遮挡更具真实感。在进行场景重建时,如果启用了人形遮挡,ARKit也会自动将场景中的人体从场景重建中剔除(重建的网格不会覆盖到人体上),重建出的场景更正确。
   在引入LiDAR后,动捕与人形遮挡精度的提升完全被ARKit透明化处理,开发者无需修改任何代码。

(四)、场景仿真

   ARKit利用LiDAR生成精确的场景几何网格后,利用这些网格,就可以实现虚实遮挡、碰撞、物理模拟,甚至可以利用虚拟光源照明真实物体表面。以物理模拟为例,典型的示例代码如下代码所示,在场景几何网格帮助下,虚拟物体就可以与真实环境进行逼真的物理模拟,如虚拟球体从真实地板上弹起、虚拟物体无法穿过真实墙体等等。

let model: ModelEntity = ...
if model.collision == nil {
    model.generateCollisionShapes(recursive: true)
    model.physicsBody = .init()
}
arView.environment.sceneUnderstanding.options.insert(.physics)

   通过上述代码可以看到,开启场景几何网格与虚拟物体的物理模拟,我们只需要简单的将physics插入到sceneUnderstanding的options中即可,ARKit会接管所有后续工作,开启碰撞、遮挡与虚拟照明方法与此完全类似。 目前可用的SceneUnderstanding.Options选项如下表所示。

选项描述
default默认设置
collision开启场景几何网格与虚拟物体的碰撞
occlusion开启场景几何网格与虚拟物体的遮挡
physics开启场景几何网格与虚拟物体的物理仿真
receivesLighting开启利用虚拟光源照明真实物体表面

   利用场景几何网格实现的遮挡可以实现真实物体遮挡虚拟物体的功能(如真实的沙发遮挡虚拟的机器人),进一步增强AR的真实感;虚拟光源也可以照明真实物体表面,如放置在桌面的虚拟台灯可以照亮真实的桌面,虚实融合更无痕,沉浸感更强。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_DavidWang_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值