余久久, 傅廷亮, 張佑生
(安徽三聯(lián)學(xué)院 a. 計算機科學(xué)與技術(shù)系; b. 信息與通信技術(shù)系, 安徽 合肥 230601)
研究天氣變化對城市交通的影響具有重要意義。通過計算機仿真手段模擬出極為逼真的各種天氣變化過程是一種虛擬現(xiàn)實技術(shù),對于指導(dǎo)自然環(huán)境下開展防災(zāi)減災(zāi)工作起到重要作用。因為無需“身臨其境”就能有效解決人類與自然界直接交互性的要求,所以在氣象研究領(lǐng)域以及其它領(lǐng)域(航天航海、煤礦勘測等)具有廣泛的應(yīng)用前景。
本文采用虛擬現(xiàn)實技術(shù)完成對下雪天氣中的雪景視景模擬過程,在Visual C++6.0平臺下通過基于OpenGL圖形編程技術(shù)予以設(shè)計并實現(xiàn)。
虛擬現(xiàn)實技術(shù)是指利用信息技術(shù)手段構(gòu)造出一個虛擬的環(huán)境,用戶能夠與這個環(huán)境交互,從而獲得身臨其境的感覺[1]。視景仿真是虛擬現(xiàn)實技術(shù)重要的表現(xiàn)形式,使用戶產(chǎn)生身臨其境感覺的交互式仿真環(huán)境,實現(xiàn)出用戶與該環(huán)境直接進行自然交互[2]。
OpenGL是一個專業(yè)的繪畫軟件工具,是行業(yè)領(lǐng)域中最為廣泛接納的2D/3D圖形API,適用于廣泛的計算機仿真環(huán)境。具有建模、變換、顏色模式設(shè)置、光照和材質(zhì)設(shè)置、紋理映射、位圖顯示和圖像增強、雙緩存動畫等諸多功能[3]。作為圖形硬件的一種軟件接口,其嚴格按照計算機圖形學(xué)原理設(shè)計而成,符合視覺與光學(xué)原理,適合于可視化仿真系統(tǒng)的開發(fā)與設(shè)計工具,在計算機上把視景對象用圖形方式表達,通過光照處理表達出物體的三維特性,提供對圖像數(shù)據(jù)的使用方法,并把圖像數(shù)據(jù)定義為紋理與圖形方法結(jié)合在一起生成相應(yīng)視景圖像以增強效果[4]。
程序的開發(fā)平臺選用Visual C++6.0,Windows環(huán)境下通過win32控制臺采用Windows圖形圖像編程方法,完成相關(guān)圖形的繪制以及動態(tài)效果的實現(xiàn)。該程序需要較強的動畫效果,相關(guān)圖像連續(xù)幀至少要達到30fps,否則就要會使天氣視景的效果變化不真實,所以要求比較高的實時響應(yīng)[5]。在Windows編程中采用消息發(fā)送機制,不僅對屏幕的響應(yīng)比較迅速,而且可以采用很多種方式實現(xiàn)動畫的效果。設(shè)計人員每次使用不同圖像重復(fù)地對顯示器進行刷新,采用規(guī)范的Windows事件模型,能夠在WM_PAINT消息處理程序中完成所有的繪制(或渲染)操作。每當需要刷新窗口操作,都會產(chǎn)生下一幀?;诖耍谠摮绦蛑兄恍柙赪indows編程中的main函數(shù)中加入多個函數(shù)調(diào)用就可以達到快速描繪每一幀的目的。鑒于Windows 圖形圖像編程方法中采用OpenGL繪圖工具中所提供的各種圖像函數(shù)對三維圖形的操作與實現(xiàn)簡便,靈活,并且提供了很多對三維圖形(實物)的繪制方式:例如,網(wǎng)格線繪圖方式(wire-frame)繪制三維物體的網(wǎng)格輪廓線;光滑消隱繪圖方式(smooth-shade)完成對實物進行消隱按光照渲染著色的過程,并進行光滑處理來接近現(xiàn)實;大氣環(huán)境效果方式(atmosphere-effects)實現(xiàn)在三維視景中加入一些大氣環(huán)境效果(如云、霧、煙因素等);運動模糊的繪圖方式(motion-blurred)完成對模擬實物運動時人肉眼的感官現(xiàn)象等。OpenGL所提供的函數(shù)庫能夠較為逼真的模擬出比較復(fù)雜的三維實物或自然景觀,具有從多個角度完成對三維實物或自然景觀的特殊效果處理方式,所以在本文中選擇它作為工具模擬雪景視景的原因。
(1) 根據(jù)基本圖形單元(點、線、多邊形、位圖、圖像等)建立相應(yīng)實景模型,如本文中飄揚的雪花。并且對所建立的模型進行數(shù)學(xué)描述。
(2) 把要模擬的實景模型置于三維空間中的合適的位置,通過設(shè)置最佳視點(viewpoint)來觀察相應(yīng)的視景。
(3) 根據(jù)應(yīng)用需求計算出模型中所含物體的色彩,同時確定光照條件、紋理粘貼方式等。
(4) 把實景模型的數(shù)學(xué)描述及其色彩信息轉(zhuǎn)換至計算機屏幕上的象素,即光柵化過程。
在這些步驟的執(zhí)行過程中,利用OpenGL執(zhí)行自動消隱處理等等一些其它操作。除此之外,實景光柵化之后在被送入幀緩沖器之前還可以根據(jù)需要對象素數(shù)據(jù)進行操作。
根據(jù)以上步驟,在程序主函數(shù)中所使用到的重要的是四個基本繪制圖元函數(shù)及功能分別是:
void SetupRC();//用于圖形界面初始化操作,常用來設(shè)置實景的渲染狀態(tài)。
void RenderScene();//三維圖像顯示響應(yīng)函數(shù)。
void init();//初始化操作函數(shù),可以把設(shè)置實景的背景顏色或坐標系統(tǒng)的函數(shù)置于該函數(shù)中。
void glutReshapeFunc(); //回調(diào)函數(shù),用來處理窗口變化的消息,如改變后窗口的寬度與高度。
首先,確定景觀視圖。例如景觀所在窗口大小,觀測點的位置,景觀背景的顏色設(shè)置、裁減空間等。選擇在OpenGL中的void init(void)函數(shù)中主要完成一些具體初始化操作。如視圖初始化,地面的網(wǎng)格,雪花下落的位置及速度,可能需要用到的光照的燈光位置等。
其次,調(diào)用OpenGL中void RenderScene()函數(shù)繪制相關(guān)圖形。本文中通過調(diào)用void flake(void)繪制雪花圖形,設(shè)置本程序運行一次將產(chǎn)生幾千片雪花。雪花在飄揚中,根據(jù)物體運動方程修改其位置。同時判斷雪花是否已經(jīng)掉落到地面上,如果是,就形成積雪效果,并且產(chǎn)生新的雪花,滿足雪花飄揚的視窗內(nèi)一直有幾千片左右片雪花在飄揚。當雪花掉落到地面上之后判斷其飄落的位置,同時增加落點的高度。
最后,當改變窗口的大小時,及時修改景觀窗口對應(yīng)的比例,否則會導(dǎo)致所繪制的雪花變形。本文采用函數(shù)void ReSize( int new_x, int new_y )較好解決了此問題。當窗口最大化時,雪花不會變形以及飄落的相對位置也不會發(fā)生變化。
(1) 雪花可以有很多種方法進行繪制模擬。例如黑點、方點、圓球等,或直接用小方框產(chǎn)生。為達到逼真的仿真效果,本文用正方形表示雪花圖案,將雪花隨機旋轉(zhuǎn)后,再把真實的雪花圖片貼在圖上,同時將背景正方形做透明處理,這樣達到了真實的效果。這也是氣象視景仿真領(lǐng)域中模擬雨水、雪花、冰雹、煙塵等顆粒系統(tǒng)常用的方法。圖1為由雪花飄落的情境通過選擇在白色的背景落下黑色的小方塊的模擬視圖(可以通過設(shè)置一個茶壺來確定觀察者視點)。
圖1 黑色的小方塊的模擬視圖
(2) 增加光照和明暗處理與霧化效果,粘貼上真實的雪花圖片。設(shè)置背景為黑色的效果,表示黑色的天空飄落著白色的雪花,再現(xiàn)真實的大雪紛飛效果。圖2與圖3分別為未添加與已添加霧化效果與雪花圖片、并設(shè)置背景模擬圖。
圖2 未添加效果的雪花飄揚模擬視圖
圖3 已添加效果的雪花飄揚模擬視圖
在Visual C++6.0平臺下使用OpenGL編程模擬出雪花飄揚視景,主要代碼及注釋(不包括頭文件)如下:
void flake(void) //繪制模擬雪花的小方塊
{::glBegin(GL_QUADS); //正方形
glNormal3f(0.0f,0.0f,1.0f); //法向量定義
::glVertex3f(-FLAKE_SIZE,-FLAKE_SIZE,0);
glTexCoord2f(1.0f,0.0f );
::glVertex3f(FLAKE_SIZE,-FLAKE_SIZE,0);
glTexCoord2f(1.0f,1.0f );::glVertex3f(FLAKE_SIZE,FLAKE_SIZE,0);
glTexCoord2f(0.0f,1.0f );::glVertex3f(-FLAKE_SIZE,FLAKE_SIZE,0);
::glEnd();}
void MakeTextureFromRes(UINT res_id,GLuint tex_id) //貼圖
{……//貼上雪花圖片,自定義雪花大小、形狀等屬性,代碼略}
void init(void) //初始化操作
{LoadTexture();
::glEnable( GL_TEXTURE_2D );
theFlake=::glGenLists(1);
::glNewList(theFlake,GL_COMPILE);
::flake(); ::glEndList();
::glMatrixMode(GL_VIEWPORT); //確定視點
::glLoadIdentity();
::glViewport(0,0,600,600); //設(shè)置用戶觀測口
::glClearColor(0,0,0,1);
::glColor3f(1,1,1); //設(shè)置背景顏色為黑色
::glShadeModel(GL_SMOOTH); //清除圖片毛刺
GLfloat lmambient[]={1.0f,1.0f,1.0f,1.0f};
::glLightModelfv(GL_LIGHT_MODEL_AMBIENT,lmambient);
::glEnable( GL_BLEND );
::srand( (unsigned)time( NULL ) );
for(int i=0;i {p[i].alive=TRUE; p[i].x=rand()%GROUND_LENGTH_X;//int-->float p[i].z=rand()%GROUND_LENGTH_Z;//int-->float p[i].y=CLOUD_DISTANCE_TO_THE_GROUND+rand()%CLOUD_THICK;//int-->float p[i].vx=rand()%30-15.0f;//rand()%10; //可以增加X軸方向的風(fēng)向如果需要的話 p[i].vy=rand()%30+3.0f; //雪花以不同飄落速度在垂直方向下落 p[i].vz=rand()%30-15.0f;//rand()%10;// 可以增加Z軸方向的風(fēng)向如果需要的話 p[i].rx=rand()%180; p[i].ry=rand()%180; p[i].rz=rand()%180; p[i].degree=rand()%180+10.0f;//避免雪花飄落時不旋轉(zhuǎn) p[i].rotate_speed=rand()%50+5.0f;} //繪制飄落的雪花 ::glBlendFunc( GL_DST_ALPHA,GL_ONE ); ::glBindTexture( GL_TEXTURE_2D,flake_texture ); //貼上雪花的紋理 for(int i=0;i { if(p[i].alive=True) // 判斷雪花是否飄落在地面上 {p[i].y-=p[i].vy*SNOW_SPEED_TIMES; p[i].x+=p[i].vx; p[i].z+=p[i].vz; p[i].degree+=p[i].rotate_speed; //轉(zhuǎn)動的角度 float mesh_center_height= (ground[x_index][z_index][1]+ ground[x_index+1][z_index][1]+ground[x_index][z_index+1][1]+ground[x_index+1][z_index+1][1])*.25f; if(p[i].y<300&&p[i].y>mesh_center_height)//假定當積雪層低于300,高度才可視 {::glPushMatrix(); ::glTranslated(p[i].x,p[i].y,p[i].z); ::glRotated(p[i].degree,p[i].rx,p[i].ry,p[i].rz); ::glCallList(::theFlake); ::glPopMatrix();} if(p[i].y>mesh_center_height); //大多數(shù)雪花仍然在飄揚 else // 雪花落地情境 {float incre_x1= (p[i].x-ground[x_index][z_index][0])/ GROUND_POINT_GAP*SNOW_THICK_PER_FLAKE; float incre_x2=(ground[x_index+1][z_index][0]-p[i].x) /GROUND_POINT_GAP*SNOW_THICK_PER_FLAKE; float incre_z1=(p[i].z-ground[x_index][z_index][2])/ GROUND_POINT_GAP*SNOW_THICK_PER_FLAKE; floatincre_z2=(ground[x_index][z_index+1][2]-p[i].z)/ GROUND_POINT_GAP*SNOW_THICK_PER_FLAKE; ground[x_index][z_index][1]+=(INCRE_TIMES*(incre_x1+incre_z1)); ground[x_index+1][z_index][1]+=(INCRE_TIMES*(incre_x2+incre_z1)); ground[x_index][z_index+1][1]+=(INCRE_TIMES*(incre_x1+incre_z2)); ground[x_index+1][z_index+1][1]+=(INCRE_TIMES*(incre_x2+incre_z2)); p[i].alive=FALSE;}} else { p[i].alive=FALSE;} } else{ // 重新產(chǎn)生雪花,代碼略 p[i].vx=rand()%30-15.0f; p[i].vy=rand()%30+5.0f; //雪花以不同飄落速度在垂直方向下落p[i].vz=rand()%30-15.0f;}} ::glPopMatrix(); ::glFlush(); ::SwapBuffers(::wglGetCurrentDC());} 計算機模擬實景與真實自然景觀的實際形成過程往往存在差異。例如冬季里大雪紛飛,一段時間后地面會產(chǎn)生厚厚積雪。但是OpenGL自帶的程序大多沒有對加入對積雪效果的實現(xiàn)。無論是否繪制出地面,即使地面上初始時已經(jīng)有雪花,但是雪花飄落時地面時雪片堆積高度始終不變,即無法顯示出實際中的“積雪”效果。產(chǎn)生積雪效果也是雪景視景組成中的一部分,通常的模擬方法所存在的難度主要是如何確定雪花飄落時的坐標位置,雪花飄落到地面上的高度變化等。本文采用的方法是把地面以X-Z平面劃分成若干網(wǎng)格,當每一片雪花飄落到地面上時判斷其落在哪一個網(wǎng)格內(nèi)。同時對雪花飄落到的所在網(wǎng)格的高度作自增操作,把每個網(wǎng)格分成兩個三角形,對1幀的地面進行三角形的擬合過程。這樣整個地面實際上是由三角形鋪滿的,同時在每個三角形上貼上地面的紋理的貼圖,并增加紋理效果。所以就有了當雪花覆蓋時地面上所產(chǎn)生積雪的凹凸不平的效果。圖4為采用了三角形擬合地面所產(chǎn)生的積雪效果圖。主要功能代碼及注釋如下: //構(gòu)造大地上產(chǎn)生積雪效果的程序段: for(x_index=0;x_index for(z_index=0;z_index {ground[x_index][z_index][0]=(float)x_index*GROUND_POINT_GAP; //構(gòu)造X地平面 ground[x_index][z_index][2]=(float)z_index*GROUND_POINT_GAP; //構(gòu)造Z地平面 ground[x_index][z_index][5]=0.0f;}}} void caculate_ground_normal() //采用三角形鋪滿地面構(gòu)造大地 {GLfloat v[6][3],n[6][3]; for(x_index=1;x_index for(z_index=1;z_index {v[0][0]=ground[x_index][z_index][0]-ground[x_index][z_index-1][0]; ……//用同樣的方法定義出v [0][1]至v[5][2] }} void ReSize( int new_x, int new_y ) //調(diào)整圖像界面剪裁窗口 {if ( new_y == 0 ) new_y = 1; ::glMatrixMode(GL_VIEWPORT); ::glViewport( 0, 0, new_x, new_y ); //重置當前觀測點 ::glMatrixMode( GL_PROJECTION ); ::glLoadIdentity(); ratio=( GLfloat ) new_x / ( GLfloat ) new_y; gluPerspective(eye_angle,ratio,50.0f,GROUND_LENGTH_Z*3.5f ); glMatrixMode( GL_MODELVIEW );//選擇觀測模型視角矩陣 glLoadIdentity();} 圖4 三角形擬合地面所產(chǎn)生的積雪效果圖 為了使觀測者通過計算機屏幕能從多個方向、多角度靈活方便地觀察下雪的效果,同時也為了保證雪景視景模擬的高度逼真性,需要采用鍵盤控制改變觀測視角。本文以設(shè)置一個觀察壺作為觀測視角方位變化的準心,通過在代碼中加入了相應(yīng)的鍵盤操作命令(函數(shù))就可以實現(xiàn)用戶手動控制控制鍵盤完成準心方位變化來帶動觀測方位變化的目的。程序運行一段時間后,同樣以雪花沉積相對觀察壺的高度來襯托出積雪覆蓋的效果。圖5與圖6分別為通過鍵盤調(diào)整觀察壺角度的視景圖以及程序運行了一段時間后大雪快要覆蓋觀察壺情境所渲染出的積雪效果圖。主要的實現(xiàn)代碼及注釋如下: GLuint theFlake; ::particle p[PARTICLE_NUM]; GLfloat ground[GROUND_POINT_NUM_X][GROUND_POINT_NUM_Z][6]; //繪制帶法向量的大地網(wǎng)格點 //……初始化設(shè)置,自定義OpenGL像素區(qū)域的屬性,代碼略; int pixelformat_index; if ( ( pixelformat_index = ChoosePixelFormat( hdc, & pfd ) ) == 0 )return false; if ( SetPixelFormat( hdc, pixelformat_index, & pfd ) == false )return false; return true;} void RenderScene()//具體的畫圖 { ::glMatrixMode(GL_PROJECTION); ::glLoadIdentity(); ::gluPerspective(eye_angle,ratio,50.0f,GROUND_LENGTH_Z*3.5f); //確立觀測者視點 ::glMatrixMode(GL_MODELVIEW); ::glPushMatrix(); ::gluLookAt(GROUND_LENGTH_X*0.5f+GROUND_LENGTH_X*1.6f*cos(angle),eye_height,GROUND_LENGTH_Z*0.5f+GROUND_LENGTH_X*1.6f*sin(angle), GROUND_LENGTH_X*0.5f,0,GROUND_LENGTH_Z*0.5f,0,1,0); //設(shè)置窗口剪裁區(qū) ……//繪制地面過程,代碼略 caculate_ground_normal(); //計算地面上點的法向量 glBindTexture( GL_TEXTURE_2D,ground_texture ); //粘貼紋理效果 for(x_index=0;x_index { ……//繪制出x方向與z方向地面上的網(wǎng)格,代碼略} ::glEnd(); ::glBegin(GL_LINES); //劃線作為標準線,坐標線 ::glVertex3f(0,0,0); ::glVertex3f(GROUND_LENGTH_X*1.2f,0,0); //X ::glVertex3f(0,0,0); ::glVertex3f(0,GROUND_LENGTH_Z*1.2f,0,0); //Z ::glVertex3f(0,0,0); ::glEnd(); ::glBindTexture( GL_TEXTURE_2D,teapot_texture ); ::glPushMatrix(); ::glTranslated(GROUND_LENGTH_X*0.5f,46,GROUND_LENGTH_Z*0.5f); //轉(zhuǎn)動方位 glutSolidTeapot(60.0f); //設(shè)置一個觀察壺渲染大雪覆蓋效果 ::glPopMatrix(); 圖5 以觀測壺為準心的雪景方位效果圖 圖6 大雪覆蓋觀測壺所襯托出的積雪效果圖 本文嘗試在Windows環(huán)境下利用OpenGL軟件模擬并實現(xiàn)出一系列簡單的雪景視景圖,包括雪花飄揚、地面積雪效果以及觀測視角轉(zhuǎn)換效果圖。雖然還不能完全真實地再現(xiàn)整個下雪過程的全景效果,但是已對雪景構(gòu)成數(shù)據(jù)可視化且對其所包含基本要素完成了初步仿真過程,把對傳統(tǒng)的通過聽覺獲取氣象信息轉(zhuǎn)化為通過視覺獲取,可以應(yīng)用于現(xiàn)代天氣預(yù)報技術(shù)及相關(guān)氣象變化仿真軟件的開發(fā)中。當然,如果在模擬天氣變化的各種圖像中加入真實的背景圖案、聲音效果等,會更加貼切自然。在實際的天氣變化過程中,往往還有多種氣象因素(景觀)并存或混合現(xiàn)象,如雨雪交加、電閃雷鳴、風(fēng)起云涌等,這就要求對氣象視景的模擬過程還要考慮天氣變化的多樣性、交互性與實時性問題,以及受到實際自然環(huán)境的影響。因此這些將成為未來下一步的研究工作。 本文在Visual C++6.0平臺下使用OpenGL軟件通過對粒子飄落過程進行設(shè)計,結(jié)合雪花函數(shù)與貼圖模擬處雪花飄揚情景;將大地以X-Z平面形式劃分成若干網(wǎng)格,每個網(wǎng)格分成兩個三角形,對每一幀地面進行三角形的擬合過程模擬地面產(chǎn)生積雪現(xiàn)象;通過設(shè)置觀察壺為準心輔以鍵盤操作命令實現(xiàn)圖像觀測方位變化的效果。從而較好完成對單一環(huán)境下的雪景的模擬,達到了仿真下雪情境的要求。未來還將就實際中多種天氣混合(如雨雪交加等)情境進行仿真設(shè)計,從而更好地把計算機仿真技術(shù)運用于對天氣視景變化的研究領(lǐng)域中。 [1] 李姝博. 虛擬現(xiàn)實技術(shù)在職業(yè)教育中應(yīng)用的理論研究[J]. 遼寧高職學(xué)報,2013,15(7):13-15. LI Shu-bo.Theoretical Study on Application of Virtual Reality Technology in Vocational Education[J].Liaoning Higher Vocational Technical Institute Journal, 2013,15(7):13-15. [2] 陳國棟.視景仿真技術(shù)在天氣預(yù)報中的應(yīng)用研究[J].福建電腦, 2006(12):69. CHEN Guo-dong. Visual simulation technology application studies in weather forecasting[J]. Fujian Computer, 2006(12):69. [3] 宋曉偉,唐 濤. 列車運控系統(tǒng)視景仿真的設(shè)計與實現(xiàn)[J].系統(tǒng)仿真學(xué)報,2007,19(16):3864-3867. SONG Xiao-wei,Tang Tao.Design and Implementation of Visual Simulation in Trains control System[J].Journal of System Simulation,2007,19(16):3864-3867. [4] 郭慧玲. 基于OpenGL的三維真實感地形模擬的實現(xiàn)[J].科技創(chuàng)新與應(yīng)用,2012(11):44. GUO Hui-ling. The realization of the 3 d realistic terrain simulation based on OpenGL[J].Science and technology innovation and application, 2012,11:44. [5] 干微微,譚喜堂,申朝旭. 基于OpenGL的沙塵暴天氣仿真研究[J]. 機電一體化,2010,10:54-55. GAN Wei-wei,TAN Xi-tang,SHEN Zhao-xu. Study on Simulation of Sandstorm Based on OpenGL[J].mechatronics,2010(10):54-55. [6] 聶良兵,王培俊,潘 璇,等.三自由度運動平臺的運動仿真及控制設(shè)計[J]. 機械與電子,2013(4):59-62. NIE Liang-bing, WANG Pei-jun, PAN Xuan,etal. Movement Simulation and Control Design of 3-DOF Motion Platform[J].Machinery & Electronics, 2013(4):59-62. [7] 虛擬現(xiàn)實[EB/OL].http://www.baidu.com/虛擬現(xiàn)實原理.html, 2012. [8] 應(yīng)用程序框架設(shè)計—基于Windows“事件驅(qū)動”模型[EB/OL].http://www.baidu.com/事件驅(qū)動模型.html, 2011. [9] 廖宏剛,劉 榮. 基于OpenGL的三維真實感地形的實現(xiàn)[J]. 電子科技,2013,26(9):164-165. LIAO Hong-gang, LIU Rong. Realization of 3D Real Terrain Based on OpenGL[J]. Electronic Science and Technology, 2013,26(9):164-165. [10] 霍爍爍,劉艷冰,祿永旭 等.基于OpenGL的全景導(dǎo)游系統(tǒng)設(shè)計[J].無線電工程,2013,43(12):7-9. HUO Shuo-shuo, Liu Yan-bing, LU Yong-xu,etal. Design of Panoramic Guide System Based on OpenGL[J].Radio Engineering of China, 2013,43(12):7-9. [11] 劉巧紅,單 貴,錢家樂.三維仿真場景構(gòu)建及漫游系統(tǒng)實現(xiàn)[J].西華大學(xué)學(xué)報(自然科學(xué)版),2010,29(6):62-69. LIU Qiao-hong, SHAN Gui, QIAN Jia-le.The Construction of 3D Simulation Scene and Implementation of Roam System[J].Journal of Xihua University(Natural Science Edition),2010,29(6):62-69. [12] 陳玉軍,張 旭.基于OpenGL的視景仿真系統(tǒng)中紋理的應(yīng)用[J].中國制造業(yè)信息化,2012,41(7):62-64. CHEN Yu-jun,ZHANG Xu. Application of Texture in the Scenery Simulation System Based on OpenGL[J]. China's manufacturing industry normalization, 2012,41(7):62-64. [13] 高 穎,黃羅軍,許志國,等. 基于OpenGL的某導(dǎo)彈視景仿真技術(shù)研究[J].兵工學(xué)報,2007,28(1):126-128. GAO Ying, HUANG Luo-jun, XU Zhi-guo,etal. Designing and Implementing of a Missile's Visual Simulation System Based on OpenGL[J].Acta Armamentarii, 2007,28(1):126-128. [14] 周 穎,嚴利鑫,吳 青, 等. 基于虛擬現(xiàn)實技術(shù)的典型動態(tài)交通場景的設(shè)計與實現(xiàn)[J].交通信息與安全,2013,31(1):129-132. ZHOU Ying, YAN Li-xin, WU Qing etc. Design and Implementation of the Typical Dynamic Traffic Event with Virtual Reality Technology[J]. Journal of Transport Information and Safety, 2013,31(1):129-132. [15] 李 寧,王立文,陳幕華.基于Vega的機場天氣特效視景仿真研究[J].機床與液壓,2008,36(10):170-173. LI Ning, WANG Li-wen, CHEN Mu-hua. A Study of Visual Simulation for Weather Special Effects of Airport Based on Vega[J]. Machine Tool & Hydraulics, 2008,36(10):170-173. ·名人名言· 聰明的資質(zhì)、內(nèi)在的干勁、勤奮的工作態(tài)度和堅忍不拔的精神。這些都是科學(xué)研究成功所需的其他條件。 ——貝費里奇3.3 地平面上模擬積雪效果
3.4 手動控制觀測視角及大雪覆蓋效果的渲染
4 討 論
5 結(jié) 語