关于 Unreal 中的一些计算问题

坐标空间转换

在这里插入图片描述
在这里插入图片描述
使用引擎提供的函数
在这里插入图片描述
通过 Rotate Vector / Unrotate Vector 转换坐标空间,该方法内部是通过旋转矩阵对向量进行变换
在这里插入图片描述
在这里插入图片描述

与旋转相关的一些计算

在UE中,一个Actor的旋转通常是指它的Forward方向即X坐标轴(世界坐标)对应的Rotation或Rotator

由向量获取旋转
Make Rot from X

将输入向量当作矩阵中第一列即X坐标轴来构建旋转矩阵,其余两个坐标轴由X轴叉乘而来,再使用 RotMatrix.Rotator 来返回矩阵中X坐标轴即Forward方向对应的Rotator值,该方法内部主要通过对X坐标轴使用Atan2方法求得Pitch,Yaw,Roll

Make Rot from Z

将输入向量当作矩阵中第三列即Z坐标轴来构建旋转矩阵,使用 RotMatrix.Rotator 方法任然是返回Forward方向所对应的Rotator值

Rotation from X Vector

该方法要求输入X坐标轴的向量,然后直接通过Atan2返回对应的Rotator值,省去了构建矩阵这个步骤,因为由前面 Make Rot from X 节点可知对构建的矩阵调用 RotMatrix.Rotator 方法任然是对X坐标轴使用 Atan2 来求值,所以这也是该方法与 Make Rot from X 获取结果是一样的原因

获取到玩家的旋转值并面向玩家

在这里插入图片描述

*旋转一个向量, *

在这里插入图片描述
另外 Rotate Vector Around Axis 节点也可以按角度旋转向量

旋转的叠加

两个 Rotator 可使用 Combine Rotators 方法叠加旋转
在这里插入图片描述
两个 Quat 可通过相乘叠加
对 Quat 四元数的简单理解:四元数的数值构成了一个旋转轴向量 q 与旋转角度 a,一个四元数代表了一个旋转过程,即绕旋转轴 q 旋转角度 a 。两个四元数相乘与顺序相关,表示将右边的四元数代表的旋转叠加到左边的旋转上
在这里插入图片描述

旋转的差值

使用 Delta Rotator 获取两个 Rotator 之间的差值
在这里插入图片描述
通过乘以反四元数获取两个 Quat 之间的差值
在这里插入图片描述
有时候需要求出旋转的差值而不是旋转的绝对值,如将动画中的骨骼旋转增加额外的旋转使其对齐到新的目标等
示例,求出自身到目标方向向量的旋转值与自身旋转值的差值后,加到自身的旋转上使对齐到目标
在这里插入图片描述
使用四元数的版本(示例只是表示可以这样计算,并不是最佳方式)
在这里插入图片描述
直接通过两个向量也可以得出 Quat 差值
在这里插入图片描述

与角度相关的计算

求单个向量在坐标系上的角度值
在这里插入图片描述
求两个向量之间的夹角角度值,使用 Dot 与 ACos 计算
在这里插入图片描述
通过到目标方向的向量与本身旋转计算夹角度数
在这里插入图片描述

鼠标位置相关的计算

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值