three.js学习
最近看见太多three.js做出来的有意思的东西了于是准备系统的学一下
three.js
学习计划和学习记录
2023.11.25
计划
踩坑
- 官方包是不支持Ts的(我使用的是vue+ts),所以要按照包
@types/three
。npm i --save-dev @types/three
另一个方法:
创建或查找shims-vue.d.ts
文件,加入:重启后生效1
2
3
4
5
6declare module '*.vue' {
import Vue from 'vue'
export default Vue
}
//declare module 'xxx'对应库名
declare module 'three'
2021.11.26
计划
- 学习基础概念,主要看博客Three.js基础入门(一) - 掘金 (juejin.cn)
- 开始写学习笔记
待执行计划
- 看连接文章
Three.js
概念
前置知识
webGl和OpenGl
WebGL是一项结合了HTML5和JavaScript,用来在网页上绘制和渲染复杂三维图形的技术。WebGL通过JavaScript操作OpenGL接口的标准,把三维空间图像显示在二维的屏幕上。
OpenGL是开放式图形标准,跨编程语言、跨平台,Javascript、Java 、C、C++ 、 python 等都能支持OpenGL ,OpenGL的Javascript实现就是WebGL。OpenGL ES 2.0是OpenGL的子集,针对手机、游戏主机等嵌入式设备而设计。
Canvas
Canvas是HTML5的画布元素,在使用Canvas时,需要用到Canvas的上下文,可以用2D上下文绘制二维的图像,也可以使用3D上下文绘制三维的图像,其中3D上下文就是指WebGL。
Threejs
Three.js是基于webGL的封装的一个易于使用且轻量级的3D库
应用场景
3D游戏、3D模型展示、数据可视化、web VR、
例子:跳一跳小游戏
前置准备
- 浏览器
- 基础的几何知识(三维坐标系)
- 模块化导入库知识
开始
1. 三大要素
场景(scene)、相机(camera)、渲染器(renderer)
建模软件也是这一套逻辑
场景
var scene = new THREE.Scene()
相机
透视投影相机(perspectiveCamera)【重要】
var camera = new THREE.PerspectiveCamera(fov, aspect, near, far);
正交投影相机(OrthographicCamera )
微信跳一跳就是用的这个吧
var camera = new THREE.OrthographicCamera( left,right, top,bottom, near, far )
渲染器
var renderer = new THERR.WebGLRenderer();
2.基本元素
建模软件也是这一套逻辑+1
物体
- 几何体模型(Geometry):物体
- 材质(Material):皮肤
- 网格(Mesh):物体的展现形式