翼度科技»论坛 编程开发 html5 查看内容

DataGear 制作基于 three.js 的 3D 数据可视化看板

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
DataGear专业版 1.0.0 已发布,欢迎试用! http://datagear.tech/pro/

DataGear 支持采用原生的HTML、JavaScript、CSS制作数据可视化看板,也支持导入由npm、vite等前端工具构建的前端程序包。得益于这一特性,可以很容易制作基于three.js的3D数据可视化看板。
首先,参考three.js的官方教程 https://threejs.org/docs/index.html#manual/en/introduction/Installation 编写3D前端源码包。
源码包中包含两个文件:index.html、main.js,如下所示:
index.html
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. </head>
  6. <body>
  7.   <button onclick="threeRender()">渲染</button>
  8.   <button onclick="threeUpdate()">更新</button>
  9.   <p></p>
  10.   
  11. </body>
  12. </html>
复制代码
index.html是下述main.js中定义3D组件的调试页面,点击【渲染】、【更新】按钮可调试3D组件效果。
main.js
  1. import * as THREE from 'three';
  2. export function ThreeRenderer(dom)
  3. {
  4.   this.dom = dom;
  5.        
  6.   this.render = function()
  7.   {
  8.     const scene = new THREE.Scene();
  9.     const camera = new THREE.PerspectiveCamera( 75, this.dom.clientWidth / this.dom.clientHeight, 0.1, 1000 );
  10.     const renderer = new THREE.WebGLRenderer();
  11.     renderer.setSize( this.dom.clientWidth, this.dom.clientHeight );
  12.     this.dom.appendChild( renderer.domElement );
  13.     const geometry = new THREE.BoxGeometry( 1, 1, 1 );
  14.     const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
  15.     const cube = new THREE.Mesh( geometry, material );
  16.     scene.add( cube );
  17.     camera.position.z = 5;
  18.    
  19.     function animate() {
  20.       requestAnimationFrame( animate );
  21.       cube.rotation.x += 0.01;
  22.       cube.rotation.y += 0.01;
  23.       renderer.render( scene, camera );
  24.     }
  25.           
  26.     animate();
  27.    
  28.     this.cube = cube;
  29.   };
  30.        
  31.   this.update = function(hexColor)
  32.   {
  33.     const cube = this.cube;
  34.     const material = cube.material;
  35.     const color = material.color;
  36.     color.setHex(hexColor);
  37.   };
  38. }
复制代码
main.js定义了一个ThreeRenderer3D组件类,大部分代码由three.js官方教程拷贝,它的render函数绘制一个简单的3D立方体, update函数可以更新这个3D立方体的颜色。
调试:
  1. npm install --save three
  2. npm install --save-dev vite
  3. npx vite
复制代码
执行npx vite build将它们构建为前端程序包:
  1. index.html
  2. assets/index-*.js
复制代码
先将上述前端程序包压缩为ZIP包后导入为DataGear看板,然后将index.html中的
  1. [/code]修改为采用相对路径引入方式:
  2. [code]
复制代码
此时,点击【保存并展示】看板后,打开展示页面,点击【渲染】、【更新】按钮,将可以看到3D效果,如下所示:

下面,我们将上述3D组件制作为DataGear自定义图表,可以根据数据集返回的数值,更新其颜色。
首先,新建SQL数据集:
名称:最新指标值
SQL:
  1. SELECT
  2.         D_VALUE AS VALUE
  3. FROM
  4.         t_date_value
  5. ORDER BY
  6.         d_date DESC
  7. LIMIT 0, 1
复制代码
上述SQL从t_date_value表中查询最新日期的指标值
然后,新建一个关联上述数据集的自定义类型的图表;
名称:最新指标值
图表类型:自定义
数据集:最新指标值
更新间隔:2000毫秒
上述图表每隔2秒更新一次数据
最后,修改刚才导入看板的index.html,添加自定义图表渲染器,当t_date_value表中最新指标值大于等于80时,将3D模型渲染为红色,否则,渲染为绿色。
修改后的index.html如下所示:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. </head>
  6. <body>
  7. <h1>DataGear制作3D图表</h1>
  8. <h5>http://www.datagear.tech</h5>
  9.   
  10.   
  11.   
  12. </body>
  13. </html>
复制代码
上述assets/index-*.js应替换为实际的JS文件名,【图表ID】应替换为实际的最新指标值图表的ID
点击【保存并展示】,即可看到3D图表效果,如下图所示:

官网地址:http://www.datagear.tech
源码地址:
Gitee:https://gitee.com/datagear/datagear
Github:https://github.com/datageartech/datagear

来源:https://www.cnblogs.com/datagear/p/18044233
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具