本资源包包含20个基于Three.js的JavaScript代码示例,适合初学者学习3D图形编程。每个示例都旨在帮助用户掌握不同类型的3D场景构建技巧和动画效果。
**Three.js 入门教程概览**
Three.js 是一个基于 WebGL 的 JavaScript 库,它使得在浏览器中创建复杂的3D图形变得简单易行。这个压缩包包含20个不同的入门示例,旨在帮助初学者快速掌握 three.js 的基本概念和功能。通过这些源码,你可以了解如何设置场景、创建几何体、应用材质、光源、动画以及交互性等方面的知识。
**一、创建场景(Scene)**
在 three.js 中,所有3D对象都存在于一个场景(Scene)中。创建场景的代码通常如下:
```javascript
const scene = new THREE.Scene();
```
**二、摄像机(Camera)**
摄像机是观察3D世界的视角,我们需要至少一个摄像机来展示场景。例如,创建一个透视摄像机:
```javascript
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
```
参数分别代表视野角度、宽高比、近裁剪面和远裁剪面。
**三、渲染器(Renderer)**
渲染器负责将3D场景转化为2D图像显示在屏幕上。创建WebGL渲染器:
```javascript
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
```
**四、几何体(Geometries)**
几何体是3D对象的基础形状,如立方体、球体、圆柱等。创建一个立方体几何体:
```javascript
const geometry = new THREE.BoxGeometry(1, 1, 1);
```
**五、材质(Materials)**
材质决定了物体的外观。例如,创建一个红色的平面颜色材质:
```javascript
const material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
```
**六、组合几何体与材质(Mesh)**
将几何体与材质结合形成一个Mesh,这是3D场景中的实际对象:
```javascript
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
```
**七、光源(Lights)**
光源对于3D场景至关重要,它们影响着物体的阴影和颜色表现。添加一个简单的点光源:
```javascript
const light = new THREE.PointLight(0xffffff, 1, 100);
light.position.set(0, 0, 50);
scene.add(light);
```
**八、动画(Animations)**
使用 `requestAnimationFrame` 创建动画效果,例如让立方体旋转:
```javascript
function animate() {
requestAnimationFrame(animate);
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
renderer.render(scene, camera);
}
animate();
```
**九、交互性(Interactivity)**
通过监听鼠标或触摸事件,可以实现与3D对象的交互。例如,添加鼠标点击检测:
```javascript
document.addEventListener(mousedown, onDocumentMouseDown, false);
function onDocumentMouseDown(event) {
// 处理点击事件...
}
```
**十、加载外部模型(Loading External Models)**
three.js 还支持加载外部3D模型,如 `.obj` 或 `.gltf` 文件。可以使用 `Loader` 类加载模型:
```javascript
const loader = new THREE.GLTFLoader();
loader.load(path_to_model.gltf, function(gltf) {
scene.add(gltf.scene);
}, undefined, function(error) {
console.error(error);
});
```
通过这20个three.js入门示例,你可以逐步了解并掌握 three.js 的核心概念。实践每一个示例,理解其背后的代码逻辑,你将能够轻松地构建自己的3D项目。同时,不要忘记查阅官方文档和社区资源,以获取更深入的知识和技巧。祝你在 three.js 的世界里探索愉快!