首页 > 编程知识 正文

对数螺旋线照片,3D幻影指尖陀螺怎么用

时间:2023-05-05 10:06:35 阅读:174261 作者:4892

最近在制作像VR照片一样的demo。 也与全景图像相似。 只是,VR照片是全景和720度表示,我只做了180度。 但是,我发现和他们实现的原理有点相似。 想给想加入AR、VR的朋友一些提示呢。

要根据用户挥动手机行为的轨迹展现出相应的场景,必须使用移动端的陀螺仪、加速器等传感器进行相应的协调。 现在的移动终端有很多传感器,可以根据需要获取合适的数据。

兴奋的中心,我用传感器提供的姿势角,也称为欧拉角: pitch yaw roll表示。 该姿态角/欧拉角在航空中经常使用,无人机技术也应该用于该技术点。 在飞机模型上给我看这三个角,一目了然。 (不同的作者使用不同的坐标系,使用哪个坐标系因人而异。 ) :

照片的姿势角/欧拉角从数学上理解会有点抽象,但我也有点理解。 在维基百科中,欧拉角用于描述三维zzdy空间中刚体的方向,定义为对于任何参照系,一个刚体的方向都是按照顺序从该参照系旋转3个欧拉角设定的。 想了解更多信息,请参阅https://zh.Wikipedia.org/wiki/Euler角

很容易理解这三个角是什么意思:

1、俯仰角(Pitch ) :以y轴为中心旋转。

图2,绕偏航角(yaw ) z轴的旋转角度。

图3,滚动角(roll )围绕x轴的旋转角度。

邓四

手机坐标系:

手机定义的坐标系: x轴水平指向右边,y轴垂直指向前方,z轴指向屏幕正面正上方。 当移动电话左右摆动时(绕y轴旋转),可以得到变化滚转角(roll ),范围为(-90 to 90 )移动电话前后摆动时(绕x轴旋转),可以得到变化的俯仰角(pitch )

当手机旋转得到相应的角度后,用相应角度的图像替换画面上的图像。 这样就有了临场感,画面中的场景会随着我们的视觉和谐地变化。 这就是VR大概实现的原理吧。

Android提供了该姿势角/欧拉角这样的数据,但两者有一些不同,Android将偏航角(Yaw )定义为方位角Azimuth。 具体请参考Android的官方文档。 https://developer.Android.Google.cn/reference/Android/hardware/sensor event.html # values接收的传感器类型为sensor evevever

通过这种方式获取的数据略有变动,拿着手机不动的话,数据会有很大的变化,所以后期改用四元数处理这个问题。 之后,通过过滤方法,可以将姿势角/欧拉角变动较大的数据过滤到点上,得到的数据变得平滑,我们听到了这样的方案。 (这种方式,我还没有尝试,请大家理解) )。

使用“四元数”也可以实现。 四元数也可以抽象地理解。 简单超复数是复数的不可交换延伸。

我是这样容易理解的。 向量表示二维空间的轨迹和方向,表示为带箭头的线段。 四元数表示为四维空间中的轨迹和方向。

看看四元数的表现:

式1这是从a到b的四元数表达,是由4个要素组成的数组。 我主要说几个实现方法。 里面有名词的意思。 你需要找其他资料慢慢加入。

再看看另一个公式。 x、y、z轴的偏移量分别如下。

式2由这个式子可知,如果知道四元数的值,就可以计算出从a到b的x、y、z轴的偏移量。

陀螺传感器得到的四元数数据是手机相对于桌面上平放的xyz轴的偏移量。 需要转换为相对于前一位置的偏移量,并根据偏移量更换合适的图像。

现在,我们来看看如何获取相对偏移。 在平面的二维矢量中,知道矢量的运算。 向量AC=向量AB向量BC

公式3

四元数假设a点原点,即手机平放在桌面的水平位置,从传感器中最初获取的四元数。 第二个四元数需要得到四元数,以计算xyz轴从b轴到c轴的相对位移。 由以下公式得到。 式4

现在知道了,可以从下面的公式中得到。

要将式a到b四元数变换为b到a的四元数,只要负第二、第三、第四要素即可。

和我们通过公式4得到的情况,用公式2求出xyz轴的偏移量。 四元数x轴的偏移量与欧拉角的俯仰角(pitch )相似,都是

手机竖屏时,左右摇摆的数值。 四元数 y 轴的偏移量 与 欧拉角的滚转角Φ(roll) 类似,都是指手机竖屏时,前后摇摆的数值。 四元数 z 轴的偏移量 与 欧拉角的偏航角ψ(yaw) 类似,都是指手机竖屏时,左右旋转的数值。
在移动端比较常用到 x、y轴偏移量,就是手机左右摇摆与前后摇摆间的偏移。
我做了一个Android demo,用的就是四元数 实现方案,通过四元数得到的y轴偏移量,不断替换图片。
<------------------------------- 当手机横屏,向左倾斜的时候,就会看到右边的视野。也就是判断y轴的相对偏移量,替换不同角度的图片。(gif 图做得有些卡顿,demo里的例子就平滑多了)

--------------------------------> 当手机横屏,向右倾斜的时候,就会看到左边的视野。
demo 链接:https://github.com/xiaoxiaoqingyi/VRPhoto

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。