虚幻引擎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.hqwc.cn/news/103056.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OceanBase 4.1解读:读写兼备的DBLink让数据共享“零距离”

梁长青,OceanBase 高级研发工程师,从事 SQL 执行引擎相关工作,目前主要负责 DBLink、单机引擎优化等方面工作。 沈大川,OceanBase 高级研发工程师,从事 SQL 执行引擎相关工作,曾参与 TPC-H 项目攻坚&#x…

异步编程 - 12 异步、基于事件驱动的网络编程框架 Netty

文章目录 Netty概述Netty中的一些概念Netty的线程模型Netty Server端Netty Netty 端 TCP半包与粘包问题基于Netty与CompletableFuture实现RPC异步调用 Netty概述 Netty是一个异步、基于事件驱动的网络应用程序框架,其对Java NIO进行了封装,大大简化了TC…

牛客网——BM62 斐波那契数列

class Solution { public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * param n int整型 * return int整型*/int Fibonacci(int n) {// write code hereif(n0) //考虑第0项return 0;else if(n1||n2)return 1;else…

【网络通信 -- WebRTC】Open WebRTC Toolkit 环境搭建指南

【网络通信 -- WebRTC】Open WebRTC Toolkit -- OWT-Server 编译安装指南 【1】OWT Server 与 Web Demo 视频会议环境搭建 【1.1】编译 OWT Server 安装依赖 ./scripts/installDepsUnattended.sh编译 scripts/build.js -t all --check 注意若不支持硬件加速则采用如下命令 s…

uniapp里textarea多行文本输入限制数量

uniapp里textarea多行文本域实现输入计数 <template><view class"inputs"><textarea class"text1" maxlength50 placeholder请输入... input"sumfontnum"></textarea><text class"text2">{{fontNum}}/…

当妈妈们开始精致悦已,母婴品牌该怎么做营销?媒介盒子告诉你

近年来&#xff0c;二孩政策全面放开&#xff0c;母婴行业产品溢价高利润可观&#xff0c;优质品牌层出不穷&#xff0c;那么母婴行业该如何宣传产品呢&#xff1f; 试试软文推广吧&#xff01;软文推广是企业宣传最有效且投入成本最低的宣传方式了。 母婴行业做软文推广可以达…

什么是原生IP?原生IP与住宅IP有何区别?

相信许多做跨境的都会接触到IP代理&#xff0c;比如电商平台、社媒平台、收款平台等等&#xff0c;都会检测IP。那也会经常听到一些词汇&#xff1a;原生IP、住宅IP&#xff0c;这两者之间有什么区别呢&#xff1f;什么业务需要用到呢&#xff1f;接下来带大家具体了解一下。 什…

git在linux情况下设置git 命令高亮

只需要执行下面这个命令&#xff0c;这样就可以在查看git status明亮的时候高亮显示。 git config --global color.status auto未设置前 谁知之后

jemalloc 5.3.0源码总结

注意&#xff1a;jemalloc 的最新版本里没有所谓的 huge class&#xff0c;bin 中slab外面也不再套一个run的概念了&#xff0c;看其它人分享的文章时需要注意。 简述 用户侧通过 tcache 来访问&#xff0c;tcache 是一个线程的申请又释放的对象的缓存&#xff0c;它绑定了一…

C/C++ ——内存管理

前言 为什么要研究内存管理&#xff1f; (1)程序员写的程序可以分为动态和静态两种状态。静态&#xff1a;就是程序被存放在ROM中&#xff0c;也就是磁盘、固态硬盘、eMMC等存储介质&#xff1b;动态&#xff1a;程序被执行&#xff0c;此时程序在RAM内存中运行&#xff1b; (…

Cpp/Qtday030908cpp基础

目录 目录 自行封装一个栈的类&#xff0c;包含私有成员属性&#xff1a;栈的数组、记录栈顶的变量 成员函数完成&#xff1a;构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小 头文件&#xff1a;stack.h 源文件: stack.cp…

Linux相关指令(下)

cat指令 查看目标文件的内容 常用选项&#xff1a; -b 对非空输出行编号 -n 对输出的所有行编号 -s 不输出多行空行 一个重要思想&#xff1a;linux下一切皆文件&#xff0c;如显示器文件&#xff0c;键盘文件 cat默认从键盘中读取数据再打印 退出可以ctrlc 输入重定向<…