threejs 相机OrbitControls常用方法及属性

相机控件OrbitControls

通过OrbitControls可以对三维场景进行缩放、平移、旋转,本质上改变的不是场景,而是相机的参数,相机的位置角度不同,同一个场景的渲染效果是不一样,比如相机围绕着一个场景旋转,就像场景旋转一样
调用OrbitControls时需要引入OrbitControls.js文件

import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'

在这里插入图片描述

实现旋转缩放平移
controls = new OrbitControls(camera, renderer.domElement)
controls.enablePan =false;  // 禁止右键拖拽
controls.enableZoom =false; // 禁止缩放 默认true

通过.enableRotate属性可以控制是否允许鼠标左键旋转场景,.enableRotate属性默认值true。

controls.enableRotate =false; // 禁止旋转

设置缩放范围
在实际应用中,想控制一个产品缩放范围, 可以通过相机空间OrbitControls的.minZoom和.maxZoom属性实现

controls.minZoom = 0.5;
controls.maxZoom = 2;

设置旋转范围
展示一个三维场景,控制360度旋转范围,比如一辆轿车,不希望用户看到轿车的底盘,你可以通过设置相机的旋转范围属性来实现。
通过.minPolarAngle.maxPolarAngle属性控制上下360度的旋转范围
通过.minAzimuthAngle.maxAzimuthAngle属性控制左右360度的旋转范围
上下左右两个360度旋转也就是常说的720旋转展示。

// 上下旋转范围

controls.minPolarAngle =0;
controls.maxPolarAngle =Math.PI;

// 左右旋转范围

controls.minAzimuthAngle = -Math.PI * (100/180);
controls.maxAzimuthAngle =Math.PI * (100/180);

属性介绍

属性类型默认值描述
autoRotateBooleanfalse设定为true时, 相机自动围绕目标旋转但必须在animation中循环调用update()
enableDampingBooleanfalse设置为true则启用阻尼(惯性),用来给控制相机一个重量,必须调用update()在你的animation循环中
dampingFactorFloatenableDamping为true时使用阻尼惯性(可理解为阻止向一个方向移动)
enabledBooleantrue是否启用控件
enableKeysBooleantrue能否用键盘控制,←-↑-→↓四个键控制物体的移动
keys四个箭头键{LEFT: 37,UP: 38,RIGHT: 39,DOWM:40}Object控制相机平移的四个键
enablePanBooleantrue相机平移
panSpeedFloat1移动的速度
keyPanSpeedFloat每按一次控制方向键移动7 .0像素相机平移的速度
maxAzimuthAngleFloatInfinity水平旋转,范围-Math.PI~Math.PI 或者Infinity
maxPolarAngleFloat-Infinity水平旋转,范围-Math.PI~Math.PI 或者-Infinity
minAzimuthAngleFloatMath.Pl垂直旋转,范围0~Math.PI
minPolarAngleFloat0垂直旋转,范围0~Math.PI
maxDistanceFloatInfinity拉远镜头(只能用在PerspectiveCamera)
minDistanceFloat0拉近镜头
maxZoomFloatInfinity拉远镜头(只能用在Othorg[ aphicCamera)
minZoomFloatQ拉近镜头
zoomSpeedFloat1zoom(变焦)的速度

方法介绍

方法描述
dispose()null移除所有的事件监听
getAzimuthalAngle()radians获得用弧度表示的当前水平旋转角度
getPolarAngle()radians获得用弧度表示的当前垂直旋转角度
reset()null通过最近1次调用saveState()或者 初始状态来重置为当前的状态
saveState()null保存当前控制的状态,可以稍后通过reset()来恢复
update()false更新控件,在手动改变了摄像机的钻换后必须调用。在设置了autoRotate或enableDamping时也要在循环中调用

该文引用于文章51CTO博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值