three.js教程:从零搭建你的第一个3D场景

2026-11-14 0 9

为什么从 three.js 入手 3D

直接在浏览器里写 WebGL 并不轻松:着色器、矩阵、缓冲区都要手写。three.js 把这些底层封装成对象,你只需要关心场景里放什么、相机怎么看。它是目前前端 3D 内容最成熟的工具之一,社区示例多,遇到问题也容易找到参考。

第一步:把库引入项目

最省事的方式是用 ES 模块配合构建工具安装:

npm install three

然后在入口文件里按需导入,例如 import * as THREE from 'three'。如果只是做演示,也可以用 CDN 的模块版本,避免配置构建链。注意新版 three.js 已移除部分旧 API,跟着官方文档的版本走,能少踩很多坑。

第二步:理解场景三要素

three.js 的最小可运行结构由三部分组成,缺一不可:

场景 Scene

场景是一个容器,所有几何体、灯光都要加进去。它本身不渲染任何东西,只负责组织层级。

相机 Camera

常用透视相机 PerspectiveCamera,四个关键参数是视野角度、宽高比、近裁面、远裁面。相机不放进场景也能工作,但它的位置决定你看到什么,初学者最常见的”白屏”往往就是相机没对准物体。

渲染器 Renderer

WebGLRenderer 负责把场景画到画布上。创建后需要设置尺寸并挂到页面上,最后调用 renderer.render(scene, camera) 才会出图。

const scene = new THREE.Scene();

const camera = new THREE.PerspectiveCamera(45, innerWidth / innerHeight, 0.1, 1000);

camera.position.z = 5;

const renderer = new THREE.WebGLRenderer({ antialias: true });

renderer.setSize(innerWidth, innerHeight);

document.body.appendChild(renderer.domElement);

const cube = new THREE.Mesh(

new THREE.BoxGeometry(1, 1, 1),

new THREE.MeshBasicMaterial({ color: 0x44aa88 })

);

scene.add(cube);

renderer.render(scene, camera);

第三步:引入动画循环

静态画面只是开始。用 requestAnimationFrame 驱动渲染循环,在每帧里更新物体旋转或相机位置,画面才会动起来。需要注意的是,窗口尺寸变化时要同步更新相机的宽高比和渲染器尺寸,否则画面会拉伸。

第四步:处理好坐标与光照

没有灯光时,标准材质会显示为黑色,这是新手容易困惑的地方。可以先从 MeshBasicMaterial 入手,它不受光照影响;等场景跑通,再换成 MeshStandardMaterial 并添加环境光与方向光,观察明暗变化。坐标方面,默认相机朝 -Z 方向看,物体放在原点、相机沿 Z 轴后退是更直观的起点。

第五步:加载外部模型

实际项目很少全靠代码拼几何体。GLTF 格式是当前推荐的选择,用 GLTFLoader 加载后加入场景即可。模型加载是异步的,记得在回调里处理缩放和位置,否则容易出现模型过大或偏移的问题。加载前先确认模型单位与场景尺度匹配,能省下大量调试时间。

继续进阶的方向

掌握基础流程后,可以依次尝试动画系统、射线拾取、后期处理与性能优化。建议每次只加一个特性,保持示例可运行,这样学习 three.js 的过程会稳得多。

看过这篇文章的人,推荐看以下内容

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

版权声明:所有的源码、软件和资料,不得使用于非法商业用途,不得违反国家法律,一切关于该资源商业行为与本站无关。

免费cms模板 建站百科 three.js教程:从零搭建你的第一个3D场景 https://www.mianfeicms.com/12527.html

我是签名

相关文章

猜你喜欢
发表评论
暂无评论