互动拍照 — AR拍照

广义的说,所有在实景画面上叠加了虚拟元素都属于增强现实拍照,比如叠加相框的前景拍照,或者抠像前后景叠加。

但是我们一般提到AR拍照,都是需要基于人体或者人脸的位置信息进行元素叠加,且这些元素需要跟着目标位置移动,甚至是旋转。比如在用户头顶虚拟出帽子,人脸上虚拟出胡子,人手上出现气球。

硬件

可以使用网络摄像头,基于OpenCV去框定人脸、五官、手去做AR的功能。也可以使用体感设备,比如Kinect去做位置的跟踪。由于早期Kinect在这方面接入比较方便,在使用Unity的情况下,Kinect比OpenCV要更加精准和稳定,所以一直以来,使用体感设备会比较多。

其他硬件需要准备的就是主机和显示设备,比如电视或者LED拼接屏。

软硬件的准备工作参考:Unity体感应用开发——Kinect V2 获取彩色摄像头数据

软件

在准备好硬件,sdk和开发环境Unity,并导入了插件之后:

1 非脸部骨骼点跟踪

关注OverlayDemo的JointOverlayer脚本:

互动拍照 — AR拍照_第1张图片

Foreground Camera:根据这个摄像机去判断基准方向,并将骨骼点的在彩色坐标系中的数据换算为Unity世界坐标数据。

playerIndex:跟踪哪一个玩家的骨骼点。

trackedJoint:就是需要OverlayObject去跟踪的骨骼类型。

OverlayObject:你需要AR的虚拟物体。

Smooth Factor:为了防止侦测信息的抖动,用了一个Lerp去渐变位置和旋转。

Tips:

1 帽子:帽子的位置严格来说不是Head的位置,而应该是Head的Pos+(Head的Vector3 - Neck的Vector3)

2 其他位置:骨骼点在实际彩色画面中的体现,不是人体的边缘。所以UI素材在处理上要有一定的空间留出来。

2 脸部骨骼点跟踪

关注KinectFaceTrackingDemo5的FacePointOverlayer脚本

互动拍照 — AR拍照_第2张图片

配置参数与上述相似,包含35个面部关键点。

效果

互动拍照 — AR拍照_第3张图片

你可能感兴趣的:(互动多媒体)