前言

近年来随着引力波的发现、黑洞照片的拍摄、火星上存在水的证据发现等科学上的突破,以及文学影视作品中诸如《三体》、《流浪地球》、《星际穿越》等的传播普及,宇宙空间中那些原本遥不可及的事物离我们越来越近,人们对未知文明的关注和对宇宙空间的好奇达到了前所未有的高度。站在更高的立足点上,作为人类这个物种中的一员,我们理所应当对我们生活的星球、所在的太阳系有一定的认识,对 8 大行星各自的运行轨道、质量、资源存储量甚至是地形有一定的了解。

本系统采用 Hightopo 的 HT for Web 产品来构造轻量化的 3D 可视化场景。

Solar System 这套系统主要用于两种场景:

1.作为科研成果、新发现的载体,做 3D 太空数据可视化呈现,用于向普通民众科普太阳系的构成、各行星组织结构等知识,可置于博物馆大屏、学校大屏,也可用于互联网产品,作为航空航天类网站的门户页、展示页。

2.作为宇航局、航空航天相关研究机构的驾驶舱,在 3D 可视化界面中对行星相对位置、星体状态、星体气象、星体地形有一个直观快速的了解,在宇宙空间探索越来越成功的当下,在数据传输技术得到速度和质量上的突破后,甚至可以通过该系统对行星状态做实时监控呈现,对宇航员的作业点、作业情况做在线监控。在配置上人造卫星轨道、监控区域的数据后,本系统可用作卫星系统,描述覆盖范围和呈现观测数据。

预览地址: www.hightopo.com/demo/solar-…

界面简介及效果预览

主题一:太阳系检测系统

本系统主要展示8大行星绕太阳公转轨道、相对位置、星体质量、资源含量等信息。

右上角行星按钮会触发视角切换,切换至相对应的行星观测点

this.g3d.flyTo(data, {animation: {duration: 1000,easing: function (t) {return (2-t) * t;}},distance: 2000
});

效果:

该主题提供两种视角,鸟瞰和斜视,其它视角可以通过鼠标自行旋转

两种视角的切换由右上角第二、三个圆形按钮触发。

调用 moveCamera 方法重新设置相机位置:

/*** 切换镜头* @param {Number} num - 主题编号*/
triggerThemeCamera(num) {//...this.g3d.moveCamera([ 6742.5, 4625.6, -836.7],[0, 0, 0],{duration: 500,easing: function (t) {return (2-t) * t;}});
}

效果:

信息框默认采用跟随星体一起旋转,这可以达到俯视视角不出现信息框,看起来更清爽。

如果需要查看星体详情,可以通过点击右上角播放按钮,该按钮会触发所有信息框朝向屏幕方向。

通过改变消息面板 shape3d.autorotate 来实现:

setBillboardToCamera(flag) {const list = this.dm3d.getDatas();list.each( item => {if (item instanceof ht.Node) {if (/_board$/.test(item.getTag())) {if (flag) {item.s('shape3d.autorotate', true);}else {item.s('shape3d.autorotate', false);}}}});
}

效果:

主题二:戴森球星体 3D 拓扑结构

本系统主要展示用户所点选的行星与其它星际物质的相互作用,也可用于展示行星周围卫星的分布情况,以及展示星体间引力、辐射范围等的拓扑结构。

鼠标悬停在一个星体上会触发选中状态,右侧会监控该星体的相关数据。

通过监听 mousemove 后调用 resetPinkOutside 方法,将粉色边框重新设置到悬停的 node 位置:

/*** 重新设置边框* @param node*/
resetPinkOutside(node) {const pinkOutside = this.dm3d.getDataByTag('billboard4');pinkOutside.setPosition3d(node.getPosition3d()[0],node.getPosition3d()[1],node.getPosition3d()[2]);
}

效果:

主题三:星体气象、地形检测系统

该主题主要用于呈现在场景二中点选的星体上具体的检测点位,点位周边的等高线在左侧自动生成一个 3D 的地形和闪烁的点位示意,并与右侧的检测点位一一对应。

该功能可用于地形的呈现,也可以用于星体大气层的气象状态展示。

左下角实时监控点位的地质热量、气象流动数据。

点选右侧对应检测点,会触发右侧点的缩放动画,同时左侧对应的 3D 点位也会同步变化,其它的点则调用 setAnimation(null)

setTwinkleToPoints(flag) {//...if (flag) {if (point1_3D && point1) {if (this.animationFlags.twinklePointNum === 1) {point1_3D.setAnimation({change: {},start: ["change"]});point1.setAnimation({width: {},height: {},start: ["width", "height"]});} else {SolarSystem.disableTwinkle(point1_3D, point1);}} else {SolarSystem.disableTwinkle(point1_3D, point1);//...}}
}

效果:

关联:三个主题(系统)的联动

三个系统是互相关联的,相互切换的方式有三种。

1.点选左上角的切换按钮:

左上角部分均为导航栏的响应范围,鼠标悬停时会改变动画控制器 animationFlags 的对应值,触发导航栏落下来,悬停和点选按钮会通过 setImage 方法设置不同的背景

this.g2d.getView().addEventListener('mousemove', event => {const node = this.g2d.getDataAt(event);let tag = '';if (node) {tag = node.getTag();}if('navigator' === tag){if(!this.animationFlags.navigatorRotate && this.animationFlags.navAnimationDone){this.animationFlags.navAnimationDone = false;this.animationControl(0, true);}this.resetButtonStyle();}else if (/^navButton/.test(tag)) {this.animationFlags.navButtonOnHover = true; // 防止动画过快导致无法点选按钮this.resetButtonStyle();if (!node.a('buttonOnClick')) {node.setImage('buttonOnHover');}}else {this.resetButtonStyle();this.animationFlags.navButtonOnHover = false;if(this.animationFlags.navigatorRotate && this.animationFlags.navAnimationDone){setTimeout(() => {if(!this.animationFlags.navButtonOnHover){this.animationFlags.navButtonOnHover = true;this.animationFlags.navAnimationDone = false;this.animationControl(0, false);}}, 500);}}
}, false);

效果:

2.点击最下方的标尺栏,分别对应 3 个模块:

3.点选主题一中的行星跳转到的主题二的拓扑结构,点选主题二的星体跳转主题三的地形,主题三无法向前关联,只能通过前两种方式进行跳转:

总结:

该系统使用轻量高效的 ht 库,矢量平面信息与 3D 对象进行关联,并采用 3D 拓扑可视化呈现,相对位置清晰直观,3D 地形与等高线图对应,海拔高度和相互遮挡关系都可以准确把握。

该系统满足了最基本的太空场景和数据呈现的框架,更为详尽的数据呈现和业务功能有待相关的工作人员根据具体的业务场景提出更详尽的需求。

基于 HTML5 + WebGL 的太阳系 3D 展示系统相关推荐

  1. 基于 HTML5 + WebGL 的宇宙 3D 展示系统

    前言 近年来随着引力波的发现.黑洞照片的拍摄.火星上存在水的证据发现等科学上的突破,以及文学影视作品中诸如<三体>.<流浪地球>.<星际穿越>等的传播普及,宇宙空间 ...

  2. 基于 HTML5 WebGL 的发动机 3D 可视化系统

    前言 工业机械产品大多体积庞大.运输成本高,在参加行业展会或向海外客户销售时,如果没有实物展示,仅凭静态.简单的图片说明书介绍,无法让客户全面了解产品,不仅工作人员制作麻烦,客户看得也费力.如果能在 ...

  3. 科技多元化:基于 HTML5 WebGL 的无人机 3D 可视化系统

    前言 近年来,无人机的发展越发迅速,既可民用于航拍,又可军用于侦察,涉及行业广泛,也被称为"会飞的照相机".但作为军事使用,无人机的各项性能要求更加严格.重要. 本系统则是通过 H ...

  4. 基于 HTML5 WebGL + WebVR 的 3D 虚实现实可视化培训系统

    前言 2019 年 VR, AR, XR, 5G, 工业互联网等名词频繁出现在我们的视野中,信息的分享与虚实的结合已经成为大势所趋,5G 是新一代信息通信技术升级的重要方向,工业互联网是制造业转型升级 ...

  5. 基于 HTML5 WebGL 的加油站 3D 可视化监控

    前言 随着数字化,工业互联网,物联网的发展,我国加油站正向有人值守,无人操作,远程控制的方向发展,传统的人工巡查方式逐渐转变为以自动化控制为主的在线监控方式,即采用数据采集与监控系统 SCADA.SC ...

  6. 基于 HTML5 WebGL 的虚拟现实可视化培训系统

    前言 2019 年 VR, AR, XR, 5G, 工业互联网等名词频繁出现在我们的视野中,信息的分享与虚实的结合已经成为大势所趋,5G 是新一代信息通信技术升级的重要方向,工业互联网是制造业转型升级 ...

  7. 基于 HTML5 WebGL 的高炉炼铁厂可视化系统

    前言 在当今 工业4.0 新时代的推动下,不仅迎来了 工业互联网 的发展,还开启了5G时代的新次元.而伴随着带宽的提升,网络信息飞速发展,能源管控上与实时预警在工业互联网中也占着举足轻重的地位,而对于 ...

  8. 工业互联网新发展:基于 HTML5 WebGL 的高炉炼铁厂可视化系统

    前言 在当今 工业4.0 新时代的推动下,不仅迎来了 工业互联网 的发展,还开启了 5G 时代 的新次源.而伴随着带宽的提升,网络信息飞速发展,能源管控上与实时预警在工业互联网中也占着举足轻重的地位, ...

  9. 工业互联网新发展:基于 HTML5 WebGL 的高炉炼铁厂可视化系统!

    前言 在当今 工业4.0 新时代的推动下,不仅迎来了 工业互联网 的发展,还开启了 5G 时代 的新次源.而伴随着带宽的提升,网络信息飞速发展,能源管控上与实时预警在工业互联网中也占着举足轻重的地位, ...

  10. html楼层效果,基于 HTML5 WebGL 的智慧楼宇可视化系统

    前言 可视化的智慧楼宇在 21 世纪是有急迫需求的,中国被世界称为"基建狂魔",全球高层建筑数量位居首位,所以对于楼宇的监控是必不可少.智慧楼宇可视化系统更多突出的是管理方面的功能 ...

最新文章

  1. 嵌入式软硬件开发中遇到的坑
  2. angular-JS模仿Form表单提交
  3. Android开发-屏幕常亮的方法
  4. 如何通过组件化提高开发效率?
  5. 10怎么设置pg接口_西门子S7300 PLC时间日期怎么读取?
  6. Web Hacking 101 中文版 十五、代码执行
  7. js 中{},[]中括号,大括号使用详解
  8. Atitit 计算机的组成与设计 目录 1. 计算机系统是由硬件系统和软件系统两大部分组成。  1 1.1. Cpu(alu+cu ) 1 1.2. 存储内存 外村 1 1.3. Io设备 鼠标
  9. Matlab 2016a 安装教程
  10. ccfb类会议有哪些_CCF推荐的国际学术会议和期刊目录修订版发布
  11. ubuntu18 搜狗输入法不显示
  12. Office/Wps日常操作小技巧
  13. 圣诞帽php,微信小程序“圣诞帽”的实现方法
  14. 常见的 360° 全景视频格式介绍及播放方式
  15. c语言指针学多久,C语言指针难学吗?
  16. SAP导入或更新某网证证书
  17. 【计算机视觉】神经网络推理训练
  18. 高斯公式(三重积分和第二类曲面积分互相转换)
  19. 六方ZnS包裹碳纳米管复合粉体/PbS纳米晶原位包裹碳纳米管的复合材料/壳聚糖包裹的多壁碳纳米管
  20. 接口测试用例设计实践总结

热门文章

  1. 扫拖地机器人预留_进阶规划,扫拖一体,小瓦扫地机器人规划版重度体验
  2. 操作系统与裸机的区别
  3. MOOC《程序设计入门——C语言》翁恺 第六周编程练习及答案
  4. 手写RPC(五) 核心模块网络协议模块编写 ---- 自定义协议
  5. CS院校解析 | 清华大学深圳国际研究生院
  6. Oracle全局索引和本地索引
  7. bluefish编辑器的配置
  8. 小米平板2刷android,小米平板2怎么刷回MIUI 小米平板2刷回MIUI教程
  9. Bootstrap知识点概述
  10. commonAncestor