VR开发-陀螺仪部分研究

最近在做VR方面的研究,看到了Google Cardboard对传感器处理的代码,对陀螺仪、旋转矩阵、罗德里格公式做了一些研究。

陀螺仪中获取的数据是以(x,y,z)的形式存储,它们代表了陀螺仪在(x,y,z)方向上的角速度。在头戴设备上的状态显示如下图所示。


此时(x,y,z)方向可能与手机水平摆放时有区别,具体的变化可以自己测试下。

我们看Google Cardboard对陀螺仪数据的处理。

具体的代码在  VR开发-罗德里格公式的研究

此处有几行代码:

this.mu.set(gyro);

this.mu.scale(- dT);

So3Util.sO3FromMu(this.mu, this.so3LastMotion);

这是对陀螺仪数据的处理,gyro是陀螺仪向量,通过乘以时间得到当前在x,y,z方向上的旋转的角度,之后进行罗德里格旋转矩阵计算,得到旋转矩阵。函数传入的参数是mu和返回结果result。

罗德里格公式是通过旋转轴和旋转角度计算旋转矩阵,此时传入的参数向量mu的摸长即为旋转的角度,而向量mu即是旋转轴。可能会有些不理解,为什么向量mu既代表了旋转轴,又代表了旋转角度。假设(x,y,z)向量y和z都为零,那么代表y和z方向上的旋转角度都为零,只有x轴方向上旋转了(x,0,0),那么最后得到的旋转矩阵一定是以x轴为旋转轴,旋转x=θ角度。于此同时,假设只有y和z不为零的情况,得到相同的结果,分别以y和z为轴进行旋转,那么得到结论在三维空间中(x,y,z)向量就是旋转轴。这时,对于向量的模长代表旋转角度也可以理解了,代表的是x,y,z方向上的角度和。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值