ThreeJs 数据可视化学习扫盲

article/2025/10/13 1:12:52

一:前言

数据可视化是一个跨领域的行业,其中包含了图形学、数学、视觉传达等专业领域。

下图罗列出了一个简单的学习方向。

 

二:可视化方案以及学习路线

目前采用的是比较成熟,社区活跃度更高的Three.js,它是一个开源的webGL的api封装库。

该框架的特点是:

  • 简单易用

  • 入门成本低

  • 社区活跃度高

  • 速度更快

学习应用ThreeJs之前我们需要了解的基础知识点:

  1. 图形学基础:了解图形的输入、模型(图形对象)的构造和表示。

  1. 3D渲染引擎:了解3D引擎是什么,有哪些功能,有哪些类型。

  1. 渲染原理:3D渲染场景中包含哪些元素(灯光、地板、天空等)。

  1. ThreeJs简介:了解openGL,webGL,Threejs之间的关系。

  1. HTML5图形化其它技术:了解canvas、css2D、css3D、HTML2canvas。

  1. ThreeJs学习注意事项:根据Threejs官网案例和文档学习Threejs。

三:图形学基础

图形学是一门研究图形输入,构成,图形数据展示,图形数据传输,图形数据管理,数据分析,图形人机交互的一门学科。图形学在我们的3D数据可视化中涉及到了各个方面,包括建模,渲染,以及交互动画等等。主要了解的是3D模型的构成。

立体几何的发展历程:在我们计算机的发展中,图形的表示从一个屏幕坐标开始——>两个坐标组成线段——>多个平面坐标组成一条曲线——>多条线组成的面——>多个空间面组成体

对于图形的表示方法:

  • 基于线框的表示方法:单纯用边线来表示模型。如果模型太复杂可能会导致画面错乱不堪。

  • 基于表面的表示方法:基于面的表示方法分为两种,一种是连续曲面一种是离散曲面,连续曲面感兴趣可以自行了解,数据可视化应用的是离散曲面。当前游戏建模和webgl模型中普遍使用的是三角网格来表示的表面,三角网格采用一系列分段线性的三角形来表达类曲面,因而它并非是真正意义上的曲面,而是类曲面。三角面的多少则决定了该曲面的光滑程度。

  • 基于实体的表示方法:这种方法能够完整地、无歧义地表达三维形体,有兴趣可以自行了解。

四:渲染引擎

渲染引擎也是基于图形学实现的。他的主要功能是:渲染场景数据存储、渲染器、交互能力。

市场上的渲染引擎很多但是大致分为实时渲染离线渲染两种,

  1. 实时渲染:使用的最多的是3D游戏,3D地图,BIM数据可视化,实时渲染表现在于可以满足人机交互的需求,它的渲染效果相较于离线渲染来说要差很多,原理与电影是一样的,其实就超快速渲染,每秒钟渲染达到24张以上从而让人感觉不出来渲染过程。

  1. 离线渲染:使用的最多的场景是3D产品设计效果图的渲染。这是一个将3D场景转换为2D图片的过程。它的技术发展程度,要远高于实时渲染引擎。市面上使用比较广的像vray,keyshot,blender渲染出来的场景已经完全可以做到跟照片质量相当的程度了。感兴趣可以自行了解。

渲染器是3D引擎的核心部分,它完成将3D物体绘制到屏幕上的任务。渲染器分为硬件渲染器软件渲染器。

  • 硬件渲染器:硬件渲染器通常基于底层图形API(应用程序接口)构建,常用的图形API包括DirectX和OpenGL。webGL就是对openGL 2.0的API进行了封装。而我们的Threejs是封装的webGL。更侧重于实时渲染引擎。

  • 软件渲染器:软件渲染器则纯粹利用CPU的能力进行计算,通常采用光线追踪的方法进行渲染。软件渲染器没有统一的应用程序标准,但是有很多通用的渲染算法,如光子映射,蒙特卡洛,辐射度等等。更侧重于实时渲染引擎。

五:渲染原理

简单来说,三维渲染是使用计算机从数字三维场景中生成二维影像的过程。

为了生成影像,我们需要了解构造三维影像的过程。

三维影像不管是真实三维场景,还是虚拟三维场景,都处在一个场景中。场景中包含哪些东西呢?

光:平行光(太阳光),环境光(氛围光),点光(灯光,反射光等场景中某个点发出的光)。

三维模型:我们使用建模工具构建的模型主体。

贴图:建模之后的三维模型是没有任何颜色的,我们一般会给它添加一个基础材质和颜色。但是像纹理(磨砂,划痕),彩色,环境反光等我们会用贴图的方式去表现。实时渲染无法像离线渲染一样使用大量的计算来模拟真实环境的光照效果(反射,折射,漫射等),大部分的渲染质量呈现都依赖于贴图。这里不展开阐述,感兴趣可以搜索不同的贴图通道来学习如何实现凹凸纹理,反射等效果。贴图的目的在于更好的表现材质(金属,玻璃,石头,木材,布料等等)。

相机:相机就是我们当前的视角。相机拍摄的范围就是我们能看到的范围(所见即所得)。

 

六:ThreeJs简介

Three.js 是 JavaScript 编写的 WebGL 第三方库,通过对 WebGL 接口的封装与简化而形成的一个易用的图形库。

WebGL 就是基于 OpenGL 设计的面向 web 的 3D 图形标准,它提供了一系列 JavaScript API,通过这些 API 进行图形渲染,系统硬件会加速 3D 渲染,从而获得较高性能。

OpenGL 它是最常用的跨平台图形处理开源库。

我们为啥不直接使用webGL进行开发呢,因为WebGL 门槛相对较高,计算机图形学需要相对较多的数学知识。而Three.js 对 WebGL 提供的接口进行了非常好的封装,简化了很多细节,大大降低了学习成本。并且,几乎没有损失 WebGL 的灵活性。

使用threejs在屏幕上呈现一个3D场景步骤大致如下:

  1. 创建一个三维空间,Three.js 称之为场景( Scene )

  1. 确定一个观察点,并设置观察的方向和角度,Three.js 称之为相机( Camera )

  1. 在场景中添加供观察的物体,Three.js 中有很多种物体,如 Mesh、Group、Line 等,他们都继承自 Object3D 类。

  1. 最后我们需要把所有的东西渲染到屏幕上,这就是 Three.js 中的 Renderer 的作用。

Threejs常用对象介绍:

Scene场景:场景它是放置物体、灯光和摄像机的地方。它就是我们的三维空间。

Camera相机:它是一个摄像机的抽象类,它的实例化对象是PerspectiveCamera(透视摄像机)或者 OrthographicCamera(正交摄像机)。

Mesh网格:继承至Object3D基于三角形的网格对象我们可以在建模软件中创建三维模型进行导入,也能在threejs中进行创建。

Sprite精灵:精灵对象也是继承至Object3D,一个总是面朝着摄像机的平面。(常用于做广告牌)

更多、更详细内容请查看threejs官网,以及Threejs源码。

七:HTML5图形化其它技术

主要为canvas、css2D、css3D、HTML2canvas,在做一些交互时可能会需要用到dom节点的交互等可能会用到这些技术。以及创建新的贴图等等。这部分请自行学习。

八:Threejs学习注意事项

threejs官方有很多案例,还有中文文档以供学习,但是文档并不是特别详细。所以我们还需要下载threejs的源代码,请结合源码和文档进行学习。

Threejs的应用目前并不算特别广,有一些问题可能需要在外网查找。


http://chatgpt.dhexx.cn/article/EnyFV5qF.shtml

相关文章

数据处理以及Hive数据分析

数据处理以及Hive数据分析 一、pandas进行数据预处理【1】待处理的一部分数据【2】原始数据文件的格式说明【3】数据预处理要求【4】 处理完成的数据字段说明【5】 实验方法使用pandas进行数据预处理 【6】解析题意【7】代码展示(1)读取文件(…

Python交互式数据分析报告框架~Dash介绍

原文作者:Plotly,Chris Pamer 原文链接: https://link.jianshu.com/?thttps%3A%2F%2Fmedium.com%2F%40plotlygraphs%2Fintroducing-dash-5ecf7191b503 译者序:原文于2017年6月21日发布,时过半载,将这篇既不是教程…

CESI: Canonicalizing Open Knowledge Bases using Embeddings and Side Information

开放性知识库的规范化(个人理解:这里的规范化实际上就是将相同语义的实体或关系聚集在一起,从而表示一个实体或关系),主要是OPENie提取的过程中没有进行区分,最近的研究发现,开放KBS的规范化实际…

计算机一级仿宋gb2312,仿宋gb2312字体

一般情况下,这款软件在试用的过程可能还有点小问题,但是正所谓瑕不掩瑜,相信用不了多久,只要程序猿给力点,这种小小的反馈不爽就可以解决。 仿宋gb2312字体字体简介 仿宋_GB2312字体是印刷字体的一种 ,仿照…

Supervisor部署(离线部署需要提前下载部署包)

1.软件准备 下载tar包:wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz 解压:tar -xvf supervisor-3.1.3.tar.gz 进入解压包:cd supervisor-3.1.3 开始安装:python setup.py install 下载me…

Docker 学习之 Docker 容器数据卷

容器数据卷 什么是容器数据卷 docker 理念回顾 将应用和环境打包成一个镜像! 问题:数据?如果数据都在容器中,那么我们删除容器,数据就会丢失!需求:数据可以持久化! 容器之前可以…

Supervisor 安装与配置

文章目录 Supervisor 安装与配置一、介绍二、名词释义三、Supervisor 安装三、Supervisor 配置四、启动控制终端五、注册为系统服务六、管理界面1、管理界面的弊端 Supervisor 安装与配置 一、介绍 ​ Supervisor 是用Python开发的一个 client/server 服务,是Linu…

使用Cesi+Supervisor实现进程管理

使用CesiSupervisor实现进程管理 相信很多的运维小伙伴都是饱受进程丢失的痛苦,最怕半夜被手机吵醒,那一定是经理想你 不管进程是前台运行还是后台静默运行,我们都需要能监控其进程状态。 原因有三: 一,在意外结束时…

echarts学习笔记1

可视化面板介绍 ​ 应对现在数据可视化的趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使用,可视化图表来展示体现数据,让数据更加直观,数据特点更加突出。 [外链图片转存失败,源站可能…

supervisor集群管理

1.介绍 Supervisor是一个进程管理工具,就是有一个进程需要每时每刻不断的运行,但是这个进程又有可能由于各种原因有可能停止运行。supervisor官网:http://www.supervisord.org/ 当进程停止运行的时候我们希望能自动重新启动,Super…

UOS桌面操作系统专业版字体

fc-list |sort| awk {print $1 } |uniq| wc -l cesi授权的字体 /usr/share/fonts/fonts-cesi/CESI_FS_GB13000.TTF: CESI仿宋\-GB13000,CESI_FS_GB13000:styleRegular /usr/share/fonts/fonts-cesi/CESI_FS_GB18030.TTF: CESI仿宋\-GB18030,CESI_FS_GB18030:styleRegular /…

罗马仕荣获中国质量认证中心、CESI颁发的全国首批“双新认证”证书

2022年11月25日,2022(冬季)亚洲户外电源大会于深圳市南山区科兴科学园ECO国际会议中心举办。本次大会由中国电子技术标准化研究院、北京京东世纪贸易有限公司、充电头网、全国电子产品安全标准化技术委员会、工信部锂离子电池及类似产品标准化…

supervisor 的 web 管理工具 cesi

一、supervisor 配置 说明:如果只是使用 supervisor 自带的 web,仅如下配置就可以vim /etc/supervisor/supervisord.conf[inet_http_server] ; inet (TCP) server disabled by default port192.168.5.149:9001 ; ip_address:port specif…

管理ELK进程工具: Supervisor Cesi

一、Supervisor简介 supervisor是一个Linux/Unix系统上的进程监控工具,supervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常…

CeSi 进程集中管理部署

一:安装环境 CentOs 7环境 sudo yum install -y git epel-releasesudo yum install -y python34 python34-pip 二: 安装CeSi https://github.com/Gamegos/cesi 有详细的安装步骤,需要安装一些工具 ## 安装yarn curl --silent --location http…

Linux 系统进程守护工具 cesi + superviosr

一、安装 Supervisor pip install supervisor 使用 echo_supervisord_conf 命令生成默认配置文件 echo_supervisord_conf > /etc/supervisord.conf 配置文件说明 位置:etc/supervisord.conf内容:# 指定了socket file的位置 [unix_http_server] f…

进程管理工具-Supervisord +CeSi

Supervisor 简介 Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来在 UNIX-like 系统(不支持 Windows)下启动、重启(自动重启程序)、关闭进程(不仅仅是 Python 进程) Superviso…

通过 CeSi + Supervisor 可视化集中管理服务器节点进程

通过 CeSi Supervisor 可视化集中管理服务器节点进程 简介Supervisor 的安装及基本使用1. 安装2. 基本使用 2.1 启动 supervisor2.2 Supervisor 客户端 supervisorctl安装配置 CeSi1. 简介2. 安装3. 配置4. 启动Supervisor 服务设置开机自启动参考链接 通过 CeSi Supervis…

第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI

第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI 介绍安装解压安装依赖修改配置注册为系统服务启动登录一下,发现报错了解决方法 介绍 前一篇我们安装好了supervisor,supervisor自带了一个UI界面,不太好用&#xff…

CeSi 安装与配置

文章目录 CeSi 安装与配置一、介绍二、CeSi 安装三、CeSi 配置四、CeSi 启动五、管理界面 CeSi 安装与配置 一、介绍 ​ CeSi(Centralized Supervisor Interface) 是 Supervisor 官方推荐的集中化管理 Supervisor 实例的 Web UI,该工具是用 Python 编写&#xff0…