劉小英+張健
摘要:虛擬校園是虛擬現實技術的一個重要應用方面,通過虛擬校園,人們只需要一臺計算機即可了解校園整體風貌。以攀枝花學院主體建筑為研究對象,利用SketchUp構建三維模型,應用GIMP進行紋理貼圖處理。運用VC++6.0結合OpenGL技術,讀取三維模型,實現漫游交互控制及碰撞檢測功能。系統運行表明,該系統場景逼真,能夠展現學校風貌,為學校提供了一個新的窗口。
關鍵詞:虛擬校園;OpenGL;VC++6.0;SketchUp
中圖分類號:TP391.9 ? ? ? ?文獻標識碼:A ? ? ? ?文章編號:0439-8114(2014)12-2909-04
Design and Implementation of Virtual Reality Platform for 3D Campus
LIU Xiao-yinga,ZHANG Jianb
(a. School of Mathematics and Computer Science; b. School of Transportation and Automobile Engineering, Panzhihua University,
Panzhihua ?617000, Sichuan, China)
Abstract: Virtual campus is an important application about virtual reality technology. People only need a computer to have the overall view of the campus through the virtual campus. Taking the main building of Panzhihua university as a research object, using SketchUp to build 3D model and GIMP to process texture mapping, and VC++6.0 and OpenGL technology, the 3D model was read, and then the roaming interactive control and collision detection function were implemented. The system operation showed that the system could show realistic scenes of the school and provide school views with a new window.
Key words: virtual campus; OpenGL; VC++6.0; SketchUp
虛擬現實技術是一種融合了計算機圖形技術、多媒體技術和仿真技術等多種技術的綜合集成技術[1]。虛擬現實技術已被廣泛應用于視景仿真、虛擬工程設計、文化遺產數字化保護等領域[2,3]。隨著虛擬現實技術的發展,虛擬校園的構建已經成為各大高校學者研究的熱點。虛擬校園結合地理信息技術、虛擬現實技術、計算機網絡技術等高新技術,實現對真實校園環境中的三維景觀的數字化和虛擬化[4]。構建虛擬校園系統,并發布在校園網站或者其他網絡上,使很多使用者不用親臨學校,即可了解校園整體風貌。
SketchUp是目前最流行的三維建模及渲染軟件,被廣泛用于室內設計、建筑建模、虛擬現實等領域[5,6],其構造模型方法簡單易上手,模型美觀,便于虛擬校園多場景構建。OpenGL作為開發交互式的三維應用程序方面使用最為廣泛且有著高度評價的3D圖形接口,作為一個性能優越的圖形API,OpenGL主要能實現基本圖形的繪制、三維圖形的幾何變換、提供RGBA和顏色索引兩種顏色模式、提供輻射光、漫反射光和鏡面光以及制定圖形表面的反射特性,即材質屬性設置、提供紋理映射功能、提供三維人機交互接口,用戶可以通過輸入輸出設備進行交互操作[7,8]。利用SketchUp構建了攀枝花學院主體建筑的三維場景模型,應用VC++6.0并結合OpenGL技術,實現了攀枝花學院校園的虛擬漫游。
1 ?校園虛擬場景的構建
通過導入學校的衛星地圖來參照各個建筑之間的位置關系,進行場景的逼真布局。以攀枝花學院為真實場景參照,利用SketchUp構建虛擬模型。由于模型構建的數據量較大,所以在構建場景時采用對模型先建造后合并的方法。校園虛擬場景構建流程如圖1所示。
1.1 ?數據采集與處理
要使構建的校園建筑形象逼真,需對建筑表面進行逼真的紋理貼圖,使構建的校園場景具有沉浸感。因此需要大量的平面及立體資料,數據采集工作就顯得尤為重要,主要分為以下兩個方面:
1)校園平面信息的獲取及建筑物的高度信息確定。衛星地圖是部分地理數據的真實反映,通過電子地圖和衛星地圖作為參考。衛星地圖具有比例尺,根據地圖的比例尺來確定模型的長寬比例和在校園內的相對位置。采用測量和幾何估算來獲取建筑物的高度信息,如可以通過測量某建筑單層的高度乘以樓層數來估算出該建筑的整體高度。
2)對建筑整體和局部的細節進行數據采集,采集的建筑局部細節需進一步處理作為紋理貼圖。數據的處理主要是利用Photoshop軟件對采集回來的圖片資料進行裁剪,調整大小,并導出為.bmp格式的位圖,用做模型的紋理貼圖。
1.2 ?校園建筑物場景模型的建立
1.2.1 ?模型建立 ?虛擬三維立體建模和漫游技術是虛擬現實的基礎[9,10]。系統模型是由SketchUp建立的,首先將采集到的衛星地圖導入SketchUp,將其做為背景構建虛擬校園地平面,以確定建筑的相對位置及方位的逼真度,然后參照此信息進行建模。校園的衛星地圖及平面三維建模圖如圖2所示。endprint
圖3展示的是校園主要建筑物分析測試中心主觀比例建模和真實尺寸建模的對比圖。通過對比可以看出,主觀建模不美觀且不真實,和實際建筑相差甚遠;而真實尺寸建模美觀大方,符合建筑美學以及黃金分割比例,真實感較強,有沉浸感。因此,具體建模時一定要運用真實尺寸建模,利用SketchUp中的測量工具,測出建筑的真實尺寸比例,只有嚴格按照真實尺寸建模才能達到美觀逼真的效果。
1.2.2 ?模型優化與貼圖 ?模型建立好后,在貼圖之前還需要對模型進行一些優化操作,需要去掉模型表面不需要的線條和隱藏的平面,一方面可以減少紋理圖片的數量;另一方面在模型文件被加載到程序中時可以避免因計算多余的面而造成的系統資源的浪費。
紋理貼圖的制作是通過SketchUp對某一平面設置自定義紋理,并導出紋理為圖像。導出的紋理圖像用來作為紋理貼圖制作時的尺寸模板,將其用GIMP作為圖層打開。然后,在GIMP中導入墻體、門窗圖片作為圖層,制作建筑物墻面的紋理貼圖。在GIMP中將制作好的紋理貼圖導出為位圖格式的圖片,通過SketchUp導入到虛擬模型中,并勾選“用作圖像”選項,將紋理圖像貼在正確的平面上。此時就可以將貼上紋理圖像的平面刪掉,只保留紋理圖像。用同樣的方法對其他平面進行紋理貼圖。建好模型后,選用SketchUp的導出功能導出成3DS文件。
分析測試中心、會堂、辦公樓、圖書館及第二教學樓等校園主要建筑的建模及貼圖后的SketchUp渲染效果如圖4所示。
1.2.3 ?模型合并 ?在單個建筑的模型建好后,將所有模型加載到同一個場景中,并對模型的位置和大小進行調整,使其看起來更自然更逼真。圖5所示為建好后的虛擬場景部分展示。
2 ?3DS模型文件的讀取
將模型轉換為3DS模型文件以后,需要導入到OpenGL程序框架中,首先需要對VC++6.0中的OpenGL編譯環境進行設置,環境設置好后,開始導入3DS格式文件,在OpenGL中重新構建并顯示學校建筑模型。在讀入3DS格式文件時,程序首先要判斷該文件是不是3DS格式,若不是則直接返回,不進行任何操作,若是3DS文件則進入下一步操作,即讀取文件中的模型數據。在讀取數據時,可以根據實際需要選擇性地讀入需要的塊,忽略一些未知的塊。在讀入塊結構數據時,可以用遞歸的方法實現,返回上一級的條件是當前已經讀入的塊的字節數是否等于塊的長度;從父塊轉向讀入其子塊,用Switch語句實現,通過子塊的ID號來判斷進入哪個分支。程序流程圖如圖6所示。
讀取3DS文件后,利用OpenGL自帶的函數添加燈光效果,并利用貼圖函數添加天空、水泥地面及草地,使其場景顯得更為真實。
3 ?人機交互漫游的設計
人機交互漫游是通過鍵盤對漫游視角進行控制,當視點的位置、方向和參考點發生改變時,場景中的物體相對于觀察者的方位也發生了改變,從而產生了“動感”,達到能進能退、能夠旋轉、視角俯仰、沉浸其中的效果。
系統中的視點即為人的眼睛,對場景顯示的漫游控制在OpenGL中利用gluLookat()函數,通過設置相應的參數來達到漫游的效果。由于OpenGL的坐標系和3DS Max的坐標系是不同的,3DS Max中模型的z軸指向上方,而OpenGL中模型的z軸是垂直屏幕指向用戶的,因此需要將頂點坐標的y軸和z軸翻轉過來。本系統由鍵盤執行的漫游命令包括場景左右旋轉、場景縮放、視點改變等。響應左、右旋轉命令時,視點保持不變,分別繞z軸沿逆、順時針旋轉一定角度;響應場景縮放命令時,視點分別沿視線方向移動一定距離。按照這種響應方法,通過空間向量分解運算,即可計算出新的視點和參考點坐標。人機交互控制功能鍵及功能如表1所示。
4 ?碰撞檢測技術的實現
確定了建筑的位置信息后,參照建筑的方位,才能確定出需要碰撞檢測的墻面位置信息。系統要能進行碰撞檢測,也就是說檢測觀察者在行進中是否遇到了阻礙,如到了墻邊,則不能繼續前進,不能出現穿墻而過的情況。碰撞檢測的原理是首先通過if函數判斷障礙,遇到障礙則返回為真,沒遇到則返回為假。對樹木實行碰撞繞行方法,即視點行走到樹木面前,如果有障礙,則x方向回原點,或者x方向不變,y方向回原點,如果沒障礙,繞行。
以圖書館及樹木的碰撞檢測為例,核心代碼如下:
BOOL baiscobj::iftf(float x,float z,int i) ? ? ?//判斷障礙
{ if ?(x>=295 && x<=310)//判斷圖書館凸出墻
{
if (( z<= -313 && z>= -335) || (z<= -473 && z>= -495))
// AfxMessageBox("22222111111");
return TRUE;
}
else if (x>=290 && x<=297)//判斷圖書館正面墻
{
if ( (z<= -265 && z>= -380) || (z<= -435 && z>= -545))
{
return TRUE;
}
}
對樹木的碰撞繞行核心代碼如下:
void baiscobj::zangan(float x,float z)//碰撞繞行
{endprint
//AfxMessageBox("11111");
float pp;
for(int ?i=0;i<=40;i++) //樹木障礙檢測
{
if(iftf(g_eye[0],g_eye[2],i)) //有障礙
{
pp=g_eye[0];g_eye[0]=x; //x方向回原點
if(!iftf(g_eye[0],g_eye[2],i))
continue ; //沒障礙,繞行。
else
g_eye[0]=pp; //有障礙,x方向不變
pp=g_eye[2];
g_eye[2]=z; //y方向回原點
if(!iftf(g_eye[0],g_eye[2],i)) ?; //沒障礙了,繞行。return
else
g_eye[2]=pp; //有障礙,y方向不變
}
}
}
5 ?結論
應用SketchUp建模工具對攀枝花學院的主體建筑和校園整體平面建立虛擬模型,利用GIMP建立建筑紋理貼圖,最后進行模型合并,結合Windows環境下OpenGL圖形編程實現了三維校園虛擬現實平臺的建立,實現了人機交互控制及碰撞檢測,系統運行表明,該系統場景逼真,能夠展現學校風貌,使用戶不必親臨攀枝花學院即可了解學校的整體風貌,具有較強的沉浸感及實用價值。
參考文獻:
[1] 王振德,王艷春.虛擬現實技術及其在虛擬校園中的應用研究[J].安徽農業科學,2013,41(7):3223-3224,3235.
[2] 任 ?鏷,王文劍,白雪飛. 基于虛擬現實技術的山西大學堂建筑復原[J].計算機仿真,2012,29(11):20-24.
[3] 黃志鋒,李 ?笑,秦輝明.基于OpenGl和SolidWorks的遙操作工程機器人建模與仿真[J].機機械設計與制造,2012(12):157-159.
[4] 王艷安,曾俊峰,安運華.長江大學校園虛擬漫游系統設計[J].湖北農業科學,2010,49(9):2237-2240.
[5] 蘭玉芳,付金霞,徐霞華,等.基于SketchUp與ArcGIS的校園3DGIS的設計與實現[J].遙感技術與應用,2013,28(2):346-351.
[6] 張瑞菊. SketchUp 結合Google Earth在虛擬校園中的應用[J].計算機應用,2013,33(S1):271-272,297.
[7] 柏 ?林,陳根浪,徐 ?靜. OpenGL編程精粹[M].北京:機械工業出版社,2010.1-2.
[8] 樊雅萍,黃生學,溫佩芝,等. 基于OpenGL的機器人虛擬漫游系統開發[J].系統仿真學報,2005,17(10):2426-2428,2441.
[9] 原發杰,路立偉,邱健壯.校園三維虛擬漫游系統的建設研究[J].山東農業大學學報(自然科學版),2011,42(4):586-590.
[10] 張青峰,吳發啟,周 ?淑,等.校園虛擬漫游設計初探[J].測繪科學,2005,30(6):124-126.endprint
//AfxMessageBox("11111");
float pp;
for(int ?i=0;i<=40;i++) //樹木障礙檢測
{
if(iftf(g_eye[0],g_eye[2],i)) //有障礙
{
pp=g_eye[0];g_eye[0]=x; //x方向回原點
if(!iftf(g_eye[0],g_eye[2],i))
continue ; //沒障礙,繞行。
else
g_eye[0]=pp; //有障礙,x方向不變
pp=g_eye[2];
g_eye[2]=z; //y方向回原點
if(!iftf(g_eye[0],g_eye[2],i)) ?; //沒障礙了,繞行。return
else
g_eye[2]=pp; //有障礙,y方向不變
}
}
}
5 ?結論
應用SketchUp建模工具對攀枝花學院的主體建筑和校園整體平面建立虛擬模型,利用GIMP建立建筑紋理貼圖,最后進行模型合并,結合Windows環境下OpenGL圖形編程實現了三維校園虛擬現實平臺的建立,實現了人機交互控制及碰撞檢測,系統運行表明,該系統場景逼真,能夠展現學校風貌,使用戶不必親臨攀枝花學院即可了解學校的整體風貌,具有較強的沉浸感及實用價值。
參考文獻:
[1] 王振德,王艷春.虛擬現實技術及其在虛擬校園中的應用研究[J].安徽農業科學,2013,41(7):3223-3224,3235.
[2] 任 ?鏷,王文劍,白雪飛. 基于虛擬現實技術的山西大學堂建筑復原[J].計算機仿真,2012,29(11):20-24.
[3] 黃志鋒,李 ?笑,秦輝明.基于OpenGl和SolidWorks的遙操作工程機器人建模與仿真[J].機機械設計與制造,2012(12):157-159.
[4] 王艷安,曾俊峰,安運華.長江大學校園虛擬漫游系統設計[J].湖北農業科學,2010,49(9):2237-2240.
[5] 蘭玉芳,付金霞,徐霞華,等.基于SketchUp與ArcGIS的校園3DGIS的設計與實現[J].遙感技術與應用,2013,28(2):346-351.
[6] 張瑞菊. SketchUp 結合Google Earth在虛擬校園中的應用[J].計算機應用,2013,33(S1):271-272,297.
[7] 柏 ?林,陳根浪,徐 ?靜. OpenGL編程精粹[M].北京:機械工業出版社,2010.1-2.
[8] 樊雅萍,黃生學,溫佩芝,等. 基于OpenGL的機器人虛擬漫游系統開發[J].系統仿真學報,2005,17(10):2426-2428,2441.
[9] 原發杰,路立偉,邱健壯.校園三維虛擬漫游系統的建設研究[J].山東農業大學學報(自然科學版),2011,42(4):586-590.
[10] 張青峰,吳發啟,周 ?淑,等.校園虛擬漫游設計初探[J].測繪科學,2005,30(6):124-126.endprint
//AfxMessageBox("11111");
float pp;
for(int ?i=0;i<=40;i++) //樹木障礙檢測
{
if(iftf(g_eye[0],g_eye[2],i)) //有障礙
{
pp=g_eye[0];g_eye[0]=x; //x方向回原點
if(!iftf(g_eye[0],g_eye[2],i))
continue ; //沒障礙,繞行。
else
g_eye[0]=pp; //有障礙,x方向不變
pp=g_eye[2];
g_eye[2]=z; //y方向回原點
if(!iftf(g_eye[0],g_eye[2],i)) ?; //沒障礙了,繞行。return
else
g_eye[2]=pp; //有障礙,y方向不變
}
}
}
5 ?結論
應用SketchUp建模工具對攀枝花學院的主體建筑和校園整體平面建立虛擬模型,利用GIMP建立建筑紋理貼圖,最后進行模型合并,結合Windows環境下OpenGL圖形編程實現了三維校園虛擬現實平臺的建立,實現了人機交互控制及碰撞檢測,系統運行表明,該系統場景逼真,能夠展現學校風貌,使用戶不必親臨攀枝花學院即可了解學校的整體風貌,具有較強的沉浸感及實用價值。
參考文獻:
[1] 王振德,王艷春.虛擬現實技術及其在虛擬校園中的應用研究[J].安徽農業科學,2013,41(7):3223-3224,3235.
[2] 任 ?鏷,王文劍,白雪飛. 基于虛擬現實技術的山西大學堂建筑復原[J].計算機仿真,2012,29(11):20-24.
[3] 黃志鋒,李 ?笑,秦輝明.基于OpenGl和SolidWorks的遙操作工程機器人建模與仿真[J].機機械設計與制造,2012(12):157-159.
[4] 王艷安,曾俊峰,安運華.長江大學校園虛擬漫游系統設計[J].湖北農業科學,2010,49(9):2237-2240.
[5] 蘭玉芳,付金霞,徐霞華,等.基于SketchUp與ArcGIS的校園3DGIS的設計與實現[J].遙感技術與應用,2013,28(2):346-351.
[6] 張瑞菊. SketchUp 結合Google Earth在虛擬校園中的應用[J].計算機應用,2013,33(S1):271-272,297.
[7] 柏 ?林,陳根浪,徐 ?靜. OpenGL編程精粹[M].北京:機械工業出版社,2010.1-2.
[8] 樊雅萍,黃生學,溫佩芝,等. 基于OpenGL的機器人虛擬漫游系統開發[J].系統仿真學報,2005,17(10):2426-2428,2441.
[9] 原發杰,路立偉,邱健壯.校園三維虛擬漫游系統的建設研究[J].山東農業大學學報(自然科學版),2011,42(4):586-590.
[10] 張青峰,吳發啟,周 ?淑,等.校園虛擬漫游設計初探[J].測繪科學,2005,30(6):124-126.endprint