📜  用threejs制作三角形 - Javascript(1)

📅  最后修改于: 2023-12-03 15:27:09.584000             🧑  作者: Mango

使用threejs制作三角形

简介

three.js是基于WebGL的JavaScript 3D库,为使用JavaScript创建3D图形提供了易于使用的接口。

本文将介绍如何使用three.js创建一个简单的三角形。

准备工作

首先需要引入three.js库。可以在HTML中通过以下代码引入:

<script src="https://cdn.bootcdn.net/ajax/libs/three.js/r128/three.min.js"></script>
创建一个场景

在three.js中,所有的3D对象都需要被添加到场景中才能被渲染出来。因此,我们需要先创建一个场景:

const scene = new THREE.Scene();
添加相机

相机用于定义可见区域。我们可以使用正交或透视摄像机来解释场景。在这个例子中,我们将使用透视相机:

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

其中75表示视角角度,window.innerWidth / window.innerHeight表示渲染区域的宽高比,0.1表示可见最近距离,1000表示可见最远距离。

为了使相机能够看到场景,我们需要将它放置在正确的位置:

camera.position.z = 5;
添加渲染器

渲染器将场景和相机渲染成像素。我们可以使用默认的WebGL渲染器:

const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

其中,setSize()方法定义了渲染器输出画布的大小,document.body.appendChild()将渲染器的画布添加到网页中。

创建三角形

创建一个三角形需要定义三个顶点。在three.js中,每个顶点都是一个THREE.Vector3对象。

const triangleGeometry = new THREE.Geometry();
const v1 = new THREE.Vector3(0, 0, 0);
const v2 = new THREE.Vector3(1, 0, 0);
const v3 = new THREE.Vector3(0, 1, 0);
triangleGeometry.vertices.push(v1);
triangleGeometry.vertices.push(v2);
triangleGeometry.vertices.push(v3);

接下来,我们需要将这三个顶点连接起来形成一个三角形:

triangleGeometry.faces.push(new THREE.Face3(0, 1, 2));

最后,我们需要创建一个材质并将它应用于三角形:

const triangleMaterial = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const triangleMesh = new THREE.Mesh(triangleGeometry, triangleMaterial);
scene.add(triangleMesh);
渲染场景

最后一步是使用渲染器将场景和相机渲染成像素:

function animate() {
  requestAnimationFrame(animate);
  renderer.render(scene, camera);
}

animate();
完整代码
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 triangleGeometry = new THREE.Geometry();
const v1 = new THREE.Vector3(0, 0, 0);
const v2 = new THREE.Vector3(1, 0, 0);
const v3 = new THREE.Vector3(0, 1, 0);
triangleGeometry.vertices.push(v1);
triangleGeometry.vertices.push(v2);
triangleGeometry.vertices.push(v3);
triangleGeometry.faces.push(new THREE.Face3(0, 1, 2));
    
const triangleMaterial = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const triangleMesh = new THREE.Mesh(triangleGeometry, triangleMaterial);
scene.add(triangleMesh);

function animate() {
  requestAnimationFrame(animate);
  renderer.render(scene, camera);
}

animate();
总结

使用three.js创建三角形的过程比较简单,只需定义三个顶点并连接它们,然后创建一个材质并将它应用于三角形即可。本文只是介绍了基本的流程,three.js还提供了更加高级的功能和可定制选项。