threejs 相机OrbitControls常用方法及属性

news2024/11/24 8:43:01

相机控件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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/540373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有哪些工具软件一旦用了就离不开?

💖前言 目前,随着科技的快速发展,电脑已经进入了许许多多人的生活 ,在平日的学习、工作和生活里,我们会用的各种各样的强大软件。市面上除了某些大公司开发在强大软件,还有各路大神开发具有某些功能的强大…

nodejs+vue网上课程在线教学网站平台a53y0

(1) vue引入elementui 1.使用npm安装element-ui npm i element-ui -S 2.在main.js中导入使用vue import element-ui/lib/theme-chalk/index.css //别忘了导入样式 import ElementUI from element-ui Vue.use(ElementUI) 后端:java(springbootssm)/python/php/node…

MySQL入门到精通——运维篇(基础篇——进阶篇——运维篇)本文以MySQL8.0版本以上为例

文章目录 前言MySQL——运维篇一、日志1.日志-错误日志2.日志-二进制日志3.日志-查询日志4.日志-慢查询日志 二、主从复制1.主从复制-概述2.主从复制-原理3.主从复制-搭建3.1.主从复制-搭建-主库配置3.2.主从复制-搭建-从库配置3.2.主从复制-搭建-测试 三、分库分表1.分库分表-…

Nacos简介和安装

1.Nacos简介 1.1.为什么叫Nacos 前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service。 1.2.是什么 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos: Dynamic Naming and Configuration ServiceNacos就是注册中心&am…

Fiddler 到底能做什么?一篇文章给你详细介绍

Fiddler是检查 Http 流量的最流行的工具之一。此工具可帮助我们非常轻松地测试 REST API / SOAP Web 请求。 题主的问题:Fiddler 到底能做什么。仔细思考,其实有两层意思: 第一层:Fiddler工具的应用范围 第二层:Fiddl…

手搓哈希表

手搓哈希 哈希概念哈希冲突为什么会有哈希冲突的产生?常见的哈希函数 如何解决哈希冲突?闭散列闭散列的简单模拟实现插入查找删除 总代码开散列开散列的模拟实现插入删除查找 存在的问题迭代器 开散列总的代码 哈希概念 顺序结构以及平衡树中,元素关键码…

在研制带处理器的电子产品时,如何提高抗干扰能力和电磁兼容性?

一、下面的一些系统要特别注意抗电磁干扰 1、微控制器时钟频率特别高,总线周期特别快的系统。 2、系统含有大功率,大电流驱动电路,如产生火花的继电器,大电流开关等。 3、含微弱模拟信号电路以及高精度A/D变换电路的系统。 二、…

GPU物理位置查询:从nvidia编号到物理位置

supermicro AS -4125GS-TNRT 服务器GPU出现问题,有几张GPU速度较慢。需要确定其物理位置,具体流程如下: 1 GPU编号与BUS_ID对应关系 使用nvidia-smi即可查看,如下所示:![在这里插入图片描述](https://img-blog.csdnimg.cn/3807d…

分布式锁解决方案_基于Redisson实现的分布式锁实现

Redisson介绍: https://github.com/redisson/redisson/wiki Redisson - 是一个高级的分布式协调Redis客服端,能帮助用户在分布式环境中轻松实现一些Java的对象,Redisson、Jedis、Lettuce是三个不同的操作 Redis 的客户端,Jedis、…

常见的8种用户需求评估方法

1、人性法 在评估用户需求时,需要判断这个需求所实现的功能,是否符合人性,与哪几种人性相匹配,如果非常匹配则值得做。当然并不是需求反应的人性越多越好,需要根据团队实际资源做到极致。 如格林人性法则包括&#xff…

【已解决】Arduino编译错误error: ordered comparison of pointer with integer zero的解决方法

在使用Arduino的资源库对STM32编程时,出现: error: ordered comparison of pointer with integer zero (byte* {aka unsigned char*} and int) 编译错误的解决方法。 Arduino因其开源和易用性,丰富的三方资源,受到很多人的喜欢…

CCIG 2023 从视觉-语言模型到智能文档图像处理

前言 一、视觉-语言模型是什么? 二、视觉-语言模型可以用来做什么? 三、视觉-语言 预训练模型 3.1、模型架构 3.2、训练目标 3.2.1、图像-文本匹配损失(ITM) 3.2.2、掩码语言建模损失(MLM) 3.2.3、…

Shell基础学习---4、文本处理工具、综合应用案例(归档文件、发送信息)

1、文本处理工具 1.1 cut cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。 1、基本语法 cut [选项参数] filename 说明:默认分割符是制表符 2、选项参数说明 选…

AOP设计思想与实用

文章目录 一、AOP思想(一)什么是AOP(二)为什么要使用AOP 二、Spring AOP(一)AOP 的组成1. Join Point(连接点)2. Pointcut(切点)3. Advice(通知&a…

怎样做一个优秀的网关技术选型报告~

1、简介 当使用单体应用程序架构时,客户端(Web 或移动端)通过向后端应用程序发起一次 REST 调用来获取数据。负载均衡器将请求路由给 N 个相同的应用程序实例中的一个。然后应用程序会查询各种数据库表,并将响应返回给客户端。微服…

nodejs进阶(4)—读取图片到页面

我们先实现从指定路径读取图片然后输出到页面的功能。 先准备一张图片imgs/dog.jpg。 file.js里面继续添加readImg方法,在这里注意读写的时候都需要声明binary。(file.js 在上一篇文章nodejs进阶3-路由处理中有完整的内容) readImg:functi…

思维中的世界

⾝体的空间,以⾏为为导向的空间 感官⼩矮⼈ 当我们观察特定的事物时,⼤脑的相应区域就会被“点亮”,并变得 活跃起来。 ⾝体映射到⼤脑上,映射到“感官⼩矮⼈”上, 即从左⽿延伸,过⼤脑顶⾻,…

OpenCV 实战七 setMouseCallback 鼠标交互画框

鼠标交互画框效果: 目录 1、setMouseCallback()函数 2、on_Mouse函数 3、代码 1、setMouseCallback()函数 函数原型 void setMouseCallback(const String& winname, MouseCallback onMouse, void* userdata 0); 参数说明 winname 窗口名称 onMouse 鼠标…

全网最火爆,性能测试-测试用例与测试方法总结(超详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能测试用例 无…

视频截取动图怎么做?分享在线视频转gif小窍门

如何将一段视频制作成gif动图表情包呢?Gif表情包常见的制作方法就是将电影、电视剧中的某个画面截取出来做成gif表情包。那么,如何从视频中截取GIF呢? 一、怎样才能完成视频转gif制作? 通过使用GIF中文网的视频转gif&#xff08…