当前位置: 首页 > news >正文

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

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

文章目录

  • 虚幻引擎4中关于设置关于体坐标系下的物体速度的相关问题
    • 前言
    • 全局坐标系转体坐标系速度
      • 设置X轴方向的体坐标系速度
      • 设置Y轴方向的体坐标系速度
      • XY轴体坐标系速度整合
    • Z轴速度的进一步设置
      • 解决办法
    • 小结

前言

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

  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轴应有的运动也不受影响。

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

小结

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

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

http://www.lryc.cn/news/158523.html

相关文章:

  • 16 | Spark SQL 的 UDF(用户自定义函数)
  • 蓝桥杯官网填空题(土地测量)
  • 【Java项目实战】牛客网论坛项目1 - Spring入门与初识SpringMVC
  • Gurobi使用(一)——操作指南(转自知乎)
  • 计算机网络的故事——简单的HTTP协议
  • 新能源商用车软件开发设计规范
  • Json“牵手”当当网商品详情数据方法,当当商品详情API接口,当当API申请指南
  • lazarus开发界面程序用线程显示进度条
  • 解决VSCode下载速度特别慢的问题
  • 国家矿山安全监察局关于露天矿山边坡监测系统建设及预警响应要求
  • 前端使用elementui开发后台管理系统的常用功能(持续更新)
  • 中东 Shopify 如何使用 Bytebase 构建一站式数据库开发工作流
  • 谷歌Chrome庆祝15周年,推出全新设计!了解最新信息!
  • 解决Oracle SQL语句性能问题——SQL语句改写(分析函数、with as、union及or)
  • Linux之SELinux
  • Acwing算法心得——街灯(差分)
  • streamlit执行报错WARNING,重新安装碰到问题如何解决
  • 《C++设计模式》——行为型
  • 什么是原生IP?原生IP与住宅IP有何区别?
  • element-plus 表格-自定义样式实现
  • MVCC
  • 你不知道的JavaScript---对象
  • C++项目实战——基于多设计模式下的同步异步日志系统-①-项目介绍
  • 解决Oracle数据库中日期格式不识别的问题
  • 一生一芯13——linux设置环境变量
  • CSS笔记(黑马程序员pink老师前端)定位
  • C高级Linux指令和shell脚本
  • 449. 序列化和反序列化二叉搜索树
  • DockerCompose部署es和kibana
  • windows系统docker中将vue项目网站部署在nginx上