王燦運(yùn) 劉逢時(shí)
摘 要: 為了解決虛擬現(xiàn)實(shí)應(yīng)用程序GUI(圖形用戶界面)跨平臺(tái)問題,該文提供了一種多線程整合方法,實(shí)現(xiàn)了將OpenGL、Vega及OpenGL Performer渲染的三維虛擬場(chǎng)景嵌入到跨平臺(tái)圖形用戶界面軟件FLTK中,為其他虛擬現(xiàn)實(shí)程序應(yīng)用FLTK跨平臺(tái)渲染提供參考?;谝延袌D形工作站硬件結(jié)構(gòu),該文給出了三維虛擬場(chǎng)景立體顯示的工作原理及設(shè)計(jì)流程。同時(shí),應(yīng)用幾個(gè)典型事例證明了該方法的有效性和實(shí)用性。
關(guān)鍵字:虛擬現(xiàn)實(shí);跨平臺(tái)GUI;立體顯示;FLTK
中文分類號(hào):TP391.9 文獻(xiàn)標(biāo)識(shí)碼 A 文章編號(hào):2095-2163(2016)02-
A Cross-platform integration method for Virtual Reality applications
WANG Canyun1 LIU Fengshi2
(1 Department of Electrical and Automation, Shandong Labor Vocational and Technical College, Jinan 250022, China;
2 School of Mechanical Engineering, Shandong University, Jinan 250061, China)
Abstract: To solve cross-platform problem of GUI(Graphical User Interface) in virtual reality applications,this paper presented a multi-thread integration method which can embed 3D scene rendered in OpenGL,Vega and OpenGL Performer into a cross-platform GUI named FLTK.The presented method provides a source of reference for other cross-platform virtual reality rendering engines to be integrated with FLTK.Based on hardware configuration of an existing graphic workstation,the principles and design flow of stereo display are also given.Several experiments are conducted to prove the presented method is effective.
Keyword: Virtual Rreality; cross-platform GUI; stereo display; FLTK
0引 言
隨著計(jì)算機(jī)技術(shù)的發(fā)展,虛擬現(xiàn)實(shí)技術(shù)已經(jīng)被廣泛地應(yīng)用在各種領(lǐng)域。在不同的計(jì)算機(jī)操作系統(tǒng)中,采用各種場(chǎng)景渲染軟件開發(fā)了很多虛擬現(xiàn)實(shí)應(yīng)用程序,因此,虛擬現(xiàn)實(shí)應(yīng)用程序的跨平臺(tái)運(yùn)行是其非常重要的特征之一[1-2],即在某操作系統(tǒng)下所開發(fā)的應(yīng)用程序,通過稍加修改或不予修改就可以在另外一種操作系統(tǒng)中實(shí)現(xiàn)運(yùn)行。目前,很多商業(yè)或免費(fèi)的虛擬現(xiàn)實(shí)程序開發(fā)軟件已經(jīng)具備一定的跨平臺(tái)能力,所以GUI(圖形用戶界面)跨平臺(tái)性就成為整體跨平臺(tái)的關(guān)鍵所在;很多GUI開發(fā)工具包跨平臺(tái)運(yùn)行能力相對(duì)較弱;例如,在windows系統(tǒng)下用MFC開發(fā)的程序就不能在Onyx300圖形工作站Irix系統(tǒng)下直接運(yùn)行。
FLTK(Fast Light Tool Kit)是一種基于C++語言的GUI跨平臺(tái)軟件工具包,能夠應(yīng)用于UNIX○R、Microsoft○R Windows○R及MacOS○R X系統(tǒng)中。FLTK提供了非常簡(jiǎn)潔的GUI功能,并通過OpenGL○R及其GLUT組件支持3D圖形的渲染[3];與其他GUI工具M(jìn)FC及TQ相比,F(xiàn)LTK具備更加簡(jiǎn)潔、快速及良好的跨平臺(tái)應(yīng)用的優(yōu)點(diǎn)。
FLTK是一種基于C++語言的GUI開發(fā)工具,因此,可以應(yīng)用于所有采用C++語言開發(fā)的應(yīng)用程序中。FLTK定義了很多基礎(chǔ)部件類,如菜單、按鈕和窗口等,這些部件可以直接嵌入到GUI應(yīng)用程序中,其信息處理功能及各部件的信息都可以通過反饋功能部件鏈接起來。
為了解決虛擬現(xiàn)實(shí)應(yīng)用程序GUI的跨平臺(tái)問題,本文將FLTK應(yīng)用于虛擬現(xiàn)實(shí)應(yīng)用開發(fā)中;同時(shí),運(yùn)用FLTK對(duì)3種主流虛擬現(xiàn)實(shí)渲染軟件OpenGL、Vega及OpenGL Performer的整合方式做了深入的研究,提出了一種多線程整合方法。這種方法為跨平臺(tái)運(yùn)行的虛擬現(xiàn)實(shí)程序開發(fā)提供了非常有用的參考。
本文的主要結(jié)構(gòu)內(nèi)容包括:第二部分提供了一種多線程整合方法,該方法可以將OpenGL、Vega及OpenGL Performer3種開發(fā)軟件應(yīng)用在FLTK中;第三部分介紹了Onyx300圖形工作站的硬件結(jié)構(gòu),同時(shí)提出了基于該硬件結(jié)構(gòu)的3D顯示原理及流程設(shè)計(jì);第四部分通過實(shí)驗(yàn)和討論證明了本方法的有效性;最后一部分對(duì)本文作了總結(jié)。
1 FLTK與VR程序整合
將FLTK應(yīng)用于VR程序的關(guān)鍵在于把3D虛擬場(chǎng)景嵌入到FLTK窗口部件中,實(shí)現(xiàn)三維虛擬場(chǎng)景在FLTK窗口部件中的顯示;同時(shí),也可以通過其他FLTK部件對(duì)虛擬場(chǎng)景進(jìn)行控制。本節(jié)主要介紹如何將3種流行的虛擬現(xiàn)實(shí)開發(fā)軟件包OpenGL、Vega及OpenGL Performer的虛擬場(chǎng)景嵌入到FLTK窗口部件中。
1.1OpenGL整合方法
FLTK提供了一個(gè)特殊的窗口類Fl_Gl_Window用于在FLTK窗口中展示OpenGL場(chǎng)景,F(xiàn)l_Gl_Window能夠直接嵌入到FLTK的主窗口(Fl_Window)中。開發(fā)者可以通過OpenGL重新設(shè)置其子類功能函數(shù)“Show()”生成新的場(chǎng)景,實(shí)現(xiàn)OpenGL場(chǎng)景在FLTK主窗口的嵌入。