最近项目上用到一款AR眼镜,其陀螺仪的给出的旋转值与预期有差异。如戴上眼镜左右转动头部时,视角却是沿着脸部朝前的轴旋转的。经过整理发现陀螺仪与Unity相机各轴正确对应关系如下:

x(陀)->-x(相),y(陀)->-z(相),z(陀)->-y(相)。

那么,怎么变换呢。

最简单直接的方式是这样的,不过这种方式是错误的,达不到想要的效果。

Vector3 angle =  gyro.attitude.eulerAngles;
camera.transform.localRotation = Quaternion.Euler(new Vector3(-angle.x, -angle.z, -angle.y));

正确的方式

Quaternion output;
output.x = -gyro.attitude.x;
output.y = -gyro.attitude.z;
output.z = -gyro.attitude.y;
output.w = gyro.attitude.w;camera.transform.localRotation = output;

Unity旋转值Quaternion交换旋转轴相关推荐

  1. Unity 旋转欧拉角及万向锁问题

    先说明unity 3D欧拉角的旋转顺序(父子关系)是y-x-z.即旋转y轴x和z轴都变,旋转x轴只有z轴变化,旋转z轴其它轴不变. 模型坐标系 又称物体坐标系. 与特定的物体关联,每个物体都有自己特定 ...

  2. ThreeJS - 直接设置Fbx模型的某个关节的位移和旋转值

    1 在ThreeJS中直接设置Fbx模型的某个关节的位移和旋转值 示例代码如下: fbxModel.traverse(function (child) {// 如果子节点为骨骼if(child.isB ...

  3. c语言怎么将两个整数变量值交换,C语言如何利用异或进行两个值的交换详解

    C语言异或运算 位运算符家族中,最常用的,某过于异或运算符. 异或运算符是指: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1.即:0^0=0, 1^0=1, 0^1=1, 1^1=0 例 ...

  4. unity初识之Quaternion和旋转

    与之前做2d游戏不一样,3d游戏中,角度变换,用四元数来表示和计算 什么是欧拉角 四元数 欧拉旋转 一个女生的文章 unity对于四元数的定义 在学习3d数学或者学习shader的书籍里,都会有一章是 ...

  5. Unity旋转问题的总结

    1.物体的直接旋转 transform.Rotate();这个函数是在当前状态下网某个方向旋转.并且这里可以设置为世界空间或者自身空间. transform.rotation;这里可以通过直接定义一个 ...

  6. Unity旋转之四元数(开关车门,第一人称控制器)

    在Unity中,常用的旋转方式有三种,分别是transform.Rotate(参数),欧拉角旋转,和今天我们要聊的四元数.虽然四元数理解起来不如欧拉角那么直观,但是它却能很好的避免了万向锁问题,而且在 ...

  7. unity 旋转欧拉角 万向锁 解释

    万向锁 一直困惑我很久....原因出在这里,我以为欧拉角旋转是以模型坐标(齐次坐标系)为旋转轴.问题就来了,无论旋转那个轴,其它两个轴也会相应的变化,下面看图: 根据上面的说明两个旋转面(圆圈)怎么会 ...

  8. Unity旋转之左手坐标系

    几何坐标系分为左手坐标系和右手坐标系,分别适用左手法则和右手法则. 左手坐标系和右手坐标系 上图分别是左手坐标系和右手坐标系 二维坐标系我们习惯X轴朝右,Y轴向上,所以左手坐标系和右手坐标系也可以是 ...

  9. python中交换a和b的值_交换A和B之间的元素以获得和相等

    如果有这样的互换,那么两个值之间的差值必须是总和差的一半.交换两个值意味着两个列表的总和将改变,一个上升,另一个下降,以相同的数量.这两个变化必须加上掉期前的和之间的差值,且两个总和都会以相同的值(^ ...

最新文章

  1. PHP上传文件函数move_upload,如何使用php中move_uploaded_file函数
  2. 基于轮廓调整的SOTA实例分割方法,速度达32.3fps | CVPR 2020
  3. UltraEdit-64中文安装
  4. 如何帮助企业优化商业模式?看精益数据分析的“欺”与“破”
  5. Eclipse报错:!!MESSAGE Job found still running.......
  6. android静态方法如何测试,android – 如何使用mock()和spy()测试静态方法
  7. Docker查看关联容器的卷宗在本机的存储位置
  8. 计算机目标导学方法,计算机教学计划
  9. phpcmsV9 “来源” 的添加与管理
  10. Python程序员面试必备常用问题答案及解析
  11. life words
  12. C# 文件读写系列二
  13. 用Java开发手机Andriod系统Apk软件
  14. SpringCloud 单Eureka简单例子consumer-provider
  15. 计算机软件工作室起名'',游戏工作室起名大全
  16. 女性内分泌失调的8种症状
  17. linux服务器被挖矿的解决办法
  18. vue使用过滤器,文字超出显示省略号
  19. 玩转步进电机控制,自定义中文编程
  20. /etc/init.d/sshd配置SSHD路径忘记修改导致启动失败

热门文章

  1. 1063: 判断三角形的形状(3级)输入三角型的三条边,判断三角形的形状。
  2. 华为轮值CEO徐直军全面剖析华为
  3. c语言作业i love gplt,Jmete 入门一
  4. PETS 5 五级听力介绍备考注意事项
  5. 2021-08-12 Android APP 保持屏幕常亮和取消屏幕常亮方法
  6. 0004-python第三天:基本数据类型
  7. 【转】如何管理PDF书签:Foxit、PDF XChange、PDF补丁丁
  8. python薪资核算-Python解释器的环境中,用于表示上一次运算结果的特殊变量为(      )...
  9. 剑指offer面试题(41-50)——java实现
  10. 基于Spark的FPGrowth(关联规则算法)