简介:气温的变化会带动水汽条件的变化,带来降雪、降雨、降冰雹等奇异的天气现象,不仅仅是人的活动会受到影响,物联网设备管理、传感器监测及安全作业都要相应调整。
为了提前准备好预案工作,3D孪生场景的仿真过程就派上了用场,比如预测紧急情况或事故灾害的后果,并基于数字孪生模型以及数字仿真两个条件,以完成必要的危机解决方案。

demo演示地址:http://www.thingjs.com/guide/?m=sample

#前端 #3D开发 #物联网

  1. 加载场景
  2. 雨滴计时器
  3. 降雨效果

    在数字孪生仿真过程中,需要3D场景可视化作为基本设施,进行交互开发和数据对接。现在就来讲解一下,如何基于ThingJS平台开发降雨等天气效果,让你的3D场景更加逼真!

官方教程分为三个部分:(1)加载场景;(2)雨滴计时器;(3)降雨效果。

1. 加载场景

ThingJS不需要从0到1开发一个3D场景,建模设计师利用CampusBuilder(又称模模搭,3D场景搭建工具),拖拉拽就可以零代码完成3D场景搭建;前端开发基于统一的平台数据,从菜单栏直接加载url进行二次开发。

2. 雨滴计时器

若要创建雨滴计时器,setTimeout和setInterval的语法相同,都可以用来实现在一个固定时间段之后去执行JavaScript的,该如何取舍与判断?

相同点

它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。

不同点

这两个函数还是有区别的,setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。

雨滴计时器使用“interval”, 表示在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,形成降雨效果,而不是只执行一次那段代码。

3. 降雨效果

这里给出两种创建和绘制雨滴的方法,第一种是粒子效果,第二种是canvas画布效果。

方法一:创建粒子实现降雨效果

直接调用ThingJS API的底层粒子系统“ParticleSystem”,前端开发需要针对粒子进行命名、设置场景坐标,并修改粒子的密度参数(最大及最小)。当鼠标“on”点击事件发生时,依据“interval”计时器来反复运行这段粒子代码,形成大型降雨效果。

进入官网-官方示例-粒子模块查看代码>>

// 创建粒子 var particle = app.create({ type: 'ParticleSystem', name: 'Rain', url: 'https://model.3dmomoda.com/models/18112113d4jcj4xcoyxecxehf3zodmvp/0/particles', position: [0, 300, 0], complete: function (ev) { ev.object.scale = [10, 10, 10]; } }); // 设置粒子最大密度 particle.setGroupAttribute('maxParticleCount', 10000); // 设置粒子最小密度 particle.setParticleAttribute('particleCount', 5000); }

方法二:创建canvas绘制实现降雨效果

(1)创建画布

在HTML界面创建canvas画布,将画布添加到ThingJS内置的2D界面div中,并设置当前窗口的宽和高。为了统一视觉,通过获取雨滴对象数组,整体设置雨滴长度、下落速度、偏转角度等参数;这里的雨滴计时器设置为每50毫秒调用一次绘制雨滴的函数。

interval = setInterval(newDrop, 50); // 设置每50毫秒调用一次绘制雨滴的函数

(2)绘制雨滴

前端可以控制线宽、线的样式、颜色甚至渐变颜色,渐变颜色要注意修改线条的斜度和对应的颜色,把自然界的光影效果考虑到3D场景内,更加真实。最后绘制一条雨落路径,设置起点、终点,让雨滴能够不脱离,形成持续降雨效果,连非开发人员理解也毫无隔阂!

结尾:ThingJS拥有强大的物联网开发逻辑,开发者接入平台api能力,轻松完成物联网场景下3D交互架构的搭建,加速3D项目开发!

关于ThingJS

ThingJS提供物联网3D可视化组件,让3D开发更轻松!直接Javascript调用3D脚本,基于200个3D开发源码示例,让你全面了解物联网可视化开发逻辑。场景搭建-3D脚本开发-数据对接-项目部署的一站式服务让开发更高效,同20万个开发者一起成为数字孪生技术创新者!

官方示例(十):网页开发3D粒子系统实现降雨效果 ThingJS相关推荐

  1. Go爬虫colly官方示例十五【proxy_switcher】- 设置代理池

    文章目录 示例介绍 示例代码 输出 转载请标明出处: http://blog.csdn.net/qq_27818541/article/details/112489172 本文出自:[BigManin ...

  2. threejs开发3d地球酷炫效果

    代码如下,详情:https://gitee.com/XiaoHu12685/three-demo/blob/master/examples/earth_tiger.html <!DOCTYPE ...

  3. 官方示例(十二):网页加载道路及Geoline开发ThingJS

    #前端开发# #交通可视化# #Geoline# 简介:智慧城市对于我们并不陌生,目前已经有600多个城市平台智慧化,拥有空.天.地一体化的基础网络部署,针对城市交通物理实体对象的仿真模拟也有了长足发 ...

  4. 实现3d图片移动_ThingJS官方示例(三):3D标记Marker动效定制化

    物联网3D可视化场景中,经常用到标注元素作为线路标绘.业务区域标绘,比如定位物联网设备或危险源位置,进行安全作业或者路径导航规划,远程解决难题. ThingJS的3D标记"Marker&qu ...

  5. 微信开放JS-SDK,助力网页开发[转自微信官方]

    为什么80%的码农都做不了架构师?>>>    微信公众平台今日面向开发者开放微信内网页开发工具包(微信JS-SDK). 通过微信JS-SDK提供的11类接口集,开发者不仅能够在网页 ...

  6. 畅游Python 二十二:网页开发技术方案:AJAX

    一.概述 对于WEB应用程序而言:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回的是字符串(HTML),浏览器将字符串(HTML)渲染并显示在浏览器上. 1.传统的Web应用 一个简 ...

  7. 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第十九节:雾

    <使用Cocos2d-x 开发3D游戏>系列在线课程 第十九节:雾 视频地址:http://edu.csdn.net/course/detail/1330/20819?auto_start ...

  8. 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第二十五节: 3D项目优化方案

    <使用Cocos2d-x 开发3D游戏>系列在线课程 第二十五节:3D项目优化方案 视频地址:http://edu.csdn.net/course/detail/1330/20825?au ...

  9. 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第二十四节:小项目实训《绝命沙滩》

    <使用Cocos2d-x 开发3D游戏>系列在线课程 第二十四节:小项目实训<绝命沙滩> 视频地址:http://edu.csdn.net/course/detail/1330 ...

最新文章

  1. 2020十大新兴技术揭晓!每一项都可能颠覆我们的生活
  2. 解决Maven工程中报 Missing artifact jdk.tools:jdk.tools:
  3. 转: ajax跨域之JSONP
  4. mysql 函数多个连接_MySQL数据库中如何连接两个或多个字符串呢?
  5. linux下数据库mysql命令大全_linux中mysql数据库操作命令大全有哪些
  6. 很好的一篇讲LTP在编解码中的作用的文章
  7. MySQL InnoDB 锁表与锁行
  8. 前端学习(3254):react中todolist制作静态组件
  9. 日期格式化为yyyymmdd_你还在用SimpleDateFormat格式化时间嘛
  10. cmd255command.executereader()打印连接错误_打印经常遇到的几个问题,轻松解决
  11. angularjs启动项目报ERROR in AppModule is not an NgModule解决方法
  12. Starling中文站开发教程
  13. Python机器学习——如何shuffle一个数据集(ndarray类型)
  14. sqlserver与mysql的一些不同的T-SQL语句
  15. 从零实现爬虫和情感分类模型(一)
  16. iOS即时通讯之CocoaAsyncSocket源码解析五
  17. 5g手机可以用4g的手机卡吗
  18. 文博会虚拟现实惊艳亮相 VR风暴蠢蠢欲动
  19. web应用基本框架图
  20. 记一次在学院服务器装Ubuntu系统

热门文章

  1. 1449:【例题2】魔板
  2. C/C++ 学习日记3:制作带有界面的植物大战僵尸助手(基于MFC)
  3. 陈强教授《机器学习及R应用》课程 第十四章作业
  4. how can i check the error of Journal import date source
  5. matlab离散系统pid控制系统,离散系统的数字PID控制仿真
  6. 12306验证图片集合。
  7. 标志设计中选择合适的字体
  8. Image Thresholding图像阙值化和Adaptive Thresholding
  9. java爬虫实战——实现简单的爬取网页数据
  10. 基于matlab的手写体数字识别系统