/xia仔のke:itzcw.com/8968/
WebGL与Three.js入门
WebGL(Web Graphics Library)是一种JavaScript API,它基于OpenGL ES标准,允许开发者在浏览器中创建和渲染3D图形。WebGL与HTML5 Canvas元素紧密结合,使得开发者可以使用JavaScript代码直接与GPU通信,从而实现高性能的3D渲染。
Three.js是一个流行的JavaScript库,它建立在WebGL之上,提供了一个简洁的API,使得开发者更容易地创建和管理3D场景、模型、动画等。Three.js简化了WebGL的使用,使得即使是没有WebGL经验的开发者也能快速上手开发3D应用。
实战项目
在学习WebGL和Three.js的过程中,实战项目是非常重要的一部分。通过实际的项目,你可以将所学的理论知识付诸实践,解决真实世界的问题。实战项目通常包括以下几个方面:
创建3D场景:设置相机、添加几何体、设置材质和光源等。
实现物体的旋转和移动:通过修改物体的位置和旋转角度来实现。
实现交互操作:例如通过鼠标或触摸屏控制物体的旋转和移动。
优化性能:包括减少重绘区域、使用缓冲区等手段优化性能。
发布应用:将应用打包发布到Web服务器上,供用户访问。
学习资源
目前网络上有很多关于WebGL和Three.js的学习资源。例如,有些课程会涵盖WebGL基础、Three.js入门、图形学基础、模型加载与处理、纹理与材质、光照与阴影、交互与动画、优化与性能调优等内容。这些课程可能还会提供一些实战项目,让学员应用所学知识,开发并部署具有实际应用场景的Web3D应用。
此外,还有一些书籍、在线教程、视频课程和社区论坛,如Bilibili、掘金等平台,也提供了大量的WebGL和Three.js学习资源,可以帮助你更快地上手和深入学习。
通过这些资源,你可以逐步提升自己的Web3D技术水平,并为开发各种类型的交互式3D应用奠定坚实的基础。
WebGL和Three.js在现代Web开发中的地位
WebGL和Three.js在现代Web开发中扮演着重要的角色,它们极大地推动了3D技术在网页上的应用和发展。WebGL作为底层的图形渲染API,为开发者提供了在浏览器中渲染三维图形的可能性。而Three.js作为一个建立在WebGL之上的JavaScript库,它简化了使用WebGL创建和展示三维图形的过程,使得开发者无需深入了解WebGL的复杂性,也能够轻松地在网页中集成3D内容。
对推动3D技术普及的作用
WebGL和Three.js的出现降低了3D技术在Web开发中的门槛,使得更多的开发者和设计师能够参与到3D内容的创作中来。Three.js提供的丰富功能,如加载并显示模型、应用各种材质和纹理、创建灯光和相机、执行动画等,都大大简化了3D开发的流程。这不仅促进了3D技术在商业领域的应用,如在线购物、在线教育、游戏等,而且还激发了创新,因为开发者可以用3D技术来解决更多样化的问题。
未来趋势
随着技术的发展,WebGL和Three.js将继续在Web开发中发挥重要作用。随着5G和物联网时代的到来,WebGL和Three.js的技术前景将进一步得到发展,预计会有更多的创新和应用出现。同时,随着WebGL支持的增强和浏览器功能的日益强大,WebGL和Three.js也将继续成为复杂应用和图形的主要平台。因此,WebGL和Three.js不仅是当前Web开发的重要组成部分,也是未来发展的关键技术之一。
在进行Web3D应用开发时,以下几个因素会对应用的性能和用户体验产生显著影响:
性能优化
性能优化是提高Web3D应用流畅度的关键。这包括但不限于以下几点:
JavaScript压缩和模块打包:减小文件大小,提高加载速度。
渲染性能优化:使用高效的渲染技术,快速加载和渲染大规模的3D模型数据。
数据压缩与传输:采用有效的数据压缩算法和传输优化技术,减少加载时间和网络带宽消耗。
浏览器兼容性
不同的浏览器对WebGL的支持程度可能会有所不同,确保应用在主流浏览器上都能正常运行,并进行充分的兼容性测试。
移动设备适配
移动设备上的WebGL性能可能有限,而且屏幕尺寸较小。确保应用在移动设备上能够正常运行,并提供良好的用户体验。
用户体验设计
为用户提供友好的界面和控制方式,确保用户能够轻松地与3D场景交互。考虑到不同用户的设备和技能水平,使界面易于理解和使用。
网络加载和优化
3D模型和纹理文件可能较大,因此需要考虑加载时间和带宽。使用适当的压缩技术、资源懒加载和CDN等手段来优化加载性能。
安全性考虑
处理用户上传的3D模型时需要谨慎,防止潜在的安全风险。确保应用在处理用户输入和上传时具有适当的安全性措施。
综上所述,性能优化、浏览器兼容性、移动设备适配、用户体验设计和网络加载优化是影响Web3D应用性能和用户体验的关键因素。在开发过程中,应特别注意这些方面的优化和适应性调整。
WebGL和Three.js在新兴技术领域的应用前景
WebGL和Three.js作为Web开发中的3D技术,已经在多个新兴技术领域展现出了巨大的潜力和应用前景。以下是几个关键点,展示了它们在未来可能扮演的角色:
增强现实(AR)和混合现实(MR): WebGL和Three.js可以用来创建在现实世界中叠加虚拟元素的体验,这在增强现实游戏中尤其常见。通过在Web浏览器中渲染3D内容,用户可以直接在他们的物理环境中与数字对象互动,这种无缝集成的体验对于教育和娱乐领域尤为有价值。
虚拟现实(VR): WebGL和Three.js也可以用于创建虚拟现实体验,让用户沉浸在一个完全由数字构成的环境中。这种技术可以用于游戏、电影、甚至是远程工作,提供了一个全新的维度来体验内容。
Web3技术融合: Web3技术,特别是区块链,正逐渐与虚拟现实技术融合。这种融合可能会导致去中心化的虚拟世界的诞生,其中用户可以拥有和交易虚拟资产,并在没有中介的情况下参与虚拟活动。WebGL和Three.js将是实现这些虚拟世界的重要技术基础。
教育和培训: 在教育领域,WebGL和Three.js可以提供一个更加直观和互动的学习环境。无论是医学解剖、地理信息系统还是复杂的科学概念,都可以通过3D模型和模拟来教授,提高学习效率和兴趣。
娱乐和社交: 在娱乐行业,WebGL和Three.js可以用来创建互动式的音乐视频、在线游戏和社交平台,让用户在虚拟空间中与他人互动,享受沉浸式的娱乐体验。
商业和零售: 商家可以使用WebGL和Three.js来创建虚拟的商店或产品展示厅,让顾客在不受地域限制的情况下探索和体验产品。这种新型的购物体验有望改变消费者的购买习惯。
文化和旅游: 文化机构可以使用WebGL和Three.js来创建虚拟博物馆或历史遗迹的复原,让公众在家中就能享受到实地参观的体验。旅游业也可能利用这些技术来提供虚拟旅游服务。
总的来说,WebGL和Three.js在新兴技术领域的前景看起来非常广阔,它们不仅能够推动3D技术的发展,还能够为用户提供更加丰富和沉浸式的体验。随着技术的进步和市场的需求,我们可以预见这些工具将在未来几年内继续发展和演变,以满足不断变化的市场需求
、什么是3D可视化
3D可视化也就是三维可视化系统,是基于大数据、物联网、云计算等技术构建,提供直观的三维软件应用服务。
三维可视是描绘和理解模型的一种手段,是数据体的一种表征形式,并非模拟技术。它能够利用大量数据,检查资料的连续性,辨认资料真伪,发现和提出有用异常,为分析、理解及重复数据提供了有用工具,对多学科的交流协作起到桥梁作用。
二、现状
近年以来国家大力推展高新技术的发展,科技的创新,高新的技术通常需要大量的数据支撑,这时候基于大数据云计算下的数据管理就非常有必要落实到各个适用场景。例如打造智慧园区的中台基础,同时通过统一监控管理园区内的各种软硬件系统和设备,通过多维数据展示与管理,为管理者提供直观、高效、便捷、节能的管理环境。
再者针对以往的平面图分析,三维模型更具有嵌入效应且数据更直观体现在空间部分,在对适用场景下的工作帮助功不可没,例如场景3D可视化,就是以虚拟现实全景仿真再现,360°旋转,多角度切换,高空视角、第一人称视角,自动漫游与巡检,全方位总览数据中心全貌及状态。也可以在日常工作环境中、对各种设备微环境进行有效监测如;压力、温度、湿度、位移、加速、人员定位等多种可视化环境监测。当然,这块是需要强大的数据统计,像厦门邦展数字科技有限公司长期从事计算机信息系统集成的工程建设,在物联网等网络工程的硬件集成实施上经验丰富,对于数据采集有十多年的项目经验,基于数据模型为管理者提供全面的数据分析,提高信息查询、处理和交互的及时性和有效性,为智能化企业的软件打造硬件支持,强强联合。
三、政策支持
根据观研报告网发布的《中国3D视觉感知行业分析报告-行业供需现状与发展趋势分析(2022-2029年)》显示3D视觉感知行业经过数十年的发展,由早期的工业级成功向消费级拓展,且应用领域仍在不断拓宽,即将迎来快速增长时期,为促进产业发展,国家先后出台一系列政策规划:
1.应用场景
1、智慧园区
园区的管理是全方位、多层次的管理。从项目、公司到各行业、各部门的逐级监控管理问题,专业分工细化带来的资源整合及协调问题,都是园区在管理中所面临的挑战。智慧园区高效快捷负责整个园区的管理,因此建设一个强大的园区服务平台来进行支持,才能进行园区的管理、安全监测、合作单位的良性互动。
2、智慧工厂
智慧工厂连接民有企业、国有企业,通过3D可视化技术,对工业生产厂房进行真实展现,从厂房的外部环境、楼宇到厂房内部结构和视频监控生产流程均可进行立体仿真展示,并可任意角度调整场景切换。
3、智慧消防
智慧消防是利用IoT、红外线感知等技术,能很好的记录当前消防设备的位置、状态,如有损坏系统及时报修,能更好的保障消防设施的完好,提供精准的设备信息,能通过视频监控等物联网数据,进行实时动态更新,现场人员更借助数据支持更好的解决现存问题,如安全隐患或者消防演练方案,提升救援效率。
4、智慧楼宇
数字孪生概念下的楼宇3D可视化系统,是基于三维场景及IoT数据采集二者集成系统,以直观动态的形式展示楼宇内所有智能设备的空间分布以及运作情况,以悬浮信息的形式进行智能的实时监测、告警信息。
5、智慧社区
以基于数字孪生的三维虚拟化技术为基础,以数字化、可视化、智能化理念为目标,通过直观的动态形式展示小区各类建筑以及特定设备的运转情况空间分布,实现社区从宏观到微观的全方位展示和管理,主要包括停车场可视化、人口分布可视化以及安防监控可视化。
五、核心技术及优势
1、技术介绍
利用WebGL三维图形技术为企事业单位提供“3D可视化核心技术”的软件外包服务商,也是国内主要的WebGL三维图形技术开发服务商,累计为超过1000个3D可视化项目提供了技术支持。
WebGL是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。
2、产品优势
根据数据3D可视化开发库,可为特定行业用户定制3D可视化工具,供客户进行项目的二次开发和扩展。
行业的服务包括以下方案:
①数据3D可视化解决方案包括:三维建模、图形编程、数据采集、数字孪生交互解决方案
②数据中台前端展示解决方案包括:大数据分析、各类数据展示表(如:饼图、柱形图、条形图折线图等,根据需求变化)
提供数据中心的解决方案包括:IoT数据获取、数据中台(用户、内容、应用)、数据库、可视化展示等软件整体解决方案
③项目整体解决方案又包括:IoT数据采集、网络工程、数据传输、中心机房建设、系统集成
3、核心优势:
3D网页图形引擎封装的标准算法模块300余个,涵盖基础的WebGL渲染器、几何类目、着色器类目、功能算法类目、人机交互控制、物理力学类目等。
是国内首家采用draco三维图形编码格式,三维数据量只有传统obj模型数据量的三十分之一,也是国内第一家自主研发WebGL图形引擎2012年首次发布至目前已迭代115个版本,参与WebGL项目超过1000个,不仅专注3D更专注数据采集,从根本解决软硬件交互难题。
专注“数字孪生”建设,在其产品生态上,以“3D可视化”为核心,逐渐完善IoT设备接入标准化,数据中台建设,GIS平台建设,加快发展系统集成,保证行业的领先地位,Bestshow在物联网等网络工程的硬件集成实施上经验丰富,对于数据采集有十多年的项目经验,基于数据模型为管理者提供全面的数据分析,提高信息查询、处理和交互的及时性和有效性,为智能化企业的软件打造硬件支持,强强联合为客户创造价值,为产业经济赋能,自主创新。
言
工业互联网,物联网,可视化等名词在我们现在信息化的大背景下已经是耳熟能详,日常生活的交通,出行,吃穿等可能都可以用信息化的方式来为我们表达,在传统的可视化监控领域,一般都是基于 Web SCADA 的前端技术来实现 2D 可视化监控,本系统采用 Hightopo 的 HT for Web 产品来构造轻量化的 3D 可视化场景,该 3D 场景从正面展示了一个地铁站的现实场景,包括地铁的实时运行情况,地铁上下行情况,视频监控,烟雾报警,电梯运行情况等等,帮助我们直观的了解当前的地铁站。
系统中为了帮助用户更直观友好的浏览当前地铁站,提供了三种交互模式:
本篇文章通过对地铁站可视化场景的搭建,动画代码的实现,交互模式的原理解析,以及主要功能点的实现进行阐述,帮助我们了解如何使用 HT 实现一个简单的地铁站可视化。
界面简介及效果预览
地铁运行效果
地铁从站外开到站内的效果为透明度逐渐增加,速度逐渐降低。
漫游效果
上述为自动巡检的漫游效果,场景自动进行前进旋转。
监控设备交互效果
当我们点击场景中的监控设备时可以查看当前设备的运行情况,运行数据等信息。
场景搭建
该系统中的大部分模型都是通过 3dMax 建模生成的,该建模工具可以导出 obj 与 mtl 文件,在 HT 中可以通过解析 obj 与 mtl 文件来生成 3d 场景中的所有复杂模型,当然如果是某些简单的模型可以直接使用 HT 来绘制,这样会比 obj 模型更轻量化,所以大部分简单的模型都是采用 HT for Web 产品轻量化 HTML5/WebGL 建模的方案,具体的解析代码如下:
1 // 分别为 obj 文件地址,mtl 文件地址 2 ht.Default.loadObj('obj/metro.obj', 'obj/metro.mtl', { 3 center: true, 4 // 模型是否居中,默认为 false,设置为 true 则会移动模型位置使其内容居中 5 r3: [0, -Math.PI / 2, 0], 6 // 旋转变化参数,格式为 [rx, ry, rz] 7 s3: [0.15, 0.15, 0.15], 8 // 大小变化参数,格式为 [sx, sy, sz] 9 finishFunc: function(modelMap, array, rawS3) { 10 if (modelMap) { 11 ht.Default.setShape3dModel('metro', array); // 注册一个名字为 metro 的模型 12 } 13 } 14 });
上面通过加载 obj 模型之后注册了一个名字为 metro 的模型,之后如果要使用该模型可以通过以下代码来实现:
1 var node = new ht.Node(); 2 node.s({ 3 'shape3d': 'metro' 4 });
上面代码新建了一个 node 对象,通过设置 style 对象的 shape3d 属性可以把模型名称为 metro 用到该 node 对象上去,之后便是我们场景中看到的地铁列车模型。
动画代码分析
地铁动画代码的实现分析
场景中地铁的运行是通过 HT 提供的调度插件来实现,调度的具体用法可以参考 HT for Web 的调度手册,该调度主要用于在指定的时间间隔进行函数回调处理,回调函数的第一个参数为 data 图元,也就是 3D 场景中的模型节点,我们可以判断当前 data 是否为我们刚才创建的 metro 那个节点来进行后续的操作,场景中模拟了一个左开的地铁和一个右开的地铁,两辆地铁会交替出现。在 3D 场景中肯定会有坐标系,HT 中是用 x, y, z 来分别表示三个轴,所以地铁的运动肯定是改变地铁在坐标系中的位置来实现地铁的运行,地铁坐标如下图所示:
通过上图可以知道地铁在 3D 场景中的坐标系,如果要实现地铁的移动则只需要将地铁往图中所示红色箭头的方向进行移动,即 x 轴的方向,通过 setX 这个方法不断的修改地铁的位置达到地铁行进的目的,代码中通过 getSpeedByX 以及 getOpacityByX 两个方法来不断获取此时的列车速度以及列车透明度,以下为关键代码实现:
1 let metroTask = { 2 interval: 50, 3 // 每五十秒执行一次 4 action: (data) = >{ // 即上文所提回调函数 5 // 判断当时传进来的节点是否为地铁列车节点 6 if (data === currentMetro) { 7 // 获取地铁此时的 X 轴位置以及行进的方向 8 let currentX = data.getX(), 9 direction = data.a('direction'); 10 // 根据当前的 X 轴位置获取当前的列车速度 11 let speed = this.getSpeedByX(currentX); 12 // 根据当前的 X 轴位置获取当前的列车透明度 13 let opacity = this.getOpacityByX(currentX); 14 // 判断此时 X 轴位置是否超过某个值 即地铁是在某个范围内移动 15 if (Math.abs(currentX) <= 5000) { 16 // 设置当前的透明度 17 opacity !== 1 ? currentMetro.s({ 18 'shape3d.transparent': true, 19 'shape3d.opacity': opacity 20 }) : currentMetro.s({ 21 'shape3d.transparent': false 22 }); 23 // 设置当前的 X 轴位置 24 data.setX(currentX + direction * speed); 25 // 判断此时地铁的速度为 0,所以此时应该执行开门的动画 26 if (speed === 0) this.doorAnimation(currentMetro, direction); 27 } 28 // 右方向地铁开到头,进行复位 29 if (currentX > 5000 && direction === 1) { 30 currentMetro = leftMetro; 31 currentMetro.setX(5000); 32 } 33 // 左方向地铁开到头,进行复位 34 if (currentX < -5000 && direction === -1) { 35 currentMetro = rightMetro; 36 currentMetro.setX( - 5000); 37 } 38 } 39 } 40 }; 41 dm3d.addScheduleTask(metroTask);
通过以上代码可以知道地铁在运行的过程中,主要通过修改地铁的 x 轴位置来产生前进的动画,并且需要让地铁在某个区间内进行运动,需要判断边界,而且为了模拟出真实的效果需要根据地铁当前的位置不断获取当前的列车速度以及列车透明度,以下为流程图:
上图所示的为地铁进站时候的流程,当地铁停靠完毕关门后需要进行出站,此时我们只需要把地铁位置重新设置一下不为 0 即可,以下为部分代码实现:
1 currentMetro.setX(direction * 10); // 设置出站列车的位置
当执行上面那句代码之后上方的 metroTask 调度任务执行到 getSpeedByX 这个方法之后获取到的 speed 速度不为 0,因此此时会继续执行地铁行进的动画,此时的速度就是由慢至快,透明度由深至浅。以下为开门动画执行流程:
自动巡检代码的实现分析
系统中自动巡检的实现主要是通过修改 3D 场景中的 eye 以及 center 的值,HT 中提供了 rotate,walk 两个方法来控制视角的旋转以及视角的行进,rotate 方法在非第一人称模式时,旋转是以 center 为中心进行旋转,也就是围绕中心物体旋转,当为第一人称时旋转以 eye 为中心进行旋转,也就是旋转眼睛朝向方向。walk 函数同时改变 eye 和 center 的位置,也就是 eye 和 center 在两点建立的矢量方向上同时移动相同的偏移量。该系统中我没有采用 rotate 函数而是自己实现了视角的旋转,因为原本的 rotate 函数旋转某个角度会马上旋转过去而不会有一个旋转的过程,所以我重新实现了旋转的方法,该系统中视角旋转是通过不断修改 center 的数值来实现,具体实现过程原理如下图所示:
部分实现代码如下:
1 rotateStep() { 2 // 即上图辅助点 C 3 let fromCenter = this.fromCenter; 4 // 即上图 B 点 5 let toCenter = this.toCenter; 6 // 每帧转一度 7 let rotateValue = this.rotateFrame || Math.PI / 180; 8 // 辅助点 C 与 B 点之间建立一个方向向量 9 let centerVector = new ht.Math.Vector2(toCenter.x - fromCenter.x, toCenter.y - fromCenter.y); 10 let centerVectorLength = centerVector.length(); 11 // 此时旋转百分比 12 let rotatePercent = rotateValue * this.stepNum / this.curRotateVal; 13 if (rotatePercent >= 1) { 14 rotatePercent = 1; 15 this.stepNum = -2; 16 } 17 let newLength = rotatePercent * centerVectorLength; 18 centerVector.setLength(newLength); 19 let newCenterVector = centerVector.add(fromCenter); 20 // 获取旋转过程中 center 的点信息 21 let newCenterPosition = [newCenterVector.x, this.personHeight, newCenterVector.y]; 22 // 设置当前 center 的大小 23 this.g3d.setCenter(newCenterPosition); 24 }
通过上述代码就实现了场景中的视角旋转,并且可以通过修改 rotateValue 的值控制旋转的速度。
电梯动画代码的实现分析
场景中电梯是一个 obj 模型,3D 模型是由最基础的三角形面拼接合成,例如 1 个矩形可以由 2 个三角形构成,1 个立方体由 6 个面即 12 个三角形构成,以此类推更复杂的模型可以由许多的小三角形组合合成。因此 3D 模型定义即为对构造模型的所有三角形的描述,而每个三角形由三个顶点 vertex 构成,每个顶点 vertex 由 x, y, z 三维空间坐标决定,HT 中使用 vs 数组记录构成三角面的所有顶点坐标,所以如果想要让电梯运行起来,只需要把所有的顶点坐标往电梯运行的方向进行平移,以下为部分关键伪代码:
1 // vs 指的是构成电梯模型所有的三角面顶点坐标数组 2 // 由于场景中电梯的运行方向为往对角线右上方运动,所以只需要修改 x 轴以及 y 轴坐标值 3 // xStep yStep 为每次电梯运动的距离 4 setInterval(() = >{ 5 // i+3 是因为 vs 数组的顺序为 x, y, z 轴 所以每次 i 偏移三个单位大小 6 for (let i = 0, l = vs.length; i < l; i = i + 3) { 7 // 该顶点坐标下一个 x 轴坐标的值 8 let nextX = vs[i] - xStep; 9 // 该顶点坐标下一个 y 轴坐标的值 10 let nextY = vs[i + 1] + yStep; 11 vs[i] = nextX < -0.5 ? 0.5 - (Math.abs(nextX) - 0.5) : nextX; 12 vs[i + 1] = nextY > 0.5 ? -0.5 + (Math.abs(nextY) - 0.5) : nextY; 13 } 14 }, 15 200);
电梯运动动画如下图所示:
监控功能展示及介绍
视频监控
当点击场景中的摄像头之后右侧顶部会显示出当前摄像头的监控画面,以下为实现效果图:
烟雾报警监控
烟雾报警会根据后台实时传递过来的状态值来变换当前烟雾报警模型的颜色,红色为报警状态,以下为实现效果图:
电视列车到站时间监控
日常地铁站中会有专门的电视来展示下一班地铁到站的时间表,该系统中也模拟该效果,不过该系统暂时做了电视的模型,时间暂无对接,以下为效果图:
场景监控交互
3D 场景中交互是比较简单的,主要是点击摄像头展示 2D 监控面板,在 2D 界面中主要是切换三种交互模式,三种交互模式为互斥的关系,以下是 3D 交互注册事件代码:
1 g3d.mi((e) = >{ 2 let { 3 g2d, 4 dm2d 5 } = this; 6 // 为点击类型 7 if (e.kind === 'clickData') { 8 // data 为当前点击的图元 9 let data = e.data; 10 // 当前图元的 shape3d 类型 11 let shape3d = data.s('shape3d'); 12 // 判断当前 shape3d 类型是否为摄像头 13 if (shape3d && shape3d.indexOf('摄像头') > 0) { 14 let cameraPanel = dm2d.getDataByTag('cameraPanel'); 15 // toggle 切换摄像头 2d 面板 16 g2d.isVisible(cameraPanel) ? cameraPanel.s('2d.visible', false) : cameraPanel.s('2d.visible', true); 17 } 18 } 19 // 为点击 3d 场景背景类型 20 if (e.kind === 'clickBackground') { 21 let cameraPanel = dm2d.getDataByTag('cameraPanel'); 22 // 隐藏摄像头 2d 面板 23 g2d.isVisible(cameraPanel) && cameraPanel.s('2d.visible', false); 24 } 25 });
总结
工业互联网将人,数据和机器连接起来,地铁站 3D 可视化系统则是一个很好的展现,HT 的轻量化,数据的可视化,机器的可视化,资产的管理化帮助我们更好的监控。而物联网将通过各种信息传感设备,实时采集任何需要监控、连接、互动的物体或过程等各种需要的信息,通过与 HT 的结合更好的展现出可视化的优势,当然地铁站还可以与 VR 进行结合,在各地科技展会中我们可以见到各种 VR 场景操作,HT 中也可以结合 VR 设备进行操作,可以戴上设备在地铁站中漫游,让人有身临其境的感觉,由于场景本身的轻量化,所以 VR 场景下的流畅性也是十分的高,让用户不会有头晕的感觉。当然系统本身也可以在移动端运行,以下为移动端运行截图:
程序运行截图:
*请认真填写需求信息,我们会在24小时内与您取得联系。