用UE4绿幕抠像合成HTC VIVE的MR视角

用UE4绿幕抠像合成HTC VIVE的MR视角


用UE4绿幕抠像合成HTC VIVE的MR视角

用UE4绿幕抠像合成HTC VIVE的MR视角

Unity3D实现教程在这里


一、MR视频原理

一般录制的VR视频 ,都是是玩家第一人称视角,将头显中左眼看到的影像录制下来。

合成第三视角的视频需要

1.切换成第三人称视角

普通的Vive程序是在玩家头盔的位置摆放两个虚拟camera对应左右眼,分别生成左右眼的画面传给HMD,然后将其中一只眼的画面复制到PC屏幕上。为了让屏幕上产生第三人称视角的游戏画面,就需要在和玩家一定距离外摆放一个额外的虚拟camera,并且镜头要对准玩家所在位置。之后PC上显示的不再是左右眼画面的复刻,而是由这个额外的camera单独绘制的(会增加一定的渲染负担)。

2.将体验者的影像录制下来

因为我们只需要玩家本人的影像,并不需要看到房间里的桌子、墙壁等背景。所以要用到抠
像技术。在录制的时候,让体验者在一个周围是绿布(或者其他颜色)的房间里,然后用一个摄像机(webcamera或者专业的摄像机)录制他玩游戏时的影像。最后在捕捉到的视频中将绿色去掉,就只剩下人的影像了。

3.将游戏画面和摄像机影像合成

在1.和2.中我分别提到了一个虚拟摄像机和一个真实的摄像机。为了让他们拍到的影像能合
成起来,需要保证他们的视角是一样的。也就是说,假如虚拟摄像机在游戏里的位置是主角左前方2米、朝向和主角的朝向成120度角,那么要保正现实中摄像机在体验者左前方2米,朝向和体验者朝向成120度角。这就需要借助第三个手柄来定位和定向。

将额外的手柄绑在摄像机上,或者将手柄和摄像机绑在同一个位置上,原则是确保它们相对
位置、相对朝向是不变的。这样当现实中摄像机移动时,游戏通过感知手柄的位置变化,也相应地改变虚拟摄像机的位置。然后,把游戏中的物体按位置分为两类,一类是前景,位置在摄像机到玩家之间,另一类是背景,位置在玩家之后。最后把背景、体验者影像、前景合成成视频。

二、准备

1.HTC VIVE 额外手柄或追踪器 (第三视角定位用,本人手上正好有 vive tracker)
2.主机 (配置要高)
3.摄像机+采集卡 (丐版 普通摄像头 本人用kinect )

三、实际操作

先说抠像部分
1 采集卡方案 还要装一些驱动和插件(例如 blackmagic media player)
2 这里 我直接是调用 kinect摄像头
创建 一个mediaplayer 选择设备 记录url (方便运行时打开)

用UE4绿幕抠像合成HTC VIVE的MR视角

3关卡蓝图中添加打开调用
用UE4绿幕抠像合成HTC VIVE的MR视角

4新建材质 blendmode 选Translucent 开启透明 连接如下
用UE4绿幕抠像合成HTC VIVE的MR视角
5材质赋给相机画面 材质inst中 keycolor 改成你要扣掉的颜色
用UE4绿幕抠像合成HTC VIVE的MR视角
6 工程中导入VR模板 这里直接用demo里的VRPawn 添加一个 motioncontroller (作为第三视角位置追踪)

这里我用的是vive tracker tracker source 改成tracker_camera

还要在steamvr 中设置 坑死我了
用UE4绿幕抠像合成HTC VIVE的MR视角
用UE4绿幕抠像合成HTC VIVE的MR视角
用UE4绿幕抠像合成HTC VIVE的MR视角
用UE4绿幕抠像合成HTC VIVE的MR视角

用UE4绿幕抠像合成HTC VIVE的MR视角

最后 在场景中添加一个捕获相机 让其跟着定位器移动 ,画面渲染到UI上 并且让它跟随相机旋转
用UE4绿幕抠像合成HTC VIVE的MR视角

最后把画面输出到UI上

用UE4绿幕抠像合成HTC VIVE的MR视角

四、总结

本人Unity转UE4 对UE4的操作还不熟练 如有不对请指出
Unity的四分屏效果 在UE4中不知道咋弄 ,我就直接铺在UI上 灯光环境好一点的话抠像质量会好很多

上一篇:UE4材质基础和算法


下一篇:BZOJ4152 AMPPZ2014 The Captain(最短路)