版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、利用三角函數(shù)實現(xiàn)視點控制的算法18082009,30(7)計算機工程與設計computerengineeringanddesign?計算機應用技術?利用三角函數(shù)實現(xiàn)視點控制的算法翟紅英,曹維明,程佳琳(1.北京聯(lián)合大學師范學院電氣信息系,北京100011;2.北京市財經(jīng)學校,北京100009;3.海淀區(qū)環(huán)境衛(wèi)生科學研究所,北京100086)摘要:為了增強在虛擬空間進行漫游的真實感,對其實現(xiàn)的核心技術視點控制進行了研究.分析了利用開發(fā)工具提供的函數(shù)來完成視點控制的優(yōu)缺點.結合實際開發(fā)經(jīng)驗,給出了一種利用三角函數(shù)實現(xiàn)視點控制的算法.利用數(shù)學三角函數(shù)實現(xiàn)視點控制算法,能夠使視點控制更符合人的真實視點
2、,為后期真實感繪制的編程降低了難度,增加了靈活性,并且該算法可以很好的移植到其它虛擬現(xiàn)實相關軟件的開發(fā)中.關鍵詞:虛擬現(xiàn)實;漫游;視點控制;三角函數(shù);算法中圈法分類號:tp391.9文獻標識碼:a文章編號:1000.7024(2009)07180802realiztionofviewpointcontrolalgorithmusingtrigonometricfunctionzhaihongying,ca0weiming,chengjialin(1.departmentofelectronicsinformation,teacherscollege,beijingunionuniversity
3、,beijing100011,china;2.financeschoolofbeijing,beijing100009,china;3.haidianenvironmentalsanitationscientificresearchinstituteofbeijing,beijing100086,china)abstract:inordertoenhancethevirtualrealityofroamingspace,therealizationofitscoretechnologytocontrolviewpointisstudied.theadvantagesanddisadvantag
4、esofviewpointcontrolisanalyzedwithfunctionusingthedevelopmentkit.theactualdevelopmentexpefienceisunified,onekindisgiventorealizetheviewpointcontrolalgorithmusingthetrigonometricfunction.theviewpointcontrolalgorithmisrealizedusingmathematicstrigonometricfunction,itcancausetheviewpointcontroltoconform
5、topersonsrealviewpoint,reducedthedifficultyforthelaterperiodthirddimensionplansprogramming,increasedtheflexibility,andthisalgorithmistheverygoodtransplanttoothervirtualrealityrelatedsoftwaresdevelopment.keywords:virtualreality;roaming;viewpointcontrol;trigonometricfunction;algorithmo引言虛擬現(xiàn)實是利用計算機技術對現(xiàn)
6、實生活中的各個方面進行三維模擬,人們的視覺在這個虛擬空間中進行漫游,從任意角度對虛擬環(huán)境中的對象進行觀察,從而產(chǎn)生身臨其境的感受.實現(xiàn)漫游的核心技術之一就是視點控制.存一個場景中漫游時,看到的物體與場景越來越近,兩邊的物體在向后退,這就是我們的視點即觀察點在場景中的位置發(fā)生改變的結果.在視點控制時,可以利用開發(fā)工具提供的函數(shù)來完成,如opcngl中的glulookat()函數(shù)來控制視點,但在實際開發(fā)時,如果要使視點控制更符合人的真實視點,可以利用自己開發(fā)的視點控制算法.本人在實現(xiàn)三維校園的漫游系統(tǒng)的開發(fā)中就使用了這種方法,達到了非常好的效果.l利用開發(fā)工具提供的函數(shù)實現(xiàn)視點控制人對世界的綜合視
7、覺觀察效果,是來源于我們的眼睛.眼睛就像?架攝像機,將外部影像反映到我們的大腦.在j維校園的漫游系統(tǒng)的開發(fā)中,使用vc+.net和opengl為開發(fā)工具.在opengl中也有類似于我們眼睛的,h來控制改變視點的觀察函數(shù)glulookat0,在該函數(shù)中有視點,目標點和視點方向3個參數(shù),三者之間的關系如圖1所示.視點方向目標點視點圖1視點,目標點和視點方向的關系其中視點也稱為觀察點是一個三維坐標量.x量的變化就像是我們在場景中橫向移動,y量的變化就像是我們的身體高度的變化,如游戲中角色的站立,臥倒,z量的變化就像足我們在場景中前后移動.目標點也是一個三維坐標量,目標點的變化,相當于我們人站著不動,
8、頭或手中的相機上下左右移收稿日期:2008.09.09;修訂日期:20081205.基金項目:北京市教育委員會科技計劃面上基金項目(km200811417014).作者簡介:翟紅英(1969-),女,北京人,碩士,副教授,研究方向為計算機圖形學,虛擬現(xiàn)實,計算機仿真;曹維明(1982-),男,北京人,研究方向為虛擬現(xiàn)實:程佳琳(1985一),女,北京人,研究方向為信息學.e-mail:sflhongying翟紅英,曹維明,程佳琳:利用三角函數(shù)實現(xiàn)視點控制的算法2009.,3o(7)1809動的效果.視點方向也是一個三維坐標量,實際可以理解成,我們頭頂?shù)某?如視點方向為y=i表示我們的頭始終是
9、正立的,如果要呈現(xiàn)在飛機轉彎看到大地傾斜的效果,那么就需要改變視點方向的x,z值.觀察函數(shù)glulookat0實際對應的是圖形學中的視圖變換,即通過移動攝像機來改變視點,以此實現(xiàn)虛擬環(huán)境中的漫游.li.adycdxo圖2視點移動x2利用三角函數(shù)實現(xiàn)視點控制算法求證下列等式成立,其中step是移動一次的步長,即step=在實際生活中,某些情況下為了便于拍攝,我們讓攝像機保持不動,可以移動要觀察的物體,這種方式對應的是圖形學中的模型變換,同樣可以進行視點控制,實現(xiàn)漫游效果.在利用j角函數(shù)實現(xiàn)視點控制算法星我們就采用的是模型變換.在這個算法星利用opengl中的glrotateff)旋轉函數(shù)和tra
10、nslateff)平移函數(shù),結合數(shù)學中的正弦函數(shù)和余弦函數(shù),實現(xiàn)第一人稱視點的前后移動,左右旋轉,左右平移,用鼠標和鍵盤進行控制.具體實現(xiàn)方法如下:2.1在視圖類建立兩個數(shù)組floatcampos31/視點當前坐標campos】/視點當前位置的x坐標campos1】/視點當前位置的y坐標campos2】/視點當前位置的z坐標floatcamrot3】/視點當前與各坐標軸的夾角camrotffi/視點與x軸的災角camrot1】/視點與y軸的夾角camrot2/視點與z軸的夾角2.2在onkeydown0函數(shù)中調整以上數(shù)組的值將要完成的功能如表1所示,并以下面的程序代碼為例.表i完成功能及對應鍵
11、和鼠標效聚對應鍵向前走w向后退s向左轉a,左箭頭,鼠標向右轉d,右箭頭,鼠標抬頭上箭頭,鼠標低頭下箭頭,鼠標沿x軸甲移q,e沿z軸平移y,h,home,end2.2,1向前走if(nchar=w)campos1】一=sin(90-.camrot2)*pioverl80)*step;campos0.=cos(90-camrot2)*pioverl80)*step;以上代碼可以使視點向前移動,這時需要特別注意的是:由于建模使用的是頂視圖,所以視點在坐標系中xy平面移動.下面將通過幾何方法證明代碼的正確性,同時證明的過程也是編寫程序時的思考過程,視點向前(后)移動的代碼就是這么一步一步推導出來的.以
12、圖2為例,已知視點沿矢量od方向以單位模長iiodi為速度移動,明顯,此時dx,dy是視點移動時eampos0,campos1】的增量.fodlj變量piover180=py180,實現(xiàn)由度到弧度的轉換.campos1.-=sin(90-camrotpiover180)stepcampos0.=cos(90-camrot2)*pioverlso)*step證明:根據(jù)三角函數(shù)公式得出:dy=sin(looc)l10d0zaod=camrot21doc=90-aold.zdoc=90-camrotu】sin(ldoc)=sin(90.carrote1)把(90.carnrot2)轉換成弧度制,為s
13、in(90-cahoots)*pioverl80)即,sin(doc)=sin(90.camrot2).pioverl80)liodii為每次移動的單位長度,在系統(tǒng)中用變量step來表示.step=l1odi1.dy=sm(d()c)llodll=sin(90-camrot2)piover180)stepdy是campos1】的增量.campos1一sin(90-.camrot2)*pioverl80)*step同理可證:campos0一=cos(90.-camrot2).piover180)step;證畢經(jīng)過證明,語句campos1.=sin(90-.camrot2)*pioverl80)*
14、stepcampos0一=cos(90.camrot2)piover180)step可實現(xiàn)視點沿任意矢量方向向前移動.如果把增量的符號改變,則可輕松實現(xiàn)視點向后移動.即campos1+=sin(90-camrot2)*pioverl80)*stepcampos0+=cos(90.camrot2)*pioverl80)*step2.2.2向左,向右轉eamrot2是視點繞z軸旋轉的角度,camrot2】的增加或減少可使視點向量的方向向左或向右轉,實現(xiàn)代碼如下:jf(ncha】一vkleft”nchar=la)carrot2-=step;if(ncharvkrightiinchar一d)camr0
15、t【2】+=step;2.2l3抬頭,低頭camrot0】是視點向量繞x軸旋轉的角度,camrot0的增加或減少可模仿人抬頭,低頭的視線方向.因為人的頭部上下轉動角度是有限制的,所以在本系統(tǒng)中把抬頭,低頭的角度限制為一152-59之問,這樣做可以增加人機交互時的真實感.if(camrot0>-152)/如果視點與x軸夾角大于.159度,則可以抬頭if(nchar=vk-up)camrot0-=step;(下轉第l8l2頁)18122009,30(7)計算機工程與設計computerengineeringanddesign(上接第1809頁)if(camrot0<-59)/如果視點與
16、x軸夾角大于59度,則可以低頭if(ncha-r=vkdo,n)camrot0+=step;2.2.4沿x軸平移,沿z軸平移,每按一次鍵平移step個像素/沿x軸平移if(nchar=q)campos0+=step;if(ncha-=e)campos0.=sty;/沿z軸平移if(nchar=yljnchaf=vk_home)campos2一=step;if(nchar=hilnchaf=vk_end)campos2+=step;這樣,利用數(shù)學三角函數(shù)及opengl的glrotateff)和gltranslatefo兩個函數(shù)的配合使用,就可以實現(xiàn)視點的移動.上面的代碼給出的是鍵盤操作移動視點.
17、根據(jù)當前坐標和鼠標拖拽前的坐標偏移量設置camrot2】,camrot0】的值,來實現(xiàn)鼠標操作移動視點,具體實現(xiàn)代碼由于篇幅限制,就不列出了.3結束語在虛擬環(huán)境中實現(xiàn)漫游,控制視點可以使用開發(fā)工具opengl提供的函數(shù)glulookato來實現(xiàn),方便并且可以降低編程難度,在實際開發(fā)中也可以使用自己開發(fā)的視點移動算法,像本例利用三角函數(shù)實現(xiàn)視點控制算法,這樣做雖然比使用glulookatoi數(shù)消耗資源大,因為該算法使用模型變換,所以每次移動視點時都要同時移動整個3d模型.但是,這種方法不用計算視變換,在后期真實感繪制時,燈光的位置不會隨著模型的變換而變換,它總是和用戶保持不變的相對位置,又降低了解決實際問題的難度.參考文獻:【1opengl體系評審委員會,masonwoo.opengl編程權威指南m.吳斌,譯.3版.北京.r國電力出版社,2001.毛偉東,唐明理.三維游戲設計師寶典m.成都:四川出版集團,2005.郭兆榮,李菁,王彥.visualc+opengl應用程序開發(fā)m.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工地安全管理合同樣本
- 雙搖桿機構課程設計
- 2024年建筑公司內部工程承包協(xié)議模板
- 標準土地轉讓協(xié)議合同范本
- 機械設備買賣合同實例
- 賓館承接合同模板
- 2024年軟件技術協(xié)議合同
- 鋼絲繩軌道平車課程設計
- 行紀合同范本2024年
- 房產(chǎn)代理銷售協(xié)議
- 教科版五年級科學上冊全冊教學設計
- 腐蝕與腐蝕控制原理
- 涉警輿情培訓課件模板
- 養(yǎng)殖行業(yè)背景分析
- 馬戲團活動方案
- 政府會計童光輝課后習題答案
- 當代大學生幸福感課件
- 張劍簡要的創(chuàng)業(yè)計劃書
- 鋼筋工程量計算規(guī)則
- 2024年江西贛州城投工程管理有限公司招聘筆試參考題庫含答案解析
- 五年級科學 《光的反射》 一等獎
評論
0/150
提交評論