前言

近年来,无人机的发展越发迅速,既可民用于航拍,又可军用于侦察,涉及行业广泛,也被称为“会飞的照相机”。但作为军事使用,无人机的各项性能要求更加严格、重要。

本系统则是通过 图扑软件( Hightopo) 的HT for Web产品来搭建的一款 无人机 3D 可视化系统,通过对无人机及其信息的全景展示来模拟无人机状态的监控。

系统中包含 4 种展示模式:实体模式 、热力模式、线框模式和内部模式,通过飞机下方操作按钮即可进行模式切换。

实现过程加载界面采用 2D 拓扑组件进行绘制,全矢量化图标,与传统的 png、jpg 等格式的图片相比,完美适配移动端、PC 端、大屏等各种尺寸及分辨率屏幕,不会出现失真情况。

无人机及周边信息面板采用 3D 引擎进行场景搭建,用户可从场景任意位置对无人机进行查看。

动画过程采用产品提供的动画函数 ht.Default.startAnim 来驱动图形属性值的改变,应用其 Time-Based 的方式,只需要指定动画周期 duration 的毫秒数,由系统去计算帧数或 action 函数被调用的次数,以保证更加高效、平滑的进行动画过程。

界面

加载界面中通过动态改变图形的属性值来展现加载进度,加载完毕后通过动画的 finishFunc 调用 hidden2d 方法来改变图形的透明度,在此之后通过 moveCamera 将场景内视角拉近,从而实现淡出到淡入的效果(即离开加载界面进入到 3D 场景中)。与此同时改变图形在 3D 场景中位置来实现各形态的无人机合为一体以及将对应按钮分离。

2D 界面的制作是绘制了一张图纸,而 logo 则是制作了一个图标,一个图标可以在图纸中进行多次使用,并可展示不同的样子。下图中右侧的四个 logo 就是同一个图标,分别展示了不同的裁切方式以及透明度,系统中 logo 的进度条效果就是动态的去改变图标的裁切比例来实现,而界面的淡出效果则是改变透明度。整个图标的制作是绘制不同的图形组合而成,这些图形我们也可以去改变颜色,形成左侧的 logo 样式。

无人机形态切换

无人机主体形态分为三种:实体模式、线框模式和热力模式。通过点击下方按钮,可切换至按钮所对应的形态。切换的过程中,将目标形态进行显示,并分别上下移动目标形态和原形态,使用户可以短暂的进行同时查看,之后再回归原位并将原形态进行隐藏。隐藏的方式则有所不用,线框模式是改变线框颜色,其余两种模式则是调整模型的透明度。这里的线框是根据模型的轮廓生成的,通过 3D 引擎自动计算描绘,非常便捷。

通过 3D 引擎,我们可以生成立体图形,也可以添加导入的模型,图形的位置由 x、y、z 三个方向的坐标来确认,而坐标轴汇聚的圆点则是图形的锚点,无人机前方旋转的圆环则是将锚点调整到圆环中心后,操纵 rotation 属性进行转动 。在系统中线框状态的无人机则是像图中左侧的球体这样生成的,如果我们将图形的透明度调为 0,则只显示线框的样式。

内部结构

在线框模式下,大家会发现按钮的上方出现了一个小按钮,点击它就可以进入到无人机的另一个状态,在这里我们除了可以看到线框,还能够接触到无人机的内部结构,查看它的每一个部件。进入的过程会将场景内的其它图形隐藏,将内部结构显示出来。// 内部模式function moveToInternal(){  const width = background.getWidth();   // 获取背景当前宽度  const beginLeft = -(width / 2 - 960);   // 计算两侧节点起始位置  const beginRight = width / 2 + 960;  ht.Default.startAnim({    duration: 2000,    easing: t => {      return t;    },    action: (v, t) => {      linePlane.s('wf.color', 'rgba(64,173,152,' + (1 - v) + ')');      hiddenRing(v);    },    finishFunc: () => {      dm3d.each(e => {          e.s('3d.visible', false)      })      linePlane_internal.each(e => {        e.s('3d.visible', true);      })      ht.Default.startAnim({        duration: 1000,        easing: t => {          return 1 - (--t) * t * t * t;        },        action: (v, t) => {          title.setY(-50 + (70 + 50) * v);          returnButton.setY(1095 + (1020 - 1095) * v);          leftShape.setX(beginLeft + 130 * v);          rightShape.setX(beginRight - 130 * v);        }      })    }  })}

接下来,我们探索一下进入内部模式时,从四周缓缓移入窗口的图形又是怎么实现的

现如今,终端的屏幕分辨率各式各样,很多网页在开发前期都会选择响应式布局或自适应式布局,而 HT for Web的 2D 拓扑组件除了提供矢量绘制,还提供了一套相契合的布局方式。从上图中我们可以看到,红框中的部分是最开始的加载界面,而红框四周的部分则是内部模式中移入的部分,系统中的加载页面与此不同,正是因为添加了布局方式。

首先我们将红框中背景图片选为整个页面根节点,修改它的 fullscreen 属性为 fill,并为其添加全屏锁定的方式。其次将根节点设置为其余节点的吸附节点,并为其余节点修改合适的布局方式。这样背景图片就会填充整个界面,而四周节点的位置则始终保持在背景图片的外侧,在加载界面中就不会显示出来了。内部模式将四周节点移动至界面内,也是通过修改位置来实现的,但是因为全屏锁定方式设置为垂直,所以背景的宽度被改变,左右两侧节点的移动则需要在获取到当前界面显示宽度后去计算移动位置。

总结

现如今,信息化快速发展,智能化工具成为了新生产力出现在我们的生活中。与此同时,工业互联网的概念也随之诞生,将人、数据、设备联系到了一起,而可视化界面则可以很好的将数据和设备进行展示,方便管理的同时也更加安全、高效。

HT for Web提供了 2D、3D 两种模式的可视化方式,它功能强大的同时也易于学习使用,有兴趣的同学也可以来体验一下。

基于html的论坛系统,科技多元化:基于HTML5WebGL的无人机3D可视化系统-专业自动化论坛-中国工控网论坛...相关推荐

  1. dcs常用的冗余方式_关于DCS系统的IO冗余设计的相关问题-专业自动化论坛-中国工控网论坛...

    与同行或客户交流,常常听到关于DCS系统的冗余设计与冗余机制方面的疑惑,今天在工控网又看到类似的帖子,有感而发,写了一些相关的内容,并提供UW500 DCS系统冗余结构图,希望同行过来进行技术探讨: ...

  2. 柏楚系统和倍福系统哪个好_西门子和倍福系统优劣对比-专业自动化论坛-中国工控网论坛...

    本人熟悉西门子,倍福有一部分了解,大致说一下: 1,品牌 西门子的市场占有率要高一些,但在一些特殊行业应用,倍福也非常好,比如在风电控制.懂西门子的人要多于懂倍福的,支持更容易找到. 2,硬件 西门子 ...

  3. PKS310装服务器要什么系统,#控制系统常规备份操作#​分享和交流下PKS310430的备份-专业自动化论坛-中国工控网论坛...

    由于我的电脑问题上传图片老报错,就没有一张一张上传. 采用word附件! 码字不易 象征性收点积分! 分享和交流下PKS 310 430的备份 一.组态策略的备份 一般我们采取的是导出cb中的组态:如 ...

  4. 最严谨的计算机语言p,一款全新的 高级PLC编程语言 P语言 简介-专业自动化论坛-中国工控网论坛...

    几年前,我带研究生做了个"高级PLC编程语言[P语言]",不知是否有意义? 现贴出看看,望指点,指教.谢谢! 摘要:本文介绍了一款国产的.自主的.全新的计算机高级语言[简P语言]. ...

  5. 直连获取串口服务器ip,能够进行串口modbusRTU和以太网modbus-TCP协议转换的串口服务器,并提供好用的MODBUS调试工具-专业自动化论坛-中国工控网论坛...

    ---------------------------------------------------------------------------------------------------- ...

  6. 三菱plc两个16转换32位_三菱FX2NPLC如何将十进制数转换成十六进制-专业自动化论坛-中国工控网论坛...

    发表于:2010-08-20 12:42:43 18楼 7.1.4 十进制数转换成二.十六进制数 1 方法一 口诀:除N取余,逆序排列. [例3]K 200=B? 200÷2 = 100•••0 LS ...

  7. 昆仑通泰历史数据导出到u盘_MCGS配方组导出到U盘案例-专业自动化论坛-中国工控网论坛...

    说实话,第一次玩昆仑通态的屏,客户要求的功能又很复杂,真是翔都出来了.为了各位同行的福祉,开始慢慢写一些实际应用上的东西,希望大家少走歧路,如果觉得有用就点个赞,觉得小儿科就"切" ...

  8. plcst语言编程教程_PLC ST语言编程之我的心得-专业自动化论坛-中国工控网论坛...

    以前编程都是习惯用梯形图,每次编运算程序,都得写很多条运算程序.调试且不说,就光重复使用就得复制好几遍,还要一遍一遍的改寄存器地址,很是麻烦.一次偶然的机会,我用到了一款PLC可以使用ST 语言编程的 ...

  9. pks与终端服务器通讯,pks与moxa串口服务器通讯组态-专业自动化论坛-中国工控网论坛...

    PKS MODBUS RTU通讯简介 一.Terminal Server设置 1.首先将需要与Terminal Server通讯的本机IP地址设置为10.0.1.10(假设). Terminal Se ...

最新文章

  1. python dpkt 解析 pcap 文件
  2. java恶作剧小程序_一个Java恶搞小程序
  3. JVM - 解读GC中的 Safe Point Safe Region
  4. 个人发卡网搭建源码_免费建设一个个人网站到底能不能实现
  5. 怎样在数组末尾添加数据_如何利用C++实现可变长的数组?
  6. java 获取所有带指定注解的类名_SXT DAY023 反射和注解
  7. linux查看报警信息,linux_监控zabbix微信报警详细步骤
  8. 理解Lucene中的Query
  9. Java实用教程-Java基本语法-Java程序的构成
  10. c执行cmd pdf2swf_PDF在线翻阅开发经验(FlexPaper+SWFTools+SaveAsPDFandXPS)【转】
  11. flash cs4 和 flex builder 联合开发
  12. 翻译记忆软件-塔多思TRADOS经典教程_1
  13. Mac谷歌浏览器关闭自动更新,下载历史版本方法,解决不自动提示保存密码的问题
  14. 域名和服务器IP地址有什么关系
  15. [转载]Html 特殊符号 让版权符号更美观_几何途行_新浪博客
  16. 俄勒冈之旅_俄勒冈州波特兰市严格禁止面部识别技术
  17. Ubuntu 12.04安装QQ2012(12.10也可以,试过了的,其他版本没事过)
  18. C语言美化控制台命令
  19. EVE:[globbing] unmatched close brace/bracket in column 6
  20. 随机变量的定义分类和各种主要概率密度分布介绍

热门文章

  1. Python中的and、or及not
  2. 注册机You can only apply patch when licence screen appears
  3. vscode设置自动保存步骤
  4. XD文件转换为sketch的三种方法
  5. 英国人笑谈金融危机(轻松一刻)
  6. Linux:RAID配置
  7. thinkcenter电脑重置
  8. 基于Docker安装Jenkin并部署项目
  9. 【高速数字化仪应用案例系列】虹科Spectrum在天文领域的应用
  10. leecode 149. Best Time to Buy and Sell Stock