OrbitControls

OrbitControls

3D虚拟工厂在线体验

描述

Orbit controls(轨道控制器)可以使得相机围绕目标进行轨道运动。

Constructor

OrbitControls( object : Camera, domElement : HTMLDOMElement )

参数 类型 描述
object Camera (必须)将要被控制的相机。该相机不允许是其他任何对象的子级,除非该对象是场景自身。
domElement HTMLDOMElement 用于事件监听的HTML元素。

Events

事件名 描述
change 当摄像机被组件改变时触发。
start 初始化交互时触发。
end 当交互结束时触发。

属性

属性 类型 默认值 描述
.autoRotate Boolean false 设为true以自动围绕目标旋转。需在动画循环中调用.update()
.autoRotateSpeed Float 2.0 自动旋转的速度(60fps时每30秒转一圈)。需调用.update()
.dampingFactor Float 0.05 启用阻尼时的惯性大小。需调用.update()
.domElement HTMLDOMElement - 用于监听事件的元素(必须在构造函数中传入)。
.enabled Boolean true 是否响应操作。
.enableDamping Boolean false 启用阻尼(惯性)效果。需调用.update()
.enablePan Boolean true 是否启用平移。
.enableRotate Boolean true 是否启用旋转。
.enableZoom Boolean true 是否启用缩放。
.keyPanSpeed Float 7 键盘平移速度(像素/按键)。
.keys Object 方向键 控制平移的按键代码(默认使用四个方向键)。
.maxAzimuthAngle Float Infinity 水平旋转角度上限(弧度)。
.maxDistance Float Infinity 相机外移距离上限(仅PerspectiveCamera)。
.maxPolarAngle Float Math.PI 垂直旋转角度上限(0到π)。
.maxZoom Float Infinity 相机缩小上限(仅OrthographicCamera)。
.minAzimuthAngle Float -Infinity 水平旋转角度下限(弧度)。
.minDistance Float 0 相机内移距离下限(仅PerspectiveCamera)。
.minPolarAngle Float 0 垂直旋转角度下限(0到π)。
.minZoom Float 0 相机放大下限(仅OrthographicCamera)。
.mouseButtons Object LEFT:旋转 MIDDLE:缩放 RIGHT:平移 鼠标按键功能映射。
.object Camera - 被控制的相机。
.panSpeed Float 1 平移速度。
.position0 Vector3 - 内部状态存储(用于.reset())。
.rotateSpeed Float 1 旋转速度。
.screenSpacePanning Boolean true 是否在屏幕空间内平移。
.target0 Vector3 - 内部状态存储(用于.reset())。
.target Vector3 - 相机轨道围绕的目标点。
.touches Object ONE:旋转 TWO:缩放平移 触摸操作功能映射。
.zoom0 Float - 内部状态存储(用于.reset())。
.zoomSpeed Float 1 缩放速度。
.zoomToCursor Boolean false 是否缩放到光标位置。

方法

方法 参数 返回值 描述
.dispose() - undefined 移除所有事件监听。
.getAzimuthalAngle() - radians 获取当前水平旋转弧度。
.getPolarAngle() - radians 获取当前垂直旋转弧度。
.getDistance() - Float 获取相机到目标的距离。
.listenToKeyEvents(domElement) domElement: HTMLDOMElement undefined 为指定元素添加按键监听(推荐window)。
.reset() - undefined 重置到上次保存的状态或初始状态。
.saveState() - undefined 保存当前控制器状态。
.stopListenToKeyEvents() - undefined 移除按键监听。
.update(deltaTime) deltaTime: Number(可选) Boolean 更新控制器。手动改变相机变换后必须调用;若启用自动旋转.autoRotate或阻尼.enableDamping,则需在更新循环中调用。可选参数deltaTime(秒)用于使自动旋转速度不受帧率影响。

例子

typescript 复制代码
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
const renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 10000 );
const controls = new OrbitControls( camera, renderer.domElement );
//controls.update() must be called after any manual changes to the camera's transform
camera.position.set( 0, 20, 100 );
controls.update();
function animate() {
	requestAnimationFrame( animate );
	// required if controls.enableDamping or controls.autoRotate are set to true
	controls.update();
	renderer.render( scene, camera );
}
相关推荐
爱看书的小沐1 天前
【小沐杂货铺】基于Three.js绘制三维艺术画廊3DArtGallery (Three.js,WebGL)
javascript·3d·webgl·three.js·babylon.js·三维画廊
郝学胜-神的一滴1 天前
[简化版 GAMES 101] 计算机图形学 07:图形学投影完全推导
c++·unity·图形渲染·three.js·unreal engine
CAE虚拟与现实2 天前
五一假期闲来无事,来个前段、后端的说明吧
前端·后端·vtk·three.js·前后端
郝学胜-神的一滴3 天前
罗德里格斯旋转公式(Rodrigues‘ Rotation Formula)完整推导
c++·unity·godot·图形渲染·three.js·unreal
柳杉7 天前
有了大屏设计稿还不够,我又用 gpt-image-2把里面的素材扒了出来
前端·three.js·数据可视化
用户78937733908538 天前
Vue3 + Three.js 仓储数字孪生:按需渲染架构与五大核心功能复盘
vue.js·three.js
孙凯亮12 天前
Three.js VR 模拟器(Immersive Web Emulator)踩坑全记录:从报错到可用,避坑指南一次性奉上
前端·three.js
苏武难飞15 天前
THREE.JS实现一个魔法镜子!
前端·css·three.js
郝学胜-神的一滴15 天前
[简化版 Games 101] 计算机图形学 05:二维变换下
c++·unity·图形渲染·three.js·opengl·unreal
qq_120840937117 天前
Three.js 场景性能优化实战:首屏、帧率与内存的工程化治理
开发语言·javascript·性能优化·three.js