话说到这,感觉是时候向大家展示一些在 UE4 中设置色键材质的例子了虽然大多数 AR 演示都是将数字对象合成到实时合成视频中,但是有些项目需要混合现实包括将实景对象投影到数字场景中。这通常涉及某种绿幕设置这种设置可能更具挑战性,因为你没有内置的阿尔法
从绿幕中提取阿尔法的过程,我们称之为“色键抠像”我们最近添加了一个名为 Composure 的 UE4 插件,它可以简化后处理和渲染元素的混合与匹配是一个尝试使用实时合成色键材质的好地方。
在开始之前我想先说明,要获得高质量的色键抠像结果不容易而且通常需要结合使鼡不同的技术。许多软件包提供了相当先进的色键抠像方法例如 Nuke。为了获得非常高质量的色键阿尔法Nuke 会采用很多需要密集运算的做法。某些项目如现场直播,则倾向于使用昂贵的专用硬件解决方案
所以必须承认,相较之下我们的实时合成版色键抠像功能是相当基础嘚而且很可能需要根据内容做大量的调整,以使其看起来可以接受但是,能够在编辑器中随时使用我们的色键做 previs 和测试也是非常有鼡的。
色键抠像背后的原理是通过创建对比色蒙版来生成阿尔法蒙版然后,使用另一个蒙版进行“去除溢色”即消除对象上的绿色阴影。去除溢色蒙版通常只是阿尔法蒙版结果的柔化、反向版本最后,可以使用去除溢色蒙版的某个版本来补回一些虚拟的环境照明用┅种与待合成环境相匹配的颜色来替代绿色阴影。
上述几个步骤相对简单实现方法不胜枚举。我做的第一个版本是非常基础的并且内置到 UE4 中有一段时间了。如上所述这就是 Chroma Key Alpha 的工作原理,下图是其用法的基本示例:
它需要的输入包括图像颜色、色键颜色以及一些阿尔法囷去除溢色蒙版输入在接下来的示例中,我不会局限于使用这个节点的示例而是展示如何执行该功能的各个步骤,以及一些优于初始設置的版本
生成比色的第一步是消除图像中的亮度,以免绿幕上的细微阴影、摺痕或照明光线产生干扰在这个功能的第一个版本中,峩只是简单地将颜色规范化这种做法效果相当好,只是会产生一些边缘伪影
另一种消除亮度的方法是除以分量和。采用这种方法可以獲得不错的均匀色调但往往会产生浮边光晕伪影。我意识到在 Photoshop 中使用颜色图层时没有这样的边缘伪影所以我决定想办法消除它们。
***是使用基于亮度的饱和度这可以防止深色的饱和像素在颜色贴图中变得饱和。事实证明深色的饱和边缘像素是两次立方纹理调整的結果。
该测试图像来自电视节目《Lost in Time》它使用 UE4 渲染场景。注意该测试图像不是高质量的源素材;它采用了低质量的 jpeg 有损压缩格式。
Python3.2.3官方文档(中文版) 由笔者自己翻译有不当之处希望在博客上相互交流