新闻资讯

新闻资讯 行业动态

基于 HTML5 WebGL 的智慧城市

编辑:006     时间:2020-02-14

前言

  中共中央、国务院在今年12月印发了《长江三角洲区域一体化发展规划纲要》(下文简称《纲要》),并发出通知,要求各地区各部门结合实际认真贯彻落实。

  《纲要》强调,要提升基础设施互联互通水平,打造数字长三角,协同建设新一代信息基础设施,共同推动重点领域智慧应用。大力发展基于物联网、大数据、人工智能的专业化服务,提升各领域融合发展、信息化协同和精细化管理水平。围绕城市公共管理、公共服务、公共安全等领域,支持有条件的城市建设基于人工智能和 5G 物联的城市大脑集群。

城市治理和管理不仅是国家治理体系的重要组成部分,同时也是全球互联网治理体系的重要载体和构建网络空间命运共同体的重要基础。上个月我们发布了一篇文章《基于 HTML5 WebGL 构建智能城市 3D 场景》,大体介绍了如何使用 ht.js 快速 3D  建模,展示了良好的可视化效果,今天继续探讨智慧城市的应用。

  demo: http://www.hightopo.com/demo/city/

功能点

  •  应急响应
  •  交通情况
  •  城市漫游
  •  工程情况

1.应急响应

随着城市化、工业化、信息化进程加快,各种风险隐患层出不穷,突发事件频繁发生,已经从非常态化的偶发事件演变成了常态化的频发事件,直接威胁着公众的生命财产安全。为了及时、有效、妥善地处置各种城市突发事件,必须建立统一领导的指挥系统、常备不懈的保障系统和防患未然的防范系统,


上图主要以 2/3D  联动的方式,依次展示了在面对突发情况下,城市应急救援的响应过程。

步骤:事故定位->告警设施自启动->电力切断->油气截断阀启动->周边情况->确认告警范围->通知学校->医院准备->应急人员准备->交通规划->应急方案预备->应急方案启动->应急资源触发->现场方案预备->现场方案启动->人员进场->作业中)

实现思路:首先对模型进行分组,并在相应的图元上标记 tag ,使用 ht.Default.startAnim()  来完成每一步的动画效果,然后拼接动画即可实现上图中的 3D 动画效果。至于右边的 2D 步骤显示面板的联动,因为本 demo 采用的是 ht.js 来实现的, ht.DataModel 作为承载 Data  数据的模型,管理 Data  数据的增删以及事件派发,右侧 2D 面板里的步骤也是一个个 Data ,我们只要对其进行数据绑定,在动画执行到某一时刻,通过动态修数据来控制图元的透明度等样式就可以实现 2/3D 联动了。demo 中的事故地点,点击可跳转到另一个室内定位的 案例 。

 

复制代码
// 事故定位动画主要代码  animStep_1() {
    let process_01 = this.main.g2d.dm().getDataByTag("process_01");
    process_01.s("opacity", 1);
    let emergencyResponseParent_1 = this.main.g3d
        .dm()
        .getDataByTag("emergencyResponseParent_1"); this.setVisible(emergencyResponseParent_1, true, "children");
    let children = this.getChildren(emergencyResponseParent_1);
    children.forEach(i => {
        i.s("shape3d.transparent", true);
        i.s("shape3d.opacity", 0);
    }); this.main.anim = ht.Default.startAnim({
        duration: 2000,
        easing: t => { return t;
        },
        finishFunc: () => { this.animStep_2();
        }, // 动画结束后调用的函数。 action: (v, t) => { this.setStepPanel(process_01, t, 4); if (t <= 0.25) {
                children[0].s("shape3d.opacity", 5 * Ease.easeOutSine(t));
            } else if (t <= 0.375) {
                children[1].s( "shape3d.opacity", 8 * Ease.easeOutSine(t - 0.25)
                );
            } else if (t <= 0.5) {
                children[2].s( "shape3d.opacity", 8 * Ease.easeOutSine(t - 0.375)
                );
            }
        }
    });
}
复制代码

2.交通情况

先上图:


从应用领域来看,目前我国智慧交通主要应用在公路交通信息化、城市道路交通管理服务信息化以及城市公交信息化领域。伴随着数字化转型,政府主动牵头智慧城市建设,未来市场潜力巨大。该功能点能更直观有效的反应当前的道路交通情况,使各地政府更加有效的、科学的管理交通,发挥出大城市的交通效能。常规的 2D 效果图已经不满足于当下的需求了,伴随着大数据、云计算、5GAI、边缘计算等技术的发展成熟,3D  可视化更能直观的、有效的反馈信息。当然,3D  可视化离不开一款强大的图形引擎。本模块只是简单地模拟了交通状况,并未继续拓展。

3.城市漫游


由于计算机图形学和软硬件技术的快速发展,虚拟现实技术越来越为人们所重视。虚拟现实技术的应用一直是计算机应用领域的热点,虚拟现实技术的应用价值已经得到了广泛的认可。3D  漫游可以提供很好的用户交互体验,所以本 demo  也展示了这一功能。

借助于 HT,漫游功能的实现只要几行代码就可以实现了。ht.Shape  是极其强大的图元类型,这里绘制漫游路线就是使用其扩展子类 ht.Polyline ,绘制一条三维空间管道,然后通过获取该路径上的点来不断设置 eye 行了。代码如下:

 

// 漫游动画
roamingAnim() {
    // polyline
    letpolyline =this.main.g3d.dm().getDataByTag("polyline");
    this.main.anim = ht.Default.startAnim({
        duration: 15000,
        easing: t => {
            returnt;
        },
        finishFunc: () => {
        },// 动画结束后调用的函数。
        action: (v, t) => {
            letlength =this.main.g3d.getLineLength(polyline),
                offset =this.main.g3d.getLineOffset(polyline, length * v),
                point = offset.point,
                px = point.x,
                py = point.y,
                pz = point.z;
                this.main.g3d.setEye(
                    px ,
                    py ,
                    pz
                );
                this.main.g3d.setCenter(0, 0, 0);
        }
    });
}

4.工程情况


该页面主要展示了工程情况:大桥()、盾构作业()、海底隧道()。

至此,该 demo 的功能点就介绍完了。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐