?

基于Vega平臺的視點控制技術的研究與設計

2012-07-13 03:07王傳喜
電子設計工程 2012年5期
關鍵詞:視景視點焦點

王傳喜,趙 剛

(四川大學 電子信息學院,四川 成都 610064)

視點是計算機圖形學中的概念,作用類似于攝像機的鏡頭或者人的眼睛。視點控制的過程,實質上就是模型視圖變換的過程。視點控制包括控制視點位置和控制視點方向,其中視點的位置決定了視點與觀察者之間的距離,視點的方向決定了觀察對象是否可見。在觀察運動物體的時候,為了有充分的時間觀察它,就需要視點的速度和物體運動的速度相同。

在Vega環境中底層化了4種視點定位模式,分別是動態定位視點模式 (Motion Model)、束縛定位視點模式(Tether)、導航路徑定位視點模式(Path Navigator)、手動定位視點模式(Manual)[1]。其中束縛定位視點模式包括跟隨束縛、固定束縛、旋轉束縛3種模式;Vega環境中視點控制的過程,類似于人眼觀察環境的過程。如果視點控制不合理,即使三維模型很精、仿真系統的功能很完備,同樣導致三維視景仿真的效果不佳。

在三維視景仿真的高性能軟件Vega平臺上,文獻針對視點的研究有兩類:一是通過調節視角觀察一個靜止的物體[2],另一種是僅僅用Lynx編輯視點[3]。對用Lynx編輯ADF文件、Vega API編程、外部輸入設備等,聯合實時動態控制視點的文獻沒有闡述清楚。文中正是基于手動定位視點模式,設置合理的算法,通過Vega API編程和鍵盤聯合實時動態控制視點的。

1 視點控制的算法設計

1.1 數學模型的建立

將運動的物體A的坐標記為A點,將運動的物體B的坐標記為B點,將線段AB的中點記為M點,且M點是焦點。為了實時觀察到兩個運動物體的全過程,需要合理的設置視點,因此采用延長BA到C點,線段AC的長度為dAC,設視點和C點的高度值相同,即視點和C點在同一水平面上,作CN垂直與CB,使線段NC的距離為dNC,則N點的三維坐標就是視點的三維坐標。其視點與物體空間位置關系如圖1所示。

圖1 視點與物體空間位置關系圖Fig.1 Spatial location diagram of the viewpoint and objects

1.2 焦點和視點坐標的解算

C點和N點都在Z0=z的平面內,則N(xN,yN,zN),其中:

則N(xN,yN,zN)就是需要定位的視點。

2 視點控制的實現

利用上述視點控制算法,在三維視景仿真平臺Vega上,用Lynx編輯好ADF文件,通過實時獲取運動物體A和運動物體B的坐標,調用視點控制的算法實時計算出視點和焦點坐標,利用Vega API編程就可以實時觀察動態運動物體A和運動物體B運動的全過程、且可以通過鍵盤動態調節視點。在編寫Vega程序之前,應該清楚Vega程序架構和主要執行順序等。其系統工作流程圖如圖2所示。

2.1 Lynx配置ADF文件

運行Vega應用程序前,需對各種參數初始化,運行期間保持參數的不斷更新。各種參數都存放在ADF文件中,Lynx界面實質是用來編輯ADF文件的[4]。將需要用的模塊中的特定參數進行修改,其他的參數使用Lynx界面提供的缺省值。主要配置為:將兩個運動體模型、地景模型加入到場景中,設置運動模型的運動模式,利用路徑工具(Path Tool)添加運動體運動的導航路徑,將場景運動體的定位方法設置成路徑導航。為了滿足實時改變觀察者位置的要求,將視點定位方式設置成手動。

圖2 系統工作流程圖Fig.2 Flow chart of the system operation

2.2 關鍵的Vega API編程

Vega提供了完整的C語言應用程序接口API和豐富的函數庫。在用視點模塊設計和操作視點時,Vega也提供了相應的類和函數。用Lynx編輯ADF文件,并解算出視點和焦點的位置信息后,在VC6.0的環境中,調用Vega API開發庫函數實現視點調節的功能。利用Vega實時的獲取兩個運動體的位置信息,并通過視點控制算法計算出焦點M和視點N的三維坐標。視點定位方法是視點相對于運動體A相對靜止,因此視點定位采用相對于本機的手動STATIC視點,并使視點始終注視焦點。兩個運動體在運動的過程中,它們的坐標位置是不斷變化、持續更新的,引起焦點也是實時變化的。通過Vega API函數調節視點的關鍵代碼如下:

pos0=vgNewPos();

//新建一個三維位置

vgPosVec(pos0,xobs,yobs,zobs,0,0,0);

//對三維位置賦值

vgProp(obs,VGOBS_TETHERSTATE,VGOBS_STATIC);

//設定視點的定位方式為手動定位

vgPos(obs,pos0);

//將三維位置信息傳遞給視點

vgPosVec(pos0,xmiddle,ymiddle,zmiddle,0,0,0);

//設定焦點的三維位置信息

vgProp(obs,VGOBS_LOOKAT_TARGET,VGOBS_L_POS);

/

/設定視點的屬性是觀察具體的三維坐標點

vgObservLookatPos(obs,pos0);

//設定視點觀察的是焦點信息

2.3 鍵盤動態調節視點

在三維實時視景仿真系統中,為了獲得最佳的觀察效果,需要對視點調試算法中的dAC和dNC的大小實時動態的調節。在三維視景仿真中,習慣并普遍流行用鍵盤控制運動這種操作方式。因此采用鍵盤實時調節dAC和dNC的大小,協同控制視點的方法。 其中 keyInput(vgWindow*win)[5]函數用于響應所有的鍵盤事件,實際上處理鍵盤的函數是vgGetWinKey(vgWindow*win),此函數返回被按下鍵的相應的ASCII碼整數值[6],*win代表指向Vega窗口的指針。幀循環中加入鍵盤輸入事件,就可以通過鍵盤動態調節視點相對于運動體A的相對位置,優化三維視景仿真系統中的視點調節,增加沉浸感。其按鍵協同調節視點的定義如表1所示。

表1 按鍵協同調節視點的定義Tab.1 Definition of keyboard collaborative control viewpoint

3 Vega仿真結果

在Vega視景仿真平臺上,以飛機為例,通過實時動態的控制視點,實時逼真的再現了飛機B從遠方逐漸向飛機A接近的全過程,且可以通過鍵盤實時動態調節視點,仿真效果良好。飛機A與飛機B的距離是698 m的仿真圖如圖3所示。飛機A與飛機B的距離是172 m的仿真圖如圖4所示。

圖3 兩架飛機距離是698 m的仿真圖Fig.3 Distance of two plane:698 meter

4 結束語

文中在三維視景仿真的高性能軟件Vega平臺上,深入研究視點控制的基本原理,建立了三維數學模型,提出了用向量解算動態的視點和焦點位置的方法,借助Vega API編程和外部輸入設備,實現了實時動態觀察兩個物體運動的全過程,并且可以用鍵盤協同控制視點,驗證了視點控制算法的正確性、有效性,提高了三維實時視景仿真直觀性、靈活性、可控性,增強了視景仿真的真實性、實時性和交互性。本項視點控制的研究具備較好的通用性,對于某些對視點要求較高的三維視景開發系統有較大的推廣價值,對于基于底層的OpenGL視景仿真開發也有一定的借鑒意義。

圖4 兩架飛機距離是172 m的仿真圖Fig.4 Distance of two plane:172 meter

[1]龔卓蓉.Lynx圖形界面[M].北京:國防工業出版社,2002.

[2]陳亮,歐陽清,劉志強.虛擬艦船艙室的無遮擋顯示研究[J].艦船電子工程,2010(1):156-159.

CHEN Liang,OU YANG-qing,LIU Zhi-qiang.Research on accessibility show in the virtual Scene of a cabin[J].Ship Electronic Engineering,2010(1):156-159.

[3]宋志明,康鳳舉.視景仿真的關鍵技術[J].計算機應用,2004(5):67-68.

SONG Zhi-ming,KANG Feng-ju.Key techniques in scene simulation[J].Computer Applications,2004(5):67-68.

[4]MultiGen-Paradigm Inc.Lynx User s Guide(Version 3.7)[M].Dallas:MultiGenPar-adigm Inc,2001.

[5] MultiGen-Paradigm Inc. Vega Programmers Guide(Version3.7)[M].Dallas:MultiGenPar-adigm,Inc,2001.

[6]王乘,李利軍,周均清,等.Vega實時三維視景仿真技術[M].武漢:華中科技大學出版社,2005.

猜你喜歡
視景視點焦點
焦點
虛擬現實技術在游戲設計中的應用及研究
“兩會”焦點
本期焦點
焦點
視點
讓你每天一元錢,物超所值——《今日視點—2014精萃》序
兩會視點
全回轉拖輪運動建模與視景仿真
基于Vortex與Vega Prime的車輛模擬器動力學與視景仿真
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合