当前位置: 首页 > news >正文

Three.js 入门实战:安装、基础概念与第一个场景⭐

学习本章节你不必要追求细节,你只需要了解基本的3D场景需要哪些元素组成,如何通过组成3D场景的元素属性调整来控制3D物体或者场景即可。

在上一篇文章中我们初识了 Three.js,今天我们正式进入实战环节 🎯

前置准备:

  • ✅ 你需要能够科学上网

本文将带你完成以下目标:

  • ✅ 安装 Three.js
  • ✅ 理解 Three.js 的核心构成元素
  • ✅ 创建一个包含多个物体、光照和交互控制的 3D 场景

让我们开启这趟 Web 3D 的动手之旅 🚀


🧱 Three.js 的基础构成

Three.js 的世界由几个关键部分构成,它们共同构成了一个完整的 3D 场景系统。

1️⃣ Scene(场景)

Scene 就是你的 3D 世界舞台,所有内容都必须添加进场景才能渲染出来。

const scene = new THREE.Scene();

2️⃣ Camera(相机)

Camera 决定了你从哪个角度、位置观察这个 3D 世界。

Three.js 支持多种相机,最常用的是透视相机 PerspectiveCamera,它模拟了人眼的透视感:

const camera = new THREE.PerspectiveCamera(
  75,                      // 视野角度(FOV)
  window.innerWidth / window.innerHeight, // 宽高比
  0.1,                     // 最近可见距离
  1000                     // 最远可见距离
);
camera.position.z = 5; // 往后移动相机,才能看到物体

3️⃣ Renderer(渲染器)

Renderer 将场景和相机生成的画面真正“画”到网页上。

const renderer = new THREE.WebGLRenderer({ antialias: true }); // 抗锯齿更平滑
renderer.setSize(window.innerWidth, window.innerHeight); // 设置画布大小
document.body.appendChild(renderer.domElement); // 添加到页面

4️⃣ Mesh(网格) = 几何体 + 材质

Mesh 是场景中的物体,由几何体 + 材质组成。

const geometry = new THREE.BoxGeometry(); // 立方体几何体
const material = new THREE.MeshStandardMaterial({ color: 0x00ff88 }); // 带光照的材质
const cube = new THREE.Mesh(geometry, material); // 网格对象
scene.add(cube); // 添加到场景中

5️⃣ Light(光源)

光源决定了你看到的物体亮不亮、怎么亮。

const light = new THREE.PointLight(0xffffff, 1); // 白色点光源,强度为1
light.position.set(1, 1, 1); // 放在场景右上角
scene.add(light);

常用光源有:

  • AmbientLight:环境光,照亮所有物体

  • PointLight:点光源,从一点向外发射

  • DirectionalLight:平行光,如太阳光

6️⃣ Controls(交互控制器)

Controls 允许用户用鼠标交互:旋转、缩放、移动视角。

const controls = new THREE.OrbitControls(camera, renderer.domElement);

🧪 实战一:CDN 快速体验方式(零依赖,适合初学者)

  • 演示地址:https://stackblitz.com/edit/stackblitz-starters-qktmohfp?file=script.js💻

three-cdn

🧪 实战二:使用 Vite + npm 安装 three(三方依赖方式)

  • 演示地址:https://stackblitz.com/edit/vitejs-vite-uxm1c3tr?file=index.html💻

  • ✅ 增加鼠标控制

  • ✅ 增加窗口大小自适应

three-vite

📌 总结

🎉 到这里,你已经掌握了创建 Three.js 场景的基本流程:

  • 设置 Scene / Camera / Renderer

  • 添加 Mesh / Light / Controls

  • 实现响应式和用户交互

这也是所有 Three.js 项目的基本框架,掌握它你就迈出第一步啦!


🔮 下一篇预告:Three.js + React = 更强的魔法 ✨

下一节我们将:

  • 使用 react-three-fiber 快速重构上述场景

  • 体验将 Three.js 融入 React 组件系统

为我们即将开发的 个人主页 3D 场景 打下基础 💼🌌

相关文章:

  • go语言应该如何学习
  • SQL:JOIN 完全指南:从基础到实战应用
  • EFA-YOLO:一种高效轻量的火焰检测模型解析
  • 【期中准备】电路基础(西电)
  • MySQL事务管理
  • 3 版本控制:GitLab、Jenkins 工作流及分支开发模式实践
  • Kubernetes 深入浅出系列 | 容器剖析之容器安全
  • 链路聚合+vrrp
  • 写给新人的深度学习扫盲贴:ReLu和梯度
  • DocLayout-YOLO:通过多样化合成数据与全局-局部感知实现文档布局分析突破
  • 【Java内存区域有什么?每个区域有什么作用?】
  • 跨站脚本攻击(XSS)与跨站请求伪造(CSRF)的介绍、区别和预防
  • 程序化广告行业(74/89):行业发展驱动因素与未来展望
  • 帆软fvs文件中某表格新增数据来声提醒
  • Kotlin日常使用函数记录
  • JavaScript逆向工程实战:如何精准定位加密参数生成位置
  • 大模型学习七:‌小米8闲置,直接安装ubuntu,并安装VNC远程连接手机,使劲造
  • 国网B接口协议资源上报流程详解以及上报失败原因(电网B接口)
  • 嵌入式---灰度传感器
  • nginx镜像创建docker容器,及其可能遇到的问题
  • 电子商务网站建设首要问题是/百度地图疫情实时动态
  • 泰州泛亚信息做网站怎么样/深圳关键词推广优化
  • 网站怎么做适配/营销策划方案ppt模板
  • 重庆建设安全管理网站/深圳营销型网站设计公司
  • 云南做网站报价/国际军事新闻最新消息
  • 南汇整站seo十大排名/武汉整站优化