bug00

本贴目的:本周开发时需要做一个刚体和柔体联动的平移和旋转操作,困扰了我很长时间,特意写篇帖子记录一下
参考文章:https://www.cnblogs.com/soroman/archive/2009/05/15/1457863.html
写的很详细,解决了我的困惑

描述

需要对一个物体进行平移和旋转操作,旋转时需要绕着一个动态的坐标系(坐标系位置可变,x,y,z轴方向不变)
采用方案,获取力反馈设备每帧需要的位移和旋转矢量(四元数),然后作用到物体上面,使之可以和力反馈设备的位移旋转同步。

问题

物体始终无法绕着自身的轴进行旋转,具体表现是物体绕着世界坐标空间轴进行旋转

解决

首先我们要搞明白力反馈中传出的旋转参数是什么,是一个四元数,代表当前力反馈设备在自己的固定坐标系下的旋转度数。
那么每次的旋转矢量就代表力反馈相对于上一帧的旋转偏差。
然后我们获取的物体位置又是什么,是物体在世界坐标空间下的位置(由于要对柔体操作,因此需要获得每个网格顶点的位置)
也就是说我们直接让旋转参数作用在物体上就会出现一个问题,物体是在世界坐标系下进行旋转的,可以想象地球的公转。
而我需要的是地球的自转
在想明白了这一点之后就可以愉快地解决问题了

  • 首先需要将物体转换到需要的坐标系下,得到局部坐标空间。
  • 对物体进行旋转操作,得到物体的新位置。
  • 然后根据局部坐标系在世界坐标系下的旋转和位置,将物体转换到世界坐标空间下。

其实最终的效果就是在地球公转(世界坐标系)的同时保持了自转(局部坐标系)

总结

  • 变换的时候,一定要知道是在哪个坐标系(世界还是局部)下进行的,这样才可以准确地描述方位。
  • 当碰到局部变换较多的情况下(地球自转,手臂运动时手掌的旋转),最好选取局部坐标系,这样的描述会很清晰,方便。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值