three.js
是一个基于 WebGL 的 JavaScript 3D 库,用于在网页上创建和显示动画3D计算机图形。它简化了 WebGL 的使用,允许开发者使用更高级的抽象来创建复杂的3D场景。
以下是一个简单的 three.js
示例,展示了一条线如何在场景中移动:
// 引入 three.js 库
import * as THREE from 'three';
// 创建场景、相机和渲染器
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// 创建一条线
const material = new THREE.LineBasicMaterial({ color: 0x00ff00 });
const points = [];
for (let i = 0; i < 100; i++) {
points.push(new THREE.Vector3(i * 0.1, Math.sin(i * 0.2) * 5, 0));
}
const geometry = new THREE.BufferGeometry().setFromPoints(points);
const line = new THREE.Line(geometry, material);
scene.add(line);
camera.position.z = 15;
// 动画函数
function animate() {
requestAnimationFrame(animate);
// 更新线的位置
const positions = line.geometry.attributes.position.array;
for (let i = 0; i < positions.length; i += 3) {
positions[i] -= 0.01; // 向左移动
if (positions[i] < -5) positions[i] = 5; // 循环移动
}
line.geometry.attributes.position.needsUpdate = true;
renderer.render(scene, camera);
}
animate();
问题:线条移动时出现卡顿或不流畅的现象。
原因:
requestAnimationFrame
的使用不当可能导致帧率不稳定。解决方法:
通过上述方法,可以有效提升线条移动的流畅性和整体性能。
领取专属 10元无门槛券
手把手带您无忧上云