1. 程式人生 > >UE4實現綠(藍)屏實時摳像

UE4實現綠(藍)屏實時摳像

SteamVR的官方宣傳片向我們展示了VRNB,但是不知道大家有沒有注意到其中的一項很關鍵的技術:實時綠屏摳像合成。這項技術在電影電視行業應用非常廣泛,也是從最近才開始應用到實時渲染和引擎中。效果請參考連結中的視訊(需自備梯子,如不能翻牆請檢視下面的效果對比圖【上側為阿凡達中的一個片段,下側為一則電視廣告】)。



效果為玩家置身於綠色背景內,攝像機實時採集玩家並對其進行摳像操作,之後與玩家看到的VR內容進行實時合成,最終輸出到旁邊的顯示器上。

那麼問題來了,如何在UE4中實現?

摳像最核心的部分是將綠色摳除,並生成合適的Alpha通道,綠色透明,其餘部分不透明。說起來很簡單,但其中設計很多理論,如顏色溢位,通道不乾淨,前景本身有與背景重合的顏色如何處理等等。但是這些明顯超出了本文討論的範疇。

UE4的新版本(忘記了具體從那個版本開始)在Material中內建了一個節點被稱為Chroma_Key_Alpha就是專門針對此種需求而生的。這裡給出官方論壇中對於該節點原理的解釋和分析。接下來,我們需要找一張綠屏影象做測試,直接開啟Google,搜尋GreenScreen Samples即可。下面這張是筆者找到的示例圖片


清晰度本身還是可以的,我們將這張圖片匯入到UE4中並按照下圖效果建立材質:


將材質球賦予給物體即可得到摳像之後的效果。

擴充套件

我們既然可以對一張靜態圖片進行摳像,那麼能不能對一段綠(藍)屏視訊進行摳像呢?當然可以。關於UE4中如何匯入和播放視訊,請參考筆者之前寫過的一篇部落格

《如何在UI上播放視訊》。裡面用到了4.13中新增加的MediaFramework。材質效果如圖:


視訊最終的播放效果如下圖所示:



結合上述效果,我們可以實時採集相機中的綠屏影象進行摳像,然後與VR中的內容進行合成,就能夠實現部落格開始處SteamVR宣傳片中的效果。

相關推薦

UE4實現實時

SteamVR的官方宣傳片向我們展示了VR的NB,但是不知道大家有沒有注意到其中的一項很關鍵的技術:實時綠屏摳像合成。這項技術在電影電視行業應用非常廣泛,也是從最近才開始應用到實時渲染和引擎中。效果請參考連結中的視訊(需自備梯子,如不能翻牆請檢視下面的效果對比圖【上側為阿凡

用js實現圖片小球幕上上下左右移動

tin doctype ctx eight doc itl 左右 idt ext <html> <head> <title>Document</title> </head> <body style

ThreadPoolExecutor的應用和實現分析—— 任務處理相關源碼分析

stateless 自身 tran als row exce 繼承 break attribute 轉自:http://www.tuicool.com/articles/rmqYjq 前面一篇文章從Executors中的工廠方法入手,已經對ThreadPoolExecuto

String 經常用法最優算法實現總結

lean ... itl min empty turn system then 實現 1. String getOrderedString(boolean isDuplicated, String … str) 說明: Orders all characters in

Zookeeper之Zookeeper底層客戶端架構實現原理轉載

一次 描述 綁定 機制 一個 ini fin 源碼 receive Zookeeper的Client直接與用戶打交道,是我們使用Zookeeper的interface。了解ZK Client的結構和工作原理有利於我們合理的使用ZK,並能在使用中更早的發現問題。本文將在研究源

Delphi中MD5實現方法

file 單元 ava sender shm md5 文章 files admin 原來寫過一個計算MD5的程序,是用了一個叫MD5.pas的單元,使用起來還算簡單,但還有更簡單的辦法,安裝了indy就會有IdHashMessageDigest單元(delphi 7默認安裝

Spring技術內幕:Spring AOP的實現原理

dede ide configure ida mini == src min dem 生成SingleTon代理對象在getSingleTonInstance方法中完畢,這種方法時ProxyFactoryBean生成AopProxy對象的入口。代理對象會

Java的LockSupport.park()實現分析轉載

兩個 這也 his access 需要 tracking orm return 指令 LockSupport類是Java6(JSR166-JUC)引入的一個類,提供了基本的線程同步原語。LockSupport實際上是調用了Unsafe類裏的函數,歸結到Unsafe裏,只有

Nginx反向代理實現會話session保持的兩種方式

upstream 適用於 反向代理 ip_hash 負載 amp 丟失 tail 基於 http://blog.csdn.net/gaoqiao1988/article/details/53390352 一、ip_hash: ip_hash使用源地址哈希算法,將同一客戶

頁面加載動畫實現方法

sed javascrip orm load city eee display script bic html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.

單點登錄SSO的實現原理

客戶 解決方案 bus 應用集成 eight 冗余 請求 效率 att 單點登錄SSO(Single Sign On)說得簡單點就是在一個多系統共存的環境下,用戶在一處登錄後,就不用在其他系統中登錄,也就是用戶的一次登錄能得到其他所有系統的信任。單點登錄在大型網站裏使用得非

MSSQL/WMI/PowerShell結合篇SQL Server鏡狀態變化實時告警

mssql 鏡像 實時告警 本文介紹SQL Server鏡像狀態變化實時告警,利用WMI Monitor實時監控鏡像狀態,在狀態發生變化時捕獲相關信息,通過PowerShell發送微信信息,以達到實時告警的目的。1、創建WMI監控DATABASE_MIRRORING_STATE_CH

UEFI中EHCI驅動的實現框架

urb link cnblogs 異步傳輸 tro insert 傳輸 frame struct 本文從數據結構的角度看一下EHCI的初始化: 下圖是EHCI驅動中涉及的主要數據結構的關系圖: 1.Struct USB2_HC_DEV是Host controller的核心

關於redis分布式鎖的實現方式轉載

iss tree red org 實現 方式 分布式 uda master 這個是在網上找到的一個大神寫的(http://wudashan.cn/2017/10/23/Redis-Distributed-Lock-Implement/),對於分布式redis部署的,可以參考

Java總結——常見Java集合實現細節1

except empty 找到 dex index shc reat int .net Java提高——常見Java集合實現細節(1) 2018年04月18日 15:07:35 閱讀數:25

純CSS3實現蠟燭冒煙效果

ini solid init char 一點 () div tlist 點擊 1. 閑來無事時在網上看一些前輩的博客文章,自己嘗試了一下。學習到最重要的一點就是box-shadow的疊加使用,受益非線。先上一下效果圖: 其中有以下重要的幾點: 1. 蠟燭底座的bor

Java樂觀鎖的實現原理案例

extends 默認 tomat 讀取數據 pac creat fifo for ava 簡要說明: 表設計時,需要往表裏加一個version字段。每次查詢時,查出帶有version的數據記錄,更新數據時,判斷數據庫裏對應id的記錄的version是否和查出的version

斜率優化實現初步1 [BZOJ][1010][HNOI2008]玩具裝箱toy

name spa \n get pre 斜率 pri ace mes #include<bits/stdc++.h> using namespace std; #define int long long const int MAXN=5e4+233

斜率優化實現初步7 [BZOJ][4518][Sdoi2016]征途

sdi 斜率優化 ons style efi its space pre print #include<bits/stdc++.h> using namespace std; //#define int long long const int

快速排序的兩種實現方法js

while 交換 splice rt+ dex 進行 return ont mat 快速排序的基本思想:通過一趟排序,將待排記錄分割成獨立的兩部分,其中一部分記錄的關鍵字均比另外一部分記錄的關鍵字小,則可分別對著兩部分記錄繼續進行排序,以達到整個序列有序的目的。------