周夢園(四川大學計算機學院,成都 610065)
基于Unity3D的球幕實時交互顯示系統(tǒng)
周夢園
(四川大學計算機學院,成都610065)
近年來,隨著計算機多媒體技術(shù)和虛擬現(xiàn)實技術(shù)的快速發(fā)展,沉浸式的實時交互技術(shù)應用也越來越廣泛。設(shè)計一種基于PC集群和投影設(shè)備組合而成的球幕系統(tǒng),實現(xiàn)高速圖像拼接融合的實時全景交互。該系統(tǒng)利用Unity3D引擎,結(jié)合多投影的多屏圖像融合技術(shù),利用網(wǎng)絡(luò)通信同步虛擬的運動對象,實現(xiàn)基于球幕的沉浸式全景體驗交互。
球幕;虛擬現(xiàn)實;全景體驗;實時交互
近年來,隨著Facebook的Oculus Rift、三星Gear VR、索尼PS VR等虛擬現(xiàn)實可穿戴設(shè)備頭盔的不斷出現(xiàn),虛擬現(xiàn)實技術(shù)得到了極大的發(fā)展。同時虛擬現(xiàn)實的應用領(lǐng)域也得到了不斷的擴大,沉浸式游戲娛樂,全景式網(wǎng)絡(luò)直播,虛擬現(xiàn)實購物,虛擬現(xiàn)實旅游等新式應用應運而生。不同于可穿戴頭盔式虛擬現(xiàn)實設(shè)備的暈眩感和長時間使用對眼睛的傷害,以計算機集群為驅(qū)動的球幕多通道顯示技術(shù)在不用穿戴頭盔的情況下,以高分辨率、高亮度、大視野的特征提升人們的沉浸感,廣泛應用在了教育領(lǐng)域,科技館展示中。
當前以球幕為基礎(chǔ)的虛擬現(xiàn)實應用主要應用在了全景視頻的播放中,只是在視覺上提升了人的沉浸感,而加入人機交互系統(tǒng),可以讓人們與虛擬場景互動,加深人們身臨其境的感覺。本文利用Unity3D的實時渲染,結(jié)合球幕多投影的多屏圖像融合技術(shù),利用網(wǎng)絡(luò)通信同步虛擬場景的對象,實現(xiàn)了基于球幕的沉浸式全景體驗交互。
球幕系統(tǒng)是利用局域網(wǎng)將普通計算機和投影設(shè)備組成集群實現(xiàn)多通道的投影系統(tǒng),其中每一臺分控主機為一個通道,每個分控機上連接一臺投影儀用于輸出顯示該通道的畫面。整個系統(tǒng)基于C/S架構(gòu),通過主控機進行控制。每個投影儀展示每個通道的畫面,將畫面投影到球幕的曲面屏幕上。多個投影通道覆蓋整個球面,利用圖像拼接和融合技術(shù),讓球幕展示全景圖。球幕通過提高分辨率和擴大視野角度的方法,讓使用者產(chǎn)生身臨其境的感覺。
圖1 全景體驗球幕架構(gòu)
利用Unity3D引擎模擬球幕的顯示方式主要有以下幾個步驟:得到系統(tǒng)內(nèi)像素的映射關(guān)系;根據(jù)各個通道設(shè)置Unity3D中虛擬攝像機朝向,使其與顯示投影儀朝向?qū)?,一個通道一個攝像機,利用多通道中多個攝像機擴大視野角度;幾何校正圖像拼接;圖像邊緣融合;最后通過網(wǎng)絡(luò)同步的方式同步多通道的虛擬場景,實現(xiàn)實時交互顯示。
2.1像素間映射關(guān)系
整個系統(tǒng)借助相機作為中間監(jiān)視工具,得到投影儀、球幕、相機間的像素間的映射關(guān)系。設(shè)相機像素坐標為:(cx,cy)T,投影儀幀像素坐標為:(bx,by)T,屏幕上像素坐標為:(px,py,pz)T。那么存在映射關(guān)系如:相機與屏幕非線性的映射關(guān)系f1∶R3→R2,即 (cx,cy)T=f1(px,py,pz);投影儀幀與屏幕非線性的映射關(guān)系f2∶R2→R3,即f2(bx,by)=(px,py,pz)T。借助投影特征圖形如同棋盤格圖和線條圖的特征點,找到各個像素映射關(guān)系,最后得到球幕系統(tǒng)中投影儀的各個方位信息,圖像從投影儀到曲面屏幕上的幾何校正數(shù)據(jù)以及邊緣融合信息等。
圖2 相機、投影屏幕和投影儀映射關(guān)系圖
2.2攝像機朝向
在虛擬場景中攝像機的作用主要有兩個:一個是由世界坐標變換到攝像機坐標的觀察坐標變換,即設(shè)置攝像機的位置和朝向。在Unity3D中,利用myCamera.transform.LookAt(eye,up);設(shè)置朝向即可。
圖3 透視投影變換
其二是設(shè)置透視投影變換,在Unity3D中提供的是基于對稱視錐體的變化函數(shù),但是由于球幕系統(tǒng)其復雜異形的屏幕特征,存在較為嚴重的非線性變形,我們利用更為一般的透視投影變換矩陣∶
參數(shù)為:
Near∶投影平面的近截面值;Far:投影平面的遠截面;(Z值范圍);
right∶投影平面的右邊界值;left∶投影平面的左邊界值;(X值范圍);
top∶投影平面的上邊界值;bottom∶投影平面的下邊界值;(Y值范圍);
Unity設(shè)定:myCamera.projectionMatrix=proMat。
2.3幾何校正
由于從投影儀的平面數(shù)據(jù)投射到曲面屏上會出現(xiàn)圖像的非線性變形,從而導致人眼觀測時的圖像扭曲,此時圖像需要進行幾何校正。圖像的變形,我們采用紋理映射UV變換的方式。紋理映射技術(shù)相當于把圖片通過紋理坐標貼在物體表面以增加物體細節(jié)。在球幕的測試階段,我們可以得到投影儀幀中每個像素點與投影平面上每個像素點的映射關(guān)系,我們把這種映射關(guān)系當做UV對應關(guān)系。投影儀平面像素為1920× 1080,我們可以建立一個1920×1080矩形面片平鋪在屏幕上。我們獲取當前屏幕的渲染圖像,經(jīng)過UV映射到矩形面片上,這時圖像就經(jīng)過了幾何校正。處于對實時性的考慮,我們并不需要每一幀都繪制1920×1080的面片進行UV變形,實際使用中我們使用360×108的面片通過UV映射即可達到很好的效果。
在整個幾何校正和圖像融合階段,我們利用DirectX11和C++編寫變換程序生成動態(tài)鏈接庫DLL供Unity3D腳本調(diào)用,我們利用Unity3D實時渲染虛擬場景,然后把當前渲染屏幕的圖像生成一張紋理傳遞給DLL程序?qū)崿F(xiàn)幾何校正和融合的過程。
DLL實現(xiàn)接口:
private static extern void SetTextureFromUnity(System.IntP-tr texture);
Unity3d中傳遞實時渲染圖像:public Texture2D tex;
tex.filterMode=FilterMode.Point;
tex.ReadPixels(new Rect(0,0,Screen.width,Screen. height),0,0,false);
tex.Apply();
SetTextureFromUnity(tex.GetNativeTexturePtr())。;
2.4圖像融合
通過幾何校正的階段后的圖像拼接,整個球幕已展示了一個全景虛擬空間,但是各個通道的亮度略有不同,特別是兩個通道重合疊加的部分亮度明顯,我們需要進行圖像融合,把通道重疊的部分進行均勻過度,單個通道重疊部分亮度減弱,重疊起來之后亮度統(tǒng)一。我們對每個像素進行一下操作:
(1)itfTexture是一張[0,1024]的1D紋理,先把當前顏色進行紋理映射,因為顏色值一般為[0,255],提升顏色精度,增加圖像融合細節(jié)。
(2)對每個像素顏色乘以一個0~1的值,作用于亮度調(diào)節(jié)。
(3)itfInvTexture是itfTexture的逆變化,把以矯正過的顏色值重新變回系統(tǒng)的顏色值。
以下為幾何校正和圖像融合在片段著色器的實現(xiàn)代碼,其中frag.tex0為UV映射數(shù)據(jù),frag.tex1為圖像融合數(shù)據(jù):
2.5網(wǎng)絡(luò)同步
根據(jù)全景體驗球幕的系統(tǒng)結(jié)構(gòu),我們使用Unity3D開發(fā)的實時交互系統(tǒng)采用了C/S(Client/Server,客戶端/服務器)的體系結(jié)構(gòu)。三維圖像的實時渲染工作本身會占用大量的系統(tǒng)資源,為了保證系統(tǒng)的實時響應和渲染效率,我們在分控上主要進行渲染工作和顯示,而在主控上設(shè)置一個服務器端程序。服務器程序用于整個實時系統(tǒng)的控制和交互,同時我們把比較復雜的實時計算和仿真也放在服務器上計算出結(jié)果。服務器保證整個虛擬場景中各對象的狀態(tài)信息,當用戶交互改變對象狀態(tài)時,利用網(wǎng)絡(luò)包通過局域網(wǎng)把狀態(tài)信息和計算后得到的復雜數(shù)據(jù)廣播到各個分控端,保證每個分控的虛擬場景為一個相同的虛擬場景,使整個系統(tǒng)同步顯示和交互。
3.1初始狀態(tài)
單通道為正對前方場景,而多通道下每個畫面都是相同的單通道畫面。
圖4 初始狀態(tài)的渲染場景
3.2攝像機偏轉(zhuǎn)
每個單通道虛擬攝像機旋轉(zhuǎn)不同角度,多通道下每個畫面不同,展示了虛擬場景的大致方位,圖像并沒有拼接起來。
圖5 攝像機偏轉(zhuǎn)后的渲染場景
3.3幾何校正
單通道UV紋理變換,圖像變形。多通道下圖像拼接起來,但是各個通道因為邊緣亮度不統(tǒng)一并沒有融合到一起,可以清晰的看到每個投影的投影區(qū)域范圍。
圖6 幾何校正后的渲染場景
3.4圖像融合
單通道表現(xiàn)為圖像邊緣亮度變暗,多投影重疊部分亮度減弱。多通道表現(xiàn)為完成圖像拼接和融合后最后的顯示結(jié)果。
圖7 圖像融合后的渲染場景
本文利用Unity3D的實時渲染交互能力,結(jié)合基于計算機和投影設(shè)備的全景體驗球幕系統(tǒng),在Unity3D引擎的基礎(chǔ)上利用球幕的快速校正和拼接融合算法,設(shè)計了一種高分辨率,提高觀看視場角度,增加用戶沉浸感,讓用戶可以與虛擬世界進行實時交互功能的虛擬現(xiàn)實系統(tǒng)。隨著虛擬現(xiàn)實體感交互技術(shù)的不斷進步,Unity3D可以較為方便的加入諸如Kinect、Leap Motion等體感設(shè)備的交互支持,讓用戶可以有更全面的感官體驗。
[1]宣雨松,王軍花.Unity3D游戲開發(fā)[M].北京∶人民郵電出版社,2012.
[2]趙沁平.虛擬現(xiàn)實綜述[J].中國科學(F輯∶信息科學),2009,3901∶2-46.
[3]馮建平,吳麗華.基于全景圖像的三維全景漫游系統(tǒng)的構(gòu)建[J].計算機與數(shù)字工程,2013,41(27901)∶115-117.
[4]范丹陽.基于PC集群的多通道視景仿真系統(tǒng)研究[D].西安建筑科技大學,2014.
[5]梁思毓.面向球幕的編輯式多投影校正技術(shù)與系統(tǒng)[D].復旦大學,2012.
[6]Fletcher Dunn,Ian Parberry.3D數(shù)學基礎(chǔ):圖形與游戲開發(fā)[M].史銀雪,陳洪,王榮靜譯.北京∶清華大學出版社,2005.
Dome-Screen;Virtual Reality;Panoramic Experience;Real-Time Active
Dome-Screen Real-Time Interactive Display System Based on Unity3D
ZHOU Meng-yuan
(College of Computer Science,Sichuan University,Chengdu 610065)
In recent years,with the rapid development of computer multimedia technology and virtual reality,the immersive real time interactive techniques'applications are increasingly used.Designs a dome-screen system based on PC clusters and projection equipment to achieve real-time panoramic interaction and rapid image mosaic and fusion.In order to achieve real-time panoramic interactive experience,the system uses Unity3D engine and combines the technology of multi-screen image fusion based on dome-screen with multiply projection equipment and synchronizes virtual motive objects using network communication.
1007-1423(2016)20-0069-05
10.3969/j.issn.1007-1423.2016.0.014
周夢園(1991),男,重慶北碚人,碩士研究生,研究方向為圖形圖像技術(shù)
2016-05-04
2016-07-12