GLS-地平仪ADI制作

简介: 文章目录制作ADI目的设置工作环境GL仪表单元开发创建遮光板Texture Chooser的省略号按钮Texture Chooser对话框纹理的贴图效果创建ADI Ball创造一个光源创建水平bar编译并运行代码开发添加测试属性添加属性来处理Pitch/Roll计算包含glsutil.h的效用函数编译+运行+测试包含glsutil.h的效用函数编译+运行+测试

制作ADI


地平仪(ADI, Attitude Direction Indicator)用于让飞行器驾驶员知道飞行器的俯仰角和翻滚角。

目的

image.png

GL仪表单元开发

step 1: 打开上述”_adi.gls”文件,后清空GL的Geometry窗口的所有Object。


step 2: 打开Application窗口,命名window title为adi,并设置窗口的初始大小为512 X 512。


step 3:点击工具栏中工具上的箭头,在打开窗口中按下述图中红框圈中的内容进行设置。

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

添加属性来处理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) );


\7. }


包含glsutil.h的效用函数

因为Calculate()函数中用到了ramping函数,而这些函数包含在头文件”glsutil.h”内,故该头文件需要被添加到我们的类中。


step 1: 在”Code”选项卡中选中”file _adiApp.h”选项,在代码输入框内输入如下内容:


\1. #include


编译+运行+测试

ADI动画般的动起来,就是通过效用函数RampFloat()传递到Pitch和Roll的值。



image.png

目录
相关文章
|
8月前
|
前端开发 JavaScript 编译器
聊聊制作网站那些事!
聊聊制作网站那些事!
46 0
|
4月前
在微信小游戏制作工具中制作一个下雨的效果
在微信小游戏制作工具中制作一个下雨的效果
29 0
|
4月前
水晶头制作
水晶头制作。
124 44
|
11月前
|
容器
如何在微信小游戏制作工具中快速的制作一个血条?
如图,添加了两个血条的图片,一个当作背景,一个当作前景,并且把这两个图片放到了一个“血条1”容器中,另外增加了一个“打你丫的”按钮,用来模拟攻击,点击“打你丫的”按钮,血条就会掉血。
150 0
|
11月前
|
搜索推荐 开发工具 Android开发
更“大”的微信小游戏制作工具
为什么这么久都不开发新功能了呢?因为人手和资源有限。这个可能跟很多人想的不一样,这个不是微信的产品吗?腾讯公司会没人没资源?大公司的实际情况可能还真跟很多人想的不一样。微信小游戏制作工具背后的团队不大,甚至比你想要的还要小,而且团队除了需要负责这个工具的维护之外,还有很多其它的事情需要处理。
182 0
|
传感器 IDE JavaScript
如何制作一个水平仪|学习笔记
快速学习如何制作一个水平仪。
687 0
如何制作一个水平仪|学习笔记
|
JavaScript 安全 Windows
|
人工智能 Python
不到100行代码制作各种证件照
不到100行代码制作各种证件照
259 0
不到100行代码制作各种证件照
GLS-高度表制作
文章目录 制作高度计 目的 配置工作环境 Object的设计 创建背光板(Bezel) 创建电动/气动开关 创建气压设定旋钮 创建高度计指针 创建高度计的里程表 创建气压计表 创建电动/气动显示标识 创建仪表的阴影 编译测试 代码开发 添加测试属性 添加属性来处理Altitude和Barometer Initialize Calculate 添加效用函数的头文件. Object的回调
173 0
GLS-高度表制作