遮挡的实现

我们推荐在场景中使用遮罩功能,以提供更为逼真的AR效果。

静态遮罩生成

遮罩材质

静态遮罩原理是提前制作好产生遮罩作用的3D模型,并赋予透明遮挡材质,以此实现遮挡功能。

新建一个材质球,将材质球Shader设置为VR/SpatialMapping/Occlusion (unity自带)

../../_images/31.png

将该材质球赋予制作好的遮罩3D模型上,基本的遮罩功能就实现了。

稠密模型生成遮罩

可以使用已生成的稠密场景模型作为遮罩

首先选中EasyAR.SpatialMap.Annotation

点击导出,等待导出结束

稠密场景模型体积较大,请耐心等待

../../_images/25.png

将导出的OBJ模型文件放入Blender内进行自动减面,建议面数控制在10w~30w之间。

减面完成后再将减面后的模型拖回场景内,调整旋转角度,使其和稠密模型重合。

并赋予它遮罩材质(VR/SpatialMapping/Occlusion)

最后打包输出,就能实现全局场景的遮罩

手动生成遮罩

结合地图3D稠密模型,手动制作低模遮罩,将场景内的会发生穿插和透视的物体包裹住

举例:为1个大楼制作遮罩,可手动拖动缩放1个BOX模型包裹住该大楼

实时遮挡

实时遮挡部分能力我们建议使用AR Foundation提供的实时遮挡能力

请在Unity里下载5.1及以上版本的AR Foundation进行使用。

该功能会消耗部分手机性能,请酌情使用。

实时遮挡使用有距离限制,可以同时使用实时遮挡和静态遮挡。

使用说明

AR Foundation 遮挡说明文档

https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@5.1/manual/features/occlusion.html

使用须知

AR Foundation在使用默认遮挡功能时会出现仅能显示8米内物体的现象。

官方给出了解决方案,请进入下方链接,阅读Custom Shaders and Materials with Occlusion部分

https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@5.1/manual/version-history/migration-guide-5-x.html

实时人物遮挡

该功能仅支持苹果设备,安卓设备不支持。

详细说明请查看AR Foundation官方文档。

实时遮挡简易说明

在Main Camera控件中的添加AR Occlusion Manager脚本,可调整实时生成遮罩效果

物体遮罩分辨率(精度)

平滑遮罩

人体检测遮罩效果设置

遮罩效果偏好(物体or 人体)

../../_images/113.png