const animate = () => { requestAnimationFrame(animate) cube.rotation.x += 0.01 cube.rotation.y += 0.01 renderer.render(scene, camera) }
时间: 2024-04-10 09:27:23 浏览: 84
动画requestAnimationFrame实例
4星 · 用户满意度95%
上述代码定义了一个名为 `animate` 的函数,用于实现 Three.js 场景中的动画效果。
在 Three.js 中,动画通常使用 `requestAnimationFrame` 函数来循环调用更新渲染的函数,从而创建连续的动画效果。
在上述代码中,`requestAnimationFrame(animate)` 表示在下一帧开始之前调用 `animate` 函数,从而实现循环调用。
在 `animate` 函数中,我们对 `cube` 进行了旋转操作,使其绕 X 轴和 Y 轴旋转。这是通过修改 `cube.rotation.x` 和 `cube.rotation.y` 的值来实现的。
最后,我们使用 `renderer.render(scene, camera)` 将场景渲染到画布上,更新显示结果。
以下是示例代码:
```jsx
import * as THREE from 'three';
const animate = () => {
requestAnimationFrame(animate);
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
renderer.render(scene, camera);
};
// 在之前的代码基础上添加 animate 函数的调用
const scene = new THREE.Scene();
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
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);
animate(); // 调用 animate 函数开始动画循环
```
通过调用 `animate` 函数,我们启动了一个循环,每次循环都会更新 `cube` 的旋转,并渲染场景。
希望这可以帮助你理解如何使用 `requestAnimationFrame` 和 `animate` 函数来实现 Three.js 场景中的动画效果。
阅读全文