Three.js的基础概念

WebGL

一个js的API,通过调用浏览器的GPU显卡来画图的接口,来实现丰富的交互过程。但是因为webGL的语法很复杂,需要会很多的GLSL(着色器语言),所以通过对这些语言封装的three.js应用而生。

Three.js

一个开源的轻量级的3D库。Three.js 封装了 WebGL 的细节,提供了一个简单易用的对象模型。通过 Three.js,你可以使用直观的"场景"、"相机"、"材质"和"灯光"等概念来构建 3D 应用,而无需从零开始编写复杂的图形渲染管线。

坐标系及辅助工具

这一节学习世界坐标系和局部坐标系,世界坐标是唯一的、不可变的;局部坐标是每个 Object3D 自己的一套,随父级一起动。 两者之间靠 matrixWorld 转换。

AxesHelper 创建坐标系,将场景或者物体的坐标轴可视化显示

复制代码
const axesHelper = new THREE.AxesHelper(30);//参数表示坐标轴线条的长度
scene.add(axesHelper);

GridHelper 一个水平网格,通常用来做地面的参考

复制代码
// 参数 1:网格的总长度和宽度
// 参数 2:网格细分的次数(每边有多少个格子)
const gridHelper = new THREE.GridHelper(50, 10);
scene.add(gridHelper);

光影,让场景变得立体

通过光照、光照的方向以及灯光布局的方式让物体变的有阴影。

光源包含环境光和平行光。环境光是一种均匀照亮场景中的光,用来充当补光的作用;平行光模拟的是主光源,用来使物体产生阴影和棱角的。

环境光:

复制代码
const ambientLight = new THREE.AmbientLight(0xffffff, 0.5)
scene.add(ambientLight)

平面光

复制代码
const sunLight = new THREE.DirectionalLight(0xffffff, 1.5);
sunLight.position.set(10,20,10)
sunLight.castShadow = true;

实践参考

加载3D模型 | Threejs指南

相关推荐
deli0071 小时前
黏菌没有大脑,3000 个 Physarum 粒子跑 12973 步自己铺出了迷宫最短路
前端
凌云若寒1 小时前
BarTender提示#807错误:无法在拥有其他许可证的Licensing Service上激活节点锁定的 Professional 版许可证 的解决办法
运维·服务器·前端·学习·软件需求
嘟嘟同学和妮妮同学1 小时前
用原生 JS 做了一个中国历史帝皇梳理的可视化站(7 朝 77 帝 + Leaflet 地图)
前端
黄权光1 小时前
【微信小程序】uni-app + Vue3 + Vite 的小程序项目实现「进入指定范围才能打卡」的考勤功能
前端
西柚小萌新1 小时前
【LLM&&AI应用开发 八股文】--4.2.Agent智能体(中)
前端·javascript·react.js
逐米时代2 小时前
远程运维诊断减少到场率
java·服务器·前端
Java后端的Ai之路2 小时前
03_React_JSX
前端·react.js·前端框架
颜进强2 小时前
26 · NestJS 基础篇 · 全专栏总结:五个阶段,一次收拢
前端·后端·ai编程
风寄巴山秋2 小时前
OpenBMC:Web 页面功能异常排查
运维·服务器·前端·架构