UE4实现绿(蓝)屏实时抠像

SteamVR的官方宣传片向我们展示了VRNB,但是不知道大家有没有注意到其中的一项很关键的技术:实时绿屏抠像合成。这项技术在电影电视行业应用非常广泛,也是从最近才开始应用到实时渲染和引擎中。效果请参考链接中的视频(需自备梯子,如不能请查看下面的效果对比图【上侧为阿凡达中的一个片段,下侧为一则电视广告】)。

UE4实现绿(蓝)屏实时抠像_第1张图片

UE4实现绿(蓝)屏实时抠像_第2张图片


效果为玩家置身于绿色背景内,摄像机实时采集玩家并对其进行抠像操作,之后与玩家看到的VR内容进行实时合成,最终输出到旁边的显示器上。

那么问题来了,如何在UE4中实现?

抠像最核心的部分是将绿色抠除,并生成合适的Alpha通道,绿色透明,其余部分不透明。说起来很简单,但其中设计很多理论,如颜色溢出,通道不干净,前景本身有与背景重合的颜色如何处理等等。但是这些明显超出了本文讨论的范畴。

UE4的新版本(忘记了具体从那个版本开始)在Material中内置了一个节点被称为Chroma_Key_Alpha就是专门针对此种需求而生的。这里给出官方论坛中对于该节点原理的解释和分析。接下来,我们需要找一张绿屏图像做测试,直接打开Google,搜索GreenScreen Samples即可。下面这张是笔者找到的示例图片

UE4实现绿(蓝)屏实时抠像_第3张图片

清晰度本身还是可以的,我们将这张图片导入到UE4中并按照下图效果创建材质:

UE4实现绿(蓝)屏实时抠像_第4张图片

将材质球赋予给物体即可得到抠像之后的效果。

扩展

我们既然可以对一张静态图片进行抠像,那么能不能对一段绿(蓝)屏视频进行抠像呢?当然可以。关于UE4中如何导入和播放视频,请参考笔者之前写过的一篇博客《如何在UI上播放视频》。里面用到了4.13中新增加的MediaFramework。材质效果如图:

UE4实现绿(蓝)屏实时抠像_第5张图片

视频最终的播放效果如下图所示:

UE4实现绿(蓝)屏实时抠像_第6张图片

UE4实现绿(蓝)屏实时抠像_第7张图片

结合上述效果,我们可以实时采集相机中的绿屏图像进行抠像,然后与VR中的内容进行合成,就能够实现博客开始处SteamVR宣传片中的效果。


你可能感兴趣的:(UE4)