当前位置: 首页 > java >正文

OrbitControls

描述

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

Constructor

OrbitControls( object : Camera, domElement : HTMLDOMElement )

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

Events

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

属性

属性类型默认值描述
.autoRotateBooleanfalse设为true以自动围绕目标旋转。需在动画循环中调用.update()
.autoRotateSpeedFloat2.0自动旋转的速度(60fps时每30秒转一圈)。需调用.update()
.dampingFactorFloat0.05启用阻尼时的惯性大小。需调用.update()
.domElementHTMLDOMElement-用于监听事件的元素(必须在构造函数中传入)。
.enabledBooleantrue是否响应操作。
.enableDampingBooleanfalse启用阻尼(惯性)效果。需调用.update()
.enablePanBooleantrue是否启用平移。
.enableRotateBooleantrue是否启用旋转。
.enableZoomBooleantrue是否启用缩放。
.keyPanSpeedFloat7键盘平移速度(像素/按键)。
.keysObject方向键控制平移的按键代码(默认使用四个方向键)。
.maxAzimuthAngleFloatInfinity水平旋转角度上限(弧度)。
.maxDistanceFloatInfinity相机外移距离上限(仅PerspectiveCamera)。
.maxPolarAngleFloatMath.PI垂直旋转角度上限(0到π)。
.maxZoomFloatInfinity相机缩小上限(仅OrthographicCamera)。
.minAzimuthAngleFloat-Infinity水平旋转角度下限(弧度)。
.minDistanceFloat0相机内移距离下限(仅PerspectiveCamera)。
.minPolarAngleFloat0垂直旋转角度下限(0到π)。
.minZoomFloat0相机放大下限(仅OrthographicCamera)。
.mouseButtonsObjectLEFT:旋转
MIDDLE:缩放
RIGHT:平移
鼠标按键功能映射。
.objectCamera-被控制的相机。
.panSpeedFloat1平移速度。
.position0Vector3-内部状态存储(用于.reset())。
.rotateSpeedFloat1旋转速度。
.screenSpacePanningBooleantrue是否在屏幕空间内平移。
.target0Vector3-内部状态存储(用于.reset())。
.targetVector3-相机轨道围绕的目标点。
.touchesObjectONE:旋转
TWO:缩放平移
触摸操作功能映射。
.zoom0Float-内部状态存储(用于.reset())。
.zoomSpeedFloat1缩放速度。
.zoomToCursorBooleanfalse是否缩放到光标位置。

方法

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

例子

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 truecontrols.update();renderer.render( scene, camera );
}
http://www.xdnf.cn/news/3588.html

相关文章:

  • 【学习笔记】第十章:序列建模:递归神经网络(RNN)
  • k9s 一个基于终端的 Kubernetes 集群管理工具(TUI)
  • Python 数据智能实战 (8):基于LLM的个性化营销文案
  • Redis基本使用
  • 线程池实现
  • 03 - spring security自定义登出页面
  • 学习c语言的第16天
  • 用c 编写的笔记搜索程序
  • 每天学一个 Linux 命令(33):uniq
  • DarkGS:论文解读与全流程环境配置及数据集测试【基于Ubuntu20.04 】【2025最新实战无坑版!!】
  • Linux工作台文件操作命令全流程解析
  • mescroll.js 是在 H5端 运行的下拉刷新和上拉加载插件
  • 网络编程——Socket 编程详解(TCP / UDP)
  • C++拷贝构造函数详解
  • 使用 Mermaid 在 Markdown 中绘制图表
  • 数字智慧方案6213丨智慧园区规划方案(63页PPT)(文末有下载方式)
  • AI大模型-解决开发环境配置不足问题
  • 【AIStarter苹果版发布】黑苹果部署教程+跨平台AI应用测试指南
  • HCL(HashiCorp Configuration Language)是一种结构化配置语言
  • 13.多边形的三角剖分 (Triangulation) : Triangulation
  • 我的日记杂文
  • 中小企业MES系统详细设计
  • Rain World 雨世界 [DLC 解锁] [Steam Epic] [Windows SteamOS]
  • 新手SEO优化核心步骤
  • 《筑牢防线:全方位守护移动应用免受逆向侵扰》
  • 【JavaScript-Day 1】从零开始:全面了解 JavaScript 是什么、为什么学以及它与 Java 的区别
  • 【云盘】使用阿里云盘托管项目大文件
  • 销售总监求职简历模板
  • ACGRIME:用于全局优化和特征选择的自适应混沌高斯RIME优化器,附完整版免费代码
  • 65. Java 类和对象 - 创建和使用类与对象:摘要