天天看點

GLS-地平儀ADI制作制作ADI

制作ADI

地平儀(ADI, Attitude Direction Indicator)用于讓飛行器駕駛員知道飛行器的俯仰角和翻滾角。

目的

GLS-地平儀ADI制作制作ADI

GL儀表單元開發

step 1: 打開上述”_adi.gls”檔案,後清空GL的Geometry視窗的所有Object。

step 2: 打開Application視窗,命名window title為adi,并設定視窗的初始大小為512 X 512。

step 3:點選工具欄中工具上的箭頭,在打開視窗中按下述圖中紅框圈中的内容進行設定。

GLS-地平儀ADI制作制作ADI
GLS-地平儀ADI制作制作ADI
GLS-地平儀ADI制作制作ADI
GLS-地平儀ADI制作制作ADI
GLS-地平儀ADI制作制作ADI
GLS-地平儀ADI制作制作ADI
GLS-地平儀ADI制作制作ADI
GLS-地平儀ADI制作制作ADI
GLS-地平儀ADI制作制作ADI
GLS-地平儀ADI制作制作ADI
GLS-地平儀ADI制作制作ADI
GLS-地平儀ADI制作制作ADI

添加屬性來處理Pitch/Roll

“Pitch”屬性來處理object關于x軸的旋轉,”Roll”屬性來處理關于z軸的。

step 1: 建立一個名為”Pitch”的float型屬性,并擁有為0.0f的初始值。

step 2: 将下屬代碼添加到屬性的設定函數内(即void Pitch( const float& value )):

\1. //Clamp the incoming values to a range between -90.0f and 90.0f

\2. _pitch = CLAMP_VALUE(value, -90.0f, 90.0f);

\3. adi_ball->DynamicRotate(_pitch, X_AXIS);

該段代碼将可以實作”adi_ball”以x軸為中心在(-90.0f, 90.0f)的範圍内動态旋轉的功能。

step 3: 建立一個名為”Roll”的float型屬性,并擁有為0.0f的初始值。

step 4: 同樣将下屬代碼添加到屬性的設定函數内:

\1. // Clamp the incoming values to a range between -180.0f and 180.0f

\2. _roll = CLAMP_VALUE(value, -180.0f, 180.0f);

\3. adi_ball->DynamicRotate(_roll, Z_AXIS);

計算

函數Calculate()用于周期性地驅動儀表,且在每幀渲染前被調用。若函數體過大,就會對程式的實時性造成了一定的影響。

step 1: 展開”Class Method”後選中Calculate()函數,在代碼輸入框中追加下屬代碼:

\1. if (Testing())

\2. {

\3. // Exercise the Pitch and Roll properties with

\4. // input values generated from RampFloat.

\5. Pitch( RampFloat(time / 2, -25, 40) );

\6. Roll( RampFloat(time / 3, -30, 30) );

\7. }

包含glsutil.h的效用函數

因為Calculate()函數中用到了ramping函數,而這些函數包含在頭檔案”glsutil.h”内,故該頭檔案需要被添加到我們的類中。

step 1: 在”Code”頁籤中選中”file _adiApp.h”選項,在代碼輸入框内輸入如下内容:

\1. #include

編譯+運作+測試

mpFloat(time / 3, -30, 30) );

ADI動畫般的動起來,就是通過效用函數RampFloat()傳遞到Pitch和Roll的值。

GLS-地平儀ADI制作制作ADI

繼續閱讀