网站首页 > 编程文章 正文
大家好,我是yangyang.最近工作中在接触基于threejs实现的vr全景阅读器photo-sphere-viewer插件来做vr装修编辑器,使用过程中遇到关于视角调整的问题,并开始对欧拉角的概念有了一些认识.
关于欧拉角Picth、Yaw、Rol
Pitch、Yaw 和 Roll 是飞行动力学和三维空间中常用的术语,通常用来描述飞行器或物体的姿态。它们是关于三个坐标轴的旋转:
- Pitch (俯仰):绕横轴旋转。当一个物体绕其横轴旋转时,就发生了俯仰。在航空航天领域,这通常是描述飞行器绕其纵轴旋转的动作。
- Yaw (偏航):绕垂直轴旋转。偏航是绕垂直轴旋转,通常用于描述飞行器绕垂直轴的摆动。
- Roll (滚转):绕纵轴旋转。滚转是绕物体的纵轴旋转,导致物体的一个侧面向上或向下旋转。
这三个旋转角度通常以欧拉角(Euler Angles)的形式来表示。欧拉角是描述三维空间中旋转的一种方式,由三个角度构成。在飞行器姿态表示中,通常按照特定的顺序应用这三个角度。常见的顺序包括 ZYX、XYZ、YXZ 等。例如,ZYX 表示先滚动(Roll)、再俯仰(Pitch)、最后偏航(Yaw)。
这些角度的理解对于控制飞行器、模拟三维动画或进行计算机视觉中的姿态估计等领域都很重要。在不同的上下文中,这些角度可能被表示为弧度或度数,具体取决于使用的标准。
threejs中的欧拉角
Three.js 使用欧拉角(Euler Angles)来表示旋转。你可以为对象设置 rotation 属性,该属性是一个 THREE.Euler 对象。这个对象包含 x、y 和 z 属性,分别对应 pitch、yaw 和 roll。这些值可以以弧度或角度的形式表示,具体取决于你的选择。
以下是一个简单的例子,演示了如何在 Three.js 中设置对象的旋转:
// 引入Three.js库
import * as THREE from 'three';
// 创建场景
const scene = new THREE.Scene();
// 创建一个立方体
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
// 设置欧拉角(pitch、yaw、roll)
cube.rotation.x = Math.PI / 4; // 45度的俯仰
cube.rotation.y = Math.PI / 4; // 45度的偏航
cube.rotation.z = Math.PI / 4; // 45度的滚转
// 创建渲染器
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// 渲染场景
function animate() {
requestAnimationFrame(animate);
// 旋转动画
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
renderer.render(scene, camera);
}
animate();
在这个例子中,我们通过设置 cube.rotation.x、cube.rotation.y 和 cube.rotation.z 来控制立方体的旋转
加深理解
1.1 俯仰角Pitch
俯仰角 Pitch 是指绕绿色 Y 轴(也就是方向朝右的那个轴)旋转的角。如下面所示,图1是三个欧拉角都为0时的原始图,图2是把俯仰角 Pitch 设为30度后的对比图。从图中可以看出,人物确实绕着 Y 轴旋转了。俯仰角旋转的效果,可以想象成使人前倾或后仰。
1.2 偏航角Yaw
偏航角 Yaw 是指绕蓝色 Z 轴(也就是方向朝上的那个轴)旋转的角。图3是把偏航角 Yaw 设为30度后的效果图。对比图1可以发现,偏航角 Yaw 使人物绕着 Z 轴旋转。偏航角旋转的效果,可以想象成人在原地转动。
1.3 滚动角Roll
滚动角 Roll 是指绕红色X 轴(也就是方向朝前的那个轴)旋转的角。图4是把滚动角 Roll 设为30度后的效果图。对比图1可以发现,滚动角 Roll 使人物绕着 X 轴旋转。滚动角旋转的效果,可以想象成把人放在转盘上转动。
- 参考链接:https://zhuanlan.zhihu.com/p/545518010
口诀:点头pitch摇头yaw剩下那个就是roll
猜你喜欢
- 2024-10-24 啥叫完美?基于three.js的数字孪生设计
- 2024-10-24 threejs非同凡响|建模和大数据的完美融合
- 2024-10-24 Three.JS编程中如何切换gltf模型动画?
- 2024-10-24 Three.JS教程4 threejs中的辅助类
- 2024-10-24 THREEJS学习之路-镜头切换动画(threejs camera)
- 2024-10-24 Threejs技术助力IoT可视化大屏的创新展示方式
- 2024-10-24 threejs3d学习笔记3(threejs教程)
- 2024-10-24 three.js还是cesium.js ? 究其根本只是实现工具,思路才关键!
- 2024-10-24 threejs中,如何检测一个模型附近一定范围内的其它模型
- 2024-10-24 Threejs 与blender贴图 结合用法(threejs导入blender模型)
你 发表评论:
欢迎- 06-24一个老爸画了超级有爱的365幅画 | 父亲节献礼
- 06-24产品小白看魏则西事件——用产品思维审视百度推广
- 06-24某教程学习笔记(一):13、脚本木马原理
- 06-24十大常见web漏洞——命令执行漏洞
- 06-24初涉内网,提权那些事(内网渗透提权)
- 06-24黑客命令第16集:47种最常见的**网站方法2/2
- 06-24铭说 | 一句话木马的多种变形方式
- 06-24Java隐藏的10倍效率技巧!90%程序员不知道的魔法方法(附代码)
- 最近发表
- 标签列表
-
- spire.doc (70)
- instanceclient (62)
- solidworks (78)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)