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