轨道控制器
轨道控制器(OrbitControls)是一个用于控制相机视角的工具,它可以让用户通过鼠标或触摸设备来旋转、缩放和平移相机等操作。
文档:https://threejs.rocyuan.top/docs/?q=control#examples/zh/controls/OrbitControls
创建轨道控制器
创建轨道控制器有两个参数,第一个参数是相机,第二个参数是渲染器的 DOM 元素。
| 12
 3
 
 | import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
 const controls = new OrbitControls(camera, renderer.domElement);
 
 | 
常见操作
启用阻尼效果
阻尼效果可以让相机的旋转和缩放更加平滑。
| 12
 
 | controls.enableDamping = true; controls.dampingFactor = 0.05;
 
 | 
旋转、缩放、平移的禁用
| 12
 3
 
 | controls.enableRotate = false; controls.enableZoom = false;
 controls.enablePan = false;
 
 | 
旋转、缩放、平移的速度
| 12
 3
 
 | controls.rotateSpeed = 0.5; controls.zoomSpeed = 0.5;
 controls.panSpeed = 0.5;
 
 | 
旋转范围
| 12
 3
 4
 
 | controls.minAzimuthAngle = -Math.PI / 4; controls.maxAzimuthAngle = Math.PI / 4;
 controls.minPolarAngle = Math.PI / 4;
 controls.maxPolarAngle = Math.PI / 2;
 
 | 
缩放范围
| 12
 
 | controls.minDistance = 1; controls.maxDistance = 10;
 
 | 
自动旋转
| 12
 
 | controls.autoRotate = true; controls.autoRotateSpeed = 1;
 
 | 
设置目标点
| 1
 | controls.target.set(0, 0, 0); 
 | 
监听控制器事件
| 12
 3
 
 | controls.addEventListener("change", function () {console.log("相机位置:", camera.position);
 });
 
 | 
更新控制器
在渲染循环中调用 controls.update(),以确保控制器状态更新。
| 12
 3
 4
 5
 
 | function animate() {requestAnimationFrame(animate);
 controls.update();
 renderer.render(scene, camera);
 }
 
 | 
重置控制器
通过 reset 方法将控制器重置到初始状态。