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

初识 Three.js:开启你的 Web 3D 世界 ✨

3D 技术已经不再是游戏引擎的专属,随着浏览器技术的发展,我们完全可以在网页上实现令人惊艳的 3D 效果。而 Three.js,作为 WebGL 的封装库,让 Web 3D 的大门向更多开发者敞开了。

这是我开启这个 Three.js 专栏的第一篇文章,我们将简单认识一下 Three.js,并为后续的项目开发打下基础。


🔍 什么是 Three.js?

Three.js 是一个 JavaScript 3D 库,它封装了 WebGL,使开发者可以用更简单的方式在浏览器中创建和展示 3D 内容。

通过 Three.js,你可以轻松实现以下效果:

  • 🧱 创建 3D 模型和场景
  • 🖼️ 加载纹理和材质
  • 💡 添加光照、阴影、动画等
  • 🎮 控制摄像机视角、交互行为

适合以下人群:

  • 想让网页更酷的前端开发者
  • 想快速构建可视化场景的可视化工程师
  • 想把 3D 应用到展示中的设计师

✨ 你可以做什么?

以下是 Three.js 常见的使用场景:

  • 🛍️ 产品展示(3D 鞋子、家具、模型旋转等)
  • 📊 数据可视化(地球、地图、图表)
  • 🧑‍💻 个人主页(酷炫背景、交互动画)
  • 🎮 小型 3D 游戏开发

🧰 常用资源推荐

名称简介链接
官网Three.js 官方网站https://threejs.org
文档官方 API 文档https://threejs.org/docs/
示例各种 Three.js 示例https://threejs.org/examples/
GitHub项目源码仓库https://github.com/mrdoob/three.js
React Three FiberReact 开发者专用封装https://docs.pmnd.rs/react-three-fiber
模型/纹理下载免费素材库https://sketchfab.com, https://poly.pizza, https://readyplayer.me/
Three.js中文网其他博主网站http://www.webgl3d.cn/pages/4a14ce/

🚀 Hello Three.js!

先放一个最简单的示例:创建一个旋转的立方体 👇,你可以在菜鸟教程运行下面示例:在线运行html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Hello Three.js!</title>
    <style>body { margin: 0; }</style>
  </head>
  <body>
    <script src="https://unpkg.com/three@0.160.1/build/three.min.js"></script>
    <script>
      // 创建场景
      const scene = new THREE.Scene();

      // 创建相机
      const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
      camera.position.z = 5;

      // 创建渲染器
      const renderer = new THREE.WebGLRenderer();
      renderer.setSize(window.innerWidth, window.innerHeight);
      document.body.appendChild(renderer.domElement);

      // 创建几何体和材质
      const geometry = new THREE.BoxGeometry();
      const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
      const cube = new THREE.Mesh(geometry, material);
      scene.add(cube);

      // 动画循环
      function animate() {
        requestAnimationFrame(animate);
        cube.rotation.x += 0.01;
        cube.rotation.y += 0.01;
        renderer.render(scene, camera);
      }
      animate();
    </script>
  </body>
</html>

🔮 下一篇预告

接下来我们将手把手写一个更完整的场景,讲解:

  • 如何添加多个物体

  • 如何设置光源与阴影

  • 如何实现用户交互(如鼠标旋转控制)

后续我们还会结合 React 使用 react-three-fiber 构建一个炫酷的个人主页项目 🖥️✨

相关文章:

  • 【android bluetooth 框架分析 01】【关键线程 2】【bt_stack_manager_thread线程介绍】
  • 告别运动控制不同步:某车企用异构PLC实现99.98%焊接合格率
  • VMware Fusion Pro 13 for Mac虚拟机软件
  • LabVIEW运动控制(三):EtherCAT运动控制器的高效加工指令自定义封装
  • 滤波器:模拟滤波器和数字滤波器的区别
  • 【嵌入式系统设计师】知识点:第9章 嵌入式系统安全性基础知识
  • Chrome 浏览器插件收录
  • 10:00开始面试,10:08就出来了,问的问题有点变态。。。
  • QML面试笔记--UI设计篇06信息展示控件
  • 在shell脚本中,$@和$#的区别与联系
  • 【Python中读取并显示遥感影像】
  • 数据库基线检查-MongoBD/Kingbaser人大金仓/Oracel/PostgreSQL/Mysql安全加固
  • 【C++】Stack Queue 仿函数
  • linux下MMC_TEST的使用
  • skynet.rawcall使用详解及应用场景
  • jspm会计凭证自动录入预处理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • mindie1.0新特性及调试问题总结
  • 鸿蒙app开发中Emitter 订阅器
  • Reactive编程框架与工具
  • Java 集合介绍
  • 游戏论|暴君无道,吊民伐罪——《苏丹的游戏》中的政治
  • 商务部再回应中美经贸高层会谈:美方要拿出诚意、拿出行动
  • 大风暴雨致湖南岳阳县6户房屋倒塌、100多户受损
  • 对话|蓬皮杜策展人布莱昂:抽象风景中的中国审美
  • 首家股份行旗下AIC来了,兴银金融资产投资有限公司获批筹建
  • 证监会主席吴清:我们资本市场最重要的特征是“靠谱”