摘要:本文重點討論了平板幕和環形幕兩種多通道系統的拼接技術,給出了實現方法。選用TCP協議建立了分布式通信環境,在Master端和Slave端的通信過程中通過添加最大相關等待時間機制對多通道系統進行優化,實現了大屏幕的多通道立體顯示系統,給出了一個被動式多通道立體顯示系統的硬件解決方案。實驗結果表明,本系統在實時性、一致性以及顯示效果上都有良好的表現。
關鍵字:多通道;同步;顯示技術
視景系統是駕駛模擬器最重要的組成部分之一,視景系統設計的好壞是評判一個駕駛模擬器系統性能的重要指標之一。為了獲得更逼真,更加身臨其境的視覺效果,我們將立體顯示技術與多通道技術緊密的結合在一起,應用于駕駛模擬器的視景顯示系統中。立體顯示給了駕駛者真實的深度感,多通道大屏幕投影則從環境的真實大小尺寸上給了駕駛者更真實的現場感受。
1 多通道投影的組成與拼接
多通道三維投影顯示系統是一種具有高度沉浸感的視景仿真顯示系統,該系統以多通道視景同步技術、數字圖像邊緣融合、多通道亮度和色彩平衡技術為支撐,將三維圖形計算機生成的三維數字圖像實時地輸出并顯示在一個超大幅面的投影幕墻上,使觀看者和參與者獲得一種身臨其境的虛擬仿真視覺感受。一個典型的多通道投影系統主要由圖形渲染子系統、融合矯正子系統、投影顯示子系統、分布式網絡通信子系統等四個部分組成。
OSG中,我們研究的多通道拼接主要分為平板幕拼接和環形幕拼接二大類型。對于平板幕,其對應的投影視錐類型為非對稱視錐。對于環形幕,其對應的投影視錐類型為對稱視錐。OSG中的Producer::Camera類封裝了OpenGL的視點變換、投影變換等功能,通過對該類進行矩陣設置,我們可以得到想要的投影變換。根據兩種投影幕拼接的數學模型,在OSG實現多通道拼接的核心代碼如下:
//ar為投影面寬高比
double ar = m_pCamera->getLensAspectRatio();
//通過視錐水平張角m_DisFovX(由用戶給定)得到垂直張角
double vfov = RadiansToDegrees(
2.0 * atan( tan(osg::DegreesToRadians(m_DisFovX*0.5))/ar ) );
//設置視錐
m_pCamera ->setLensPerspective(m_DisFovX,vfov,1.0,1e6);
if (m_bSymmetric)
{
//對稱視錐(對應環形幕)
double hfov = m_pCamera ->getLensHorizontalFov();
double vfov = m_pCamera ->getLensVerticalFov();
//設置偏移矩陣,m_OverlapX、m_OverlapY為融合區大小
Matrix mat = Matrix::rotate(
osg::inDegrees(m_OffsetX*(1-m_OverlapX)*hfov),Y_AXIS) ;
mat *=Matrix::rotate(
osg::inDegrees(-m_OffsetY*(1-m_OverlapY)*vfov),X_AXIS);
//偏移視錐
m_pCamera ->setOffset(mat.ptr(),0.0,0.0);
}
else
{
//非對稱視錐(對應平板幕)
//設置偏移量
float xshear = -2.0*m_OffsetX*(1-m_OverlapX);
float yshear = -2.0*m_OffsetY*(1-m_OverlapY);
//偏移視錐
m_pCamera ->setOffset(osg::Matrix::identity().ptr(),xshear,yshear);
}
代碼中,m_OffsetX 、m_OffsetY分別為沿X、Y軸偏移量,其值由通道所在的位置計算得出。對于水平的三通道來說,不管是平板幕還是環形幕,視錐在Y軸方向的偏移量均為0,而對于一個3×3的九通道來說,其中的某些通道不僅存在X軸方向的偏移,還存在Y軸方向的偏移。
2 多通道的同步技術
視景同步技術是多通道投影系統的關鍵技術之一,關系到不同通道的同步顯示與多通道顯示的畫面質量。多通道的同步是本系統分布式通信模塊的工作之一,也屬于分布式系統仿真同步范疇[1]。實時性和一致性是衡量DVR系統好壞的重要標準,而因為DVR系統異構性的特點,二者在一定意義上存在著對立和矛盾,在二者之間尋求一個合適的折衷點亦是DVR系統目前研究的熱點問題之一。一般DVR系統常用的同步方法有:樂觀(Optimistic)算法[2]和保守(Conservative)算法[3]兩種。
2.1 通信協議選擇
對于本駕駛模擬器系統,有兩種網絡通信協議可供選擇:UDP(User Datagram Protocol)協議和TCP(Transmission Control Protocol)協議。UDP協議一般使用數據報式SOCKET,是一種是面向無連接的、不可靠的、無序的、無流量控制的傳輸層協議。TCP協議一般使用流式SOCKET,是一種面向連接的、可靠的、有序的、擁有流量控制的傳輸層協議。UDP協議的優勢在于速度快,占用系統資源少,能滿足DVR系統實時性的要求;其缺點在于不可靠性,有可能產生丟包現象,造成顯示畫面的不連續性。TCP協議優勢在于可靠,保障了數據傳輸的準確性,能滿足DVR系統一致性即同步的要求;其缺點在于以增加通信負載為代價換取可靠性,降低了系統的實時性。
對于本駕駛模擬器的多通道顯示系統,筆者選用TCP協議,在保證各通道一致性的基礎上通過使用最大相關等待時間機制來控制每兩幀圖像顯示的間隔時間,較大程度上提高了系統的實時性。
2.2 多通道同步流程設計
系統的同步過程由控制主機和顯示從機之間的通信來完成,本駕駛模擬器系統將控制主機也作為顯示通道之一,稱為Master通道,其它顯示從機均為Slave通道。圖1描述了系統的同步過程。
系統顯示場景經歷三個階段:讀取數據、渲染場景、顯示場景[4]。一般情況下,計算機在渲染場景所花的時間要比另兩個階段所花的時間加起來還多很多,因此,要達到多個通道的同步顯示,重點在對渲染時間的控制把握上。為此,設計了下面的流程算法。
通過對Master端通道等待時間T的控制,避免了因為少數通道某一幀渲染時間過長而導致整個多通道系統顯示頻率降低的情況出現;而通過超時標記flag的設置又避免了Slave端通道連續兩幀無法完成渲染的可能性。這樣,在提高了整個多通道系統顯示幀速的前提下,雖然可能出現某一幀不連續的現象,但這種情況,人眼視覺幾乎感覺不到,因此,不會影響到整個系統的一致性。
2.3 多通道通用數據包設計
多通道通信所要傳輸的數據包括:視點信息、幀數信息、命令信息(開啟特效,切換天空背景等)等等,為了方便傳輸處理這些信息,筆者設計了一個通用數據包結構,在滿足通用性的前提下,盡量減少了傳輸數據的大小。
typedef struct {
Producer::Matrixm_Matrix;//相機矩陣(包含視點信息)
FrameStamp m_FrameStamp;//幀數信息
floatm_EyeDistance;//雙眼視差
FusionDistanceMode m_FusionDistanceMode;//立體顯示模式
float m_FusionDistance;//立體顯示參數
COMMANDTYPEm_CommandType;//命令類型
CCommandParamm_CommandParam;//命令參數
} trans_packet;//傳輸數據包
如果是立體顯示,則需要加上立體顯示的相關參數。對于Master端通道的命令消息,定義了一系列的枚舉變量(COMMANDTYPE)來設置各種命令類型,Slave端通過handleCameraPacket()函數來對數據包進行解析。
2.4 多通道立體顯示系統的實現
在單機立體顯示的基礎上,將該技術運用到多通道系統中的每一個通道上,通過Master通道主機來控制所有通道的視差等參數以達到所有通道位差同步,這樣便在軟件上實現了多通道同步立體顯示,即實現了多通道投影系統的分布式通信子系統。
此外,渲染子系統可以采用配備了能輸出多路信號的專業圖形卡的工作站。投影顯示子系統中,因為每一個通道都要顯示左右眼兩幅圖像,對一個三通道系統來說需要3組6臺投影儀,擺放位置如圖2所示。融合矯正子系統采用硬件方法來實現,整體硬件具體配置方案如表1所示。這樣,便在軟、硬件上實現了一個完整的被動式三通道立體投影顯示系統。
2.5 實驗結果
為了提高系統的實時性,我們引入了最大相關等待時間機制(等待時間和Master端當前幀渲染時間相關)。Master端主機在渲染完成后會等待所有Slave端的渲染完成反饋信息,為了避免因為少數通道渲染時間過長而使得整個多通道系統渲染效率降,可以將等待時間T限制在一個可以接受的范圍內,本系統中設定 ( 為Master端當前幀渲染時間)。這樣,當等待時間超過限制時,Master端會根據超時標記flag的值強行發出顯示命令,而未完成渲染的Slave端將顯示前一幀的渲染結果。
實驗環境:P4 2.8GHz 處理器、512M內存、128M GeForce4 TI4200顯卡、100M 集成網卡、WindowsXP操作系統、模型A、B都是利用osgconv應用程序優化過后的.ive格式文件,大小分別為65.4M、102.5M使用最大相關等待時間機制前后,實驗結果如表2所示。
可見,在沒有破壞系統同步狀況的前提下,通過添加最大相關時間等待機制,顯著提高了整個系統的幀速,增強了系統的實時性。
為了測試本駕駛模擬器系統多通道立體顯示的性能,筆者在表3所提供的硬件環境上對本系統進行了測試,對比軟件為Multigen VEGA。Multigen VEGA是MultiGen-Paradigm公司開發的一款用于實時視覺模擬、虛擬現實和普通視覺應用的多功能軟件,現今已廣泛的運用于虛擬現實仿真領域。使用其用戶界面Lynx可以很方便的實現多通道立體顯示功能。測試場景模型均由MultiGen Creator建模,在三維實時視景仿真領域,MutiGen Creator以其無與倫比的強大的三維實體建模工具及三維地形生成功能,被公認為是當今最優秀的建模軟件之一。不同的是本駕駛模擬器系統需要使用osgconv應用程序將建好的模型轉換為osg自用格式(.ive)文件,模型總面數60.1萬,轉換格式前后文件大小分別為345.5M(.flt模型加紋理貼圖)、327.4M(.ive單一文件)立體模式選用四緩沖(Quad Buffer)模式,對比數據如表3。
實驗結果表明本系統相比常用的虛擬現實軟件VEGA,在多通道顯示速率上提高了22%-28%,具有良好的實時性和一致性。
3 小結
本文通過對組成多通道系統的四個部分進行了簡要介紹,重點論述了平板幕和環形幕兩種多通道系統的拼接技術,并給出了實現方法。選用TCP協議建立了分布式通信環境,在Master端和Slave端的通信過程中通過添加最大相關等待時間機制對多通道系統進行優化。實現了大屏幕的多通道立體顯示系統,給出了一個被動式多通道立體顯示系統的硬件解決方案。實驗結果表明本系統在實時性、一致性以及顯示效果上都有良好的表現。
參考文獻
[1]喬彩麗,戴樹嶺.多通道顯示系統同步技術研究[J]. 系統仿真學報,2007,19(15): 3437-3440.
[2]Som T K, Sargent R G. A probabilistic event scheduling policy for optimistic parallel discrete event simulation [C]Proc.12th Workshop on Parallel and Distributed Simulation. 445 Hoes Lane, Piscataway: IEEE Intellectual, 1998: 56-63.
[3]Hiller J B, Hartrum T C. Conservative synchronization in object-oriented paralleled battlefield discrete event simulation [C]Proc.11th Workshop on Parallel and Distributed Simulation. 445 Hoes Lane, Piscataway: IEEE Intellectual, 1997: 12-19.
[4]MA Ji-feng, PENG Xiao-yuan, FENG Qin, et al. Research and Realization of Visual System in Virtual Battlefield [J]. Journal of System Simulation, 2004, 16(8): 1735-1741.
作者簡介:李勛祥,1966 - ,男,福建省清流縣人,黃石理工學院藝術學院副教授,主要從事虛擬現實與可視化、三維動畫技術研究;陳定方,1946 - ,男,湖北省武漢市人,武漢理工大學物流工程學院教授,主要從事虛擬現實及系統仿真研究。