ThreeJs简介

简介: 这篇文章介绍了Three.js的基础知识,包括其相对于WebGL的优势以及如何使用Three.js创建基本的3D场景。

了解ThreeJs之前先了解WebGL:

(如果你已经了解了threeJs可以跳过这一章)

WebGL(全写Web Graphics Library)是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。显然,WebGL技术标准免去了开发网页专用渲染插件的麻烦,可被用于创建具有复杂3D结构的网站页面,甚至可以用来设计3D网页游戏等等。

ThreeJs实际上是WebGL的框架,Three.js是在WebGL的api接口基础上,又进行的一层封装。相当于js和JQuery的关系,学习webgl需要图形学知识,而webgl需要通过js和glsl两种语言。如果我们不通过threejs使用webgl势必逃不过底层知识:你必须全面了解着色器语法和自己编写顶点着色片元着色;而有了Three.js就可以大大减少了3d开发所需的专业知识储备。

先看看Three有哪些特点:
面向对象:开发者可以使用的JavaScript对象,而不是仅仅调用JavaScript函数。原本从事后台java等面向对开发语言的开发者学习起来比较容易
功能非常丰富:Three.js除了封装了WebGL原始API之外,Three.js还包含了许多实用的内置对象,并内置了常用着色器。
速度很快:Three.js采用了3D图形最佳实践来保证在不失可用性的前提下,保持极高的性能。
支持交互:WebGL本身并不提供拾取(picking)功能(即是否知道鼠标正处于某个物体上)。而Three.js则固化了拾取支持,这就使得你可以轻松为你的应用添加交互功能。(鼠标点击发送向内的射线统计穿过的对象来实现交互)
包含数学库:Three.js拥有一个强大易用的数学库,你可以在其中进行矩阵、投影和矢量运算。
内置文件格式支持:你可以使用流行的3D建模软件导出fbx格式或其他格式的文件,然后使用Three.js加载
支持HTML5 canvas:Three.js不但支持WebGL,而且还支持使用Canvas2D、Css3D和SVG进行渲染。

入门:先下载好threeJs的文件官网地址:Three.js – JavaScript 3D Library,在download中可以下载到three的相关文件和案例,不过是英文的,觉得不方便也有中文版本的:Three.js中文网

下面开始学习threeJS的内容:

创建3D项目的几个要素:

1.场景:可以理解为创建一个空间用来展示3D模型,

2.相机:可以理解为人的眼睛,展现给相机的图就是屏幕上展示的图,对应的改变相机的位置和角度也会改变屏幕展示的图

3.渲染器:绘制完3D之后,需要渲染器去按照设定的3D模型位置,角度以及光源等信息进行渲染展示

4.光源:就是类似自然界中的光,绘制了3D模型需要加载上光源才能看得见,

5.3D模型,无论是用three手动绘制还是通过加载器加载的3D文件,加到场景中,否则你的3D场景就什么也没有

相关文章
|
存储 数据采集 缓存
海量数据去重的Hash、bitmap、BloomFilter、分布式一致性hash
海量数据去重的Hash、bitmap、BloomFilter、分布式一致性hash
416 1
|
Web App开发 JavaScript 前端开发
ThreeJs-01开发环境搭建
【11月更文挑战第12天】本指南介绍了如何使用 Node.js 和 npm 创建一个基本的 Three.js 项目。首先安装 Node.js 和 npm,然后创建项目目录并初始化项目,接着安装 Three.js 库,最后创建一个简单的 HTML 文件来测试 Three.js 的功能,确保一切正常运行。
626 54
|
JavaScript
ThreeJs通过DragControls实现物体拖动
这篇文章详细讲解了如何在Three.js中使用DragControls实现3D物体的鼠标拖动功能。
535 1
ThreeJs通过DragControls实现物体拖动
|
10月前
|
消息中间件 存储 网络协议
从零开始掌握进程间通信:管道、信号、消息队列、共享内存大揭秘
本文详细介绍了进程间通信(IPC)的六种主要方式:管道、信号、消息队列、共享内存、信号量和套接字。每种方式都有其特点和适用场景,如管道适用于父子进程间的通信,消息队列能传递结构化数据,共享内存提供高速数据交换,信号量用于同步控制,套接字支持跨网络通信。通过对比和分析,帮助读者理解并选择合适的IPC机制,以提高系统性能和可靠性。
1374 14
Threejs实现动画
这篇文章讲解了如何使用Three.js实现动画效果,并介绍了如何控制动画的时间轴。
305 3
Threejs实现动画
|
编解码 物联网 API
"揭秘SD文生图的神秘面纱:从选择模型到生成图像,一键解锁你的创意图像世界,你敢来挑战吗?"
【10月更文挑战第14天】Stable Diffusion(SD)文生图功能让用户通过文字描述生成复杂图像。过程包括:选择合适的SD模型(如二次元、2.5D、写实等),编写精准的提示词(正向和反向提示词),设置参数(迭代步数、采样方法、分辨率等),并调用API生成图像。示例代码展示了如何使用Python实现这一过程。
569 4
Three添加天空盒子
这篇文章详细说明了如何在Three.js中添加天空盒(Skybox)以增强3D场景的真实感和沉浸体验。
493 6
Three添加天空盒子
threeJs用精灵模型Sprite实现下雨效果
这篇文章介绍了使用Three.js中的Sprite(精灵)模型来实现下雨特效的方法和技术细节。
520 2
threeJs用精灵模型Sprite实现下雨效果
|
JavaScript 前端开发 API
介绍Three
【8月更文挑战第21天】介绍Three
497 2
|
图形学
ThreeJs创建管道效果
这篇文章介绍了在Three.js中创建管道(Tube)效果的方法和技术细节。
431 3
ThreeJs创建管道效果