虚幻引擎4中关于设置关于体坐标系下的物体速度的相关问题

虚幻引擎4中关于设置关于体坐标系下的物体速度的相关问题

前言

利用虚幻引擎进行仿真开发,不可避免要对物体进行运动。而使物体进行运动无非有两种方法。

  1. 利用“物理推进器”给物体施加力。如果知道模型的动力学模型就可以直接通过施加力,从而使得模型拥有理想的速度,从而到达理想的位置。如果不知道模型的动力学模型又希望通过施加力的作用来使模型具有理想的速度,那么也可以通过PID控制以及其他无模型控制来控制系统的动力学层。
  2. 利用“设置物理线性速度”来直接给物体赋予速度,但这种在使用时,提示谨慎使用。

谨慎使用提示

本文主要针对第二种方法展开相应的体坐标系下的速度设置问题。之所以采用第二种方法,是因为我无法获得物体的动力学参数并且不想使用PID等控制方法来控制动力学层,因此只在运动学层做文章。

由于直接设置物体的速度都是相当于全局坐标系下的速度,因此首先要转换成体坐标系下的速度,然后再进行设置。

全局坐标系转体坐标系速度

设置X轴方向的体坐标系速度

  1. 获取场景旋转;

  2. 获取向前向量;

  3. 设置的X轴方向线速度乘以获取的向前向量。

    X轴体坐标系速度设置

设置Y轴方向的体坐标系速度

  1. 获取场景旋转;
  2. 获取向右向量;
  3. 设置的Y轴方向线速度乘以获取的向前向量。

Y轴体坐标系速度设置

XY轴体坐标系速度整合

将前两步得到的速度相加并送到“设置物理线性速度”就可以设置成功物体的物理线性速度。

设置物理线性速度

**注:**这里我没有设置Z轴速度,是因为我不想物体在Z轴进行运动(但直接这样忽视Z轴产生的数值,我也不确定对不对),后续会对Z轴方向的设置做更加详细的介绍。

Z轴速度的进一步设置

即使我希望不对Z轴的速度做任何设置,但实际上我还是进行了设置,因为“0”也是一个速度。这会导致一个严重的问题。当我开启“模拟物理”并且希望模型受重力影响时,会发现貌似模型不受重力影响了。这是因为“事件Tick”在不停地给物体施加Z轴“速度为0”的指令,另一方面物体又时刻受重力加速度“ 9.8 m / s 2 9.8m/s^2 9.8m/s2”的影响。因此物体就在这样两个力的作用下在Z轴缓慢移动。下图是正常的重力影响下的里立方体运动。

正常受重力影响的Z轴速度及运动

而在我使用的海洋环境中则是致命的问题。因为一个浪一旦把物体掀起来离开水面,物体竟然不会立刻落下而是以非常缓慢的速度落下,这显然是不符合物理规律的。

Z轴速度设置为0,同时受重力影响

解决办法

经过查阅,我想到一个好办法。获取当前物体的线性Z轴速度,并将其赋予给Z轴,这样就避免了设置Z轴的速度,Z轴应有的运动也不受影响。

同样如果对另外几个自由度,如艏摇等也可以同样地设置。现在仿真就非常接近现实的物体情况了。

小结

本文主要针对虚幻引擎中的全局坐标系速度转体坐标系速度以及相应的设置及解决方案。

如果您觉得我写的不错,麻烦给我一个免费的赞!如果内容中有错误,也欢迎向我反馈。

猜你喜欢

转载自blog.csdn.net/qq_45830323/article/details/132620454