在实际项目中,为了确保渲染内容在窗口大小变化时能够正确自适应,我们需要监听 window
的 resize
事件,并更新相机和渲染器的参数。本文将展示如何实现这一功能。
1. 初始化场景、相机和渲染器
首先,我们初始化 Three.js 场景、相机和渲染器。
// 初始化场景 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 geometry = new THREE.BoxGeometry(1, 1, 1); const material = new THREE.MeshNormalMaterial(); const cube = new THREE.Mesh(geometry, material); scene.add(cube);
2. 监听 resize
事件
接下来,我们添加一个事件监听器,监听 window
的 resize
事件,并在事件触发时更新相机的宽高比和渲染器的尺寸。
window.addEventListener('resize', onWindowResize, false); function onWindowResize() { // 更新相机的宽高比 camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); // 更新渲染器的尺寸 renderer.setSize(window.innerWidth, window.innerHeight); }
3. 渲染场景
最后,我们设置渲染循环,以便在窗口大小变化时重新渲染场景。
function animate() { requestAnimationFrame(animate); // 添加旋转动画 cube.rotation.x += 0.01; cube.rotation.y += 0.01; renderer.render(scene, camera); } animate();
4、总结
通过监听 window
的 resize
事件,我们可以在浏览器窗口大小变化时动态调整相机和渲染器的参数,使项目能够自适应窗口的变化。这种方法对于构建响应式 3D 应用至关重要。