首页 > 其他分享 >认识three.js和本地环境搭建

认识three.js和本地环境搭建

时间:2024-02-22 15:22:21浏览次数:27  
标签:浏览器 WebGL three js 图形 3D 搭建

要学习three.js首先我们要了解几个概念

什么是3d,什么是webgl,那么three.js又是什么。

下面我们来一一介绍。

首先什么是3d?

3D,全称为Three-Dimensional,即三维,是指在空间中具有三个维度(长度、宽度和高度)的概念。在现实世界中,我们所处的就是一个三维空间,物体都有立体形态,可以从不同的角度观察到其不同侧面。

在数字技术和娱乐领域中:

1. **3D图形技术**:指的是计算机生成的三维图像和动画,它模拟了真实世界的三维特性,使得用户可以通过屏幕感知到深度和立体感。这种技术广泛应用于电影制作(如3D电影)、游戏开发、建筑可视化、工业设计、科学计算可视化等多个方面。

2. **3D显示技术**:包括立体视觉技术(如红蓝眼镜、偏振眼镜或快门式眼镜观看的立体影像)、裸眼3D显示技术等,它们通过特定方式让观众看到有立体深度的图像内容。

3. **3D扫描与打印技术**:可以捕捉现实世界中的物体并转化为数字化三维模型,同时也可以将这些模型通过3D打印机输出为实物,实现从虚拟到物理世界的转化。

4. **3D测量技术**:用于获取物体在三维空间内的精确坐标数据,常用于工业检测、地理信息系统、考古等领域。

5. **WebGL**:正如上一个问题所述,WebGL是一种允许在浏览器环境中创建和展示交互式3D内容的技术标准。

综上所述,3D涵盖了多个方面的技术和应用,核心是通过各种方法在二维媒介上展现或创造三维空间效果及实体。

那么什么是webgl?

WebGL(全称Web Graphics Library)是一种JavaScript API(应用程序接口),它允许浏览器在无需任何插件的情况下直接利用计算机的图形处理器(GPU)在HTML5 Canvas元素上渲染交互式2D和3D图形内容。WebGL基于OpenGL ES 2.0标准,通过提供一套JavaScript绑定来实现硬件加速的3D图形处理,使得开发者能够在web页面中创建复杂的3D模型、动画以及数据可视化效果。

使用WebGL,网页开发人员可以编写出高性能、实时渲染的3D应用程序,如游戏、模拟系统、产品演示、GIS应用等。由于它是内置于现代浏览器中的标准技术,用户无需安装额外软件即可访问这些丰富的图形体验。

three.js又是什么?

three.js 是一个基于 WebGL 的 JavaScript 库,用于在浏览器中创建和展示交互式三维(3D)图形内容。通过 three.js,开发者无需深入理解底层 WebGL API 和复杂的图形编程细节,就能相对轻松地使用 JavaScript 构建出丰富的 3D 场景和应用,如游戏、数据可视化、产品演示、虚拟现实体验等。

该库提供了一系列高级API和对象,包括:

- 3D几何体(几何形状)的创建和加载
- 材质和纹理的应用
- 照明系统的配置
- 相机视图控制
- 渲染器设置以适应不同设备和性能需求
- 动画系统和场景更新循环
- 加载和解析多种3D模型格式(如OBJ, FBX, GLTF等)
- 用户交互功能,如鼠标/触摸事件处理

由于其易用性和强大的功能集,three.js 成为了 Web 开发者社区中最流行和广泛使用的 3D 图形库之一。

由此我们可以得出结论,他们三者之间的关系?

3D、WebGL 和 three.js 之间的关系可以这样概述:

1. **3D**:
   - 3D(三维)是指在计算机图形学中模拟真实世界的三维空间,包括物体的形状、位置、旋转和透视等效果。它涵盖了广泛的领域,从游戏开发到建筑可视化、动画制作、科学计算可视化等等。

2. **WebGL**:
   - WebGL 是一种浏览器 API(基于 OpenGL ES 2.0),允许开发者在任何兼容的 Web 浏览器中创建交互式的 3D 图形和 2D 绘图,而无需使用插件。
   - WebGL 提供了对底层图形硬件(GPU)的直接访问,通过 JavaScript 来编写程序来渲染复杂的 3D 场景。

3. **three.js**:
   - three.js 是一个基于 WebGL 的高性能、易用的 JavaScript 库,用于在 Web 浏览器中创建和展示 3D 内容。
   - three.js 对 WebGL 的原生 API 进行了封装和抽象,提供了一套简洁且功能丰富的接口,使得开发者能够更快速地构建和管理 3D 场景、几何体、材质、光照、摄像机以及动画等内容,而无需深入掌握 WebGL 的复杂细节。

总结起来:
- 3D 是指三维图形技术的概念。
- WebGL 是实现网页端 3D 渲染的核心技术标准。
- three.js 则是建立在 WebGL 基础之上的一层高级库,为开发者提供了便捷高效的工具集以简化网页 3D 开发过程。

那么我们在缕清上述三者的关系之后,就明白了,我们可以通过学习three.js可以轻松的绕过学习webgl中的很多底层的知识,不至于一上来就让我们对webgl这个知识的学习难度而放弃他。

three.js

https://threejs.org/(官网地址)

我们在打开这个网站的时候可能会因为网速问题导致页面加载缓慢。

那么我们有什么方法能快速的打开这个呢,一种土豪的方式,利用梯子或者升级你的网速。那么另外一种方式是什么呢?

就是本地搭建一套这个网站的代码。

下面是three.js的github地址:https://github.com/mrdoob/three.js/

我们可以本地下载代码之后启动,然后本地去浏览这个网站上的东西,不就很快了吗

下载代码之后,运行命令npm run start

然后我们点docs/这个,就可以看到下面页面了

这样我们就可以愉快的去探索three.js了。

标签:浏览器,WebGL,three,js,图形,3D,搭建
From: https://www.cnblogs.com/shangguancn/p/18027424

相关文章

  • C# http请求 ( post方式 JSON格式 )
    直接上代码usingSystem.Net;usingSystem.IO;privatevoidbtnPost_Click(objectsender,EventArgse){this.txtResult.AppendText(DateTime.Now.ToString("yyyy-MM-ddHH:mm:ss")+"准备请求"+"\r\n");//js......
  • .net core 读取appsetting.json 封装
    /*需要引入的包Microsoft.Extensions.Configuration-提供配置的核心功能。Microsoft.Extensions.Configuration.Json-支持从JSON文件加载配置。Microsoft.Extensions.Configuration.FileExtensions-支持文件相关的配置,如设置基路径。Microsoft.Extensions.Configura......
  • js闭包和循环
    for(vari=1;i<=5;i++){setTimeout(functiontimer(){console.log(i);},i*1000);}以上代码输出都是6。因为整个过程中只有i一个变量,所有循环共享i变量,循环执行完毕(定时器执行之前)后i为6for(vari=1;i<=5;i++){letj=i;setTimeout(function......
  • js 基础知识
     01-数据类型值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。02-检测数据类型2.1-typeof<!DOCTYPEhtml><ht......
  • windows安装bun.js
    1.下载bun可执行文件,地址如下https://github.com/oven-sh/bun/releases/download/canary/bun-windows-x64.zip 2.解压到D盘修改文件夹名为bun并且创建快捷方式 3.增加环境变量 4.验证  bun--help&bun-v......
  • SDWAN组网是怎么降低网络搭建成本
    在当今数字化时代,企业的网络架构扮演着至关重要的角色,直接影响到业务的高效运转和信息的安全传输。然而,传统的网络架构往往伴随着高昂的搭建和维护成本,对于许多企业来说是一个不小的负担。而SD-WAN组网作为一种新型的网络架构技术,为企业降低网络搭建成本提供了良好的解决方案。 ......
  • H5无插件流媒体播放器EasyPlayer.js集成后不能自动播放是什么原因?
    流媒体播放器EasyPlayer是TSINGSEE青犀流媒体组件系列中关注度较高的产品,经过多年的发展和迭代,目前已经有多个应用版本,包括RTSP版、RTMP版、Pro版,以及js版,其中js版本作为网页播放器,受到了用户的广泛使用。在功能上,EasyPlayer支持直播、点播、录像、快照截图、MP4播放、多屏播放、......
  • 2024-02-21 js 工具类(一行代码)
    1.获取浏览器Cookie的值constcookie=name=>`;${document.cookie}`.split(`;${name}=`).pop().split(';').shift();cookie('_ga');//Result:"GA1.2.1929736587.1601974046"2.将RGB转换为十六进制constrgbToHex=(r,g,b)=>&......
  • selenium执行js与浏览器操作
    执行js前置准备importtimefromseleniumimportwebdriverfromselenium.webdriver.edge.serviceimportServiceser=Service()ser.path=r'D:\xxx\chromedriver.exe'bro=webdriver.Chrome(service=ser)bro.get("https://www.baidu.com")#隐士......
  • JS 中的二进制 - Blob 与 ArrayBuffer
    零、参考资料《图解+实战》File、Blob、TypedArray、DataViewJavaScript也有操作二进制的一天:聊ArrayBuffer和Blob聊聊JS的二进制家族:Blob、ArrayBuffer和Buffer一、定义宏观:Blob-表示一个不可变、原始数据的类文件对象,可读不可写微观:ArrayBuffer-表示通用的原始......