Three.js实战--水天一色的小岛
发布人:shili8
发布时间:2025-03-02 12:58
阅读次数:0
**三维小岛实战**
在本文中,我们将使用 Three.js 库创建一个美丽的水天一色的小岛。我们将学习如何使用 Three.js 的各种功能,包括场景、摄像机、灯光、模型加载器等。
### 一、准备工作首先,我们需要安装 Three.js 库。如果你还没有安装,可以通过以下命令进行安装:
bashnpm install three
接下来,我们需要创建一个 HTML 文件来展示我们的小岛。我们将使用以下代码作为起点:
html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>水天一色的小岛</title> <style> body { margin:0; width:100%; height:100vh; padding:0; background-color: #f0f0f0; overflow: hidden; } canvas { display: block; } </style> </head> <body> <script src=" /> <script src="script.js"></script> </body> </html>
### 二、场景和摄像机在 Three.js 中,场景是整个3D 世界的容器。我们需要创建一个场景来放置我们的小岛。
javascript// 创建场景const scene = new THREE.Scene();
接下来,我们需要创建一个摄像机来观察我们的场景。摄像机决定了我们看到什么。
javascript// 创建摄像机const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight,0.1,1000); camera.position.z =5;
### 三、灯光在 Three.js 中,灯光是场景中的一个重要组成部分。我们需要创建一些灯光来照亮我们的小岛。
javascript// 创建点光源const pointLight = new THREE.PointLight(0xffffff,1,100); pointLight.position.set(5,5,5); // 添加到场景中scene.add(pointLight);
### 四、模型加载器在 Three.js 中,我们可以使用模型加载器来加载预先创建的3D 模型。我们将使用以下代码来加载一个小岛模型:
javascript// 加载模型const loader = new THREE.GLTFLoader(); loader.load(' (gltf) => { const model = gltf.scene; scene.add(model); });
### 五、渲染最后,我们需要渲染我们的场景。我们将使用以下代码来进行渲染:
javascript// 渲染场景const renderer = new THREE.WebGLRenderer({ canvas: document.getElementById('canvas'), antialias: true, }); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); } animate();
### 六、总结在本文中,我们学习了如何使用 Three.js 库创建一个美丽的水天一色的小岛。我们学会了如何使用场景、摄像机、灯光和模型加载器等功能来构建我们的3D 世界。
**完整代码**
javascript// script.js// 创建场景const scene = new THREE.Scene(); // 创建摄像机const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight,0.1,1000); camera.position.z =5; // 创建点光源const pointLight = new THREE.PointLight(0xffffff,1,100); pointLight.position.set(5,5,5); // 添加到场景中scene.add(pointLight); // 加载模型const loader = new THREE.GLTFLoader(); loader.load(' (gltf) => { const model = gltf.scene; scene.add(model); }); // 渲染场景const renderer = new THREE.WebGLRenderer({ canvas: document.getElementById('canvas'), antialias: true, }); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); } animate();
**注意**
本文中的代码仅供参考,可能需要根据具体需求进行调整。