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