📅  最后修改于: 2023-12-03 15:35:19.760000             🧑  作者: Mango
Three.js 是一个用于创建三维图形的 Javascript 库。它基于 WebGl 技术,可以在现代浏览器中实现高质量的渲染效果。
Three.js 提供了许多内置的几何形状(如立方体、球体等)、材质(如基本材质、纹理材质等)和光源(如点光源、方向光源等)。使用它们可以轻易地创建出自己的 3D 场景。
要使用 Three.js,可以通过 npm 安装:
npm install three
或者直接在 HTML 页面中引入它:
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
使用 Three.js 创建一个场景,需要以下几个步骤:
以下是一个基本的 Three.js 场景创建代码片段:
// 初始化渲染器
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// 初始化相机
const camera = new THREE.PerspectiveCamera(
75,
window.innerWidth / window.innerHeight,
0.1,
1000
);
camera.position.z = 5;
// 初始化场景
const scene = new THREE.Scene();
// 创建一个红色立方体
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
// 渲染场景
function animate() {
requestAnimationFrame(animate);
renderer.render(scene, camera);
}
animate();
Three.js 提供了许多更高级的功能,包括材质贴图、阴影、粒子系统等。以下是一些示例代码:
const texture = new THREE.TextureLoader().load("texture.jpg");
const material = new THREE.MeshBasicMaterial({ map: texture });
renderer.shadowMap.enabled = true;
const light = new THREE.DirectionalLight(0xffffff, 1);
light.position.set(1, 1, 1).normalize();
light.castShadow = true;
scene.add(light);
const groundGeometry = new THREE.PlaneGeometry(10, 10);
const groundMaterial = new THREE.MeshPhongMaterial({ color: 0xffffff });
const ground = new THREE.Mesh(groundGeometry, groundMaterial);
ground.receiveShadow = true;
scene.add(ground);
const geometry = new THREE.BufferGeometry();
const positions = [];
const colors = [];
for (let i = 0; i < 10000; i++) {
const x = Math.random() * 2000 - 1000;
const y = Math.random() * 2000 - 1000;
const z = Math.random() * 2000 - 1000;
positions.push(x, y, z);
const r = Math.random();
const g = Math.random();
const b = Math.random();
colors.push(r, g, b);
}
geometry.setAttribute("position", new THREE.Float32BufferAttribute(positions, 3));
geometry.setAttribute("color", new THREE.Float32BufferAttribute(colors, 3));
const material = new THREE.PointsMaterial({ size: 10, vertexColors: true });
const points = new THREE.Points(geometry, material);
scene.add(points);
使用 Three.js 可以轻易地创建出高质量的 3D 场景。它提供了许多常用的几何体、材质和光源,并且也支持更高级的功能。使用其中的 API,可以创建出令人惊叹的 3D 效果。