UE5 在旋转A的基础上执行旋转B

用径向slider实现模型旋转时,得到的结果与ue编辑器里面的结果有很大出入。

问题应该是

两个FRotator(0,10,0)和(10,20,30),

两个FRotator的加法结果为:(10,30,30)

和实际上我想执行的操作------在(10,20,30)的基础上执行(0,10,0)不一样。

更具体的数学问题应该去参考欧拉角、四元数的概念。gpt说,**根本原因是:欧拉角(Pitch, Yaw, Roll)不是线性空间里的量,旋转本身是非线性的。**四元数有很多好处,避免万向节死锁等。

解决办法(参考deepseek和官方论坛):

设置绝对的旋转为这个:

cpp 复制代码
FRotator(B.Quaternion()*A.Quaternion())

A为原来的状态、B为在原来状态下的增量,B和A相乘的顺序好像也有讲究(四元数乘法问题)。当然slider可能也许要保存处理一下增量?(这个还没查怎么搞,目前是用一个变量去存上一次的状态的)。Ex:蓝图里有个合并Rotator的BP函数,但是cpp里面没找到,推荐用上面的四元数的方法实现)

相关推荐
努力的小钟1 天前
UE5GAS GameAbility源码解析 CommitAbility
ue5
努力的小钟1 天前
UE5 GAS 预测框架解析
ue5
CandyU21 天前
UE5 小知识点 —— 08 - 摄像机小问题
ue5
m0_552200821 天前
《UE5_C++多人TPS完整教程》学习笔记59 ——《P60 投射物武器(Projectile Weapons)》
c++·游戏·ue5
玉龙20251 天前
使用虚幻引擎|UE5制作自动开关门
ue5·游戏引擎·虚幻·虚幻引擎教程
windyjl1 天前
UE5框选提示UI与目标对齐
ui·ue5
m0_552200821 天前
《UE5_C++多人TPS完整教程》学习笔记58 ——《P58 旋转奔跑动画(Rotate Running Animations)》
c++·游戏·ue5
UsagiKnight3 天前
UE5小游戏开发 - 武士决斗
ue5·游戏引擎·游戏程序
m0_552200823 天前
《UE5_C++多人TPS完整教程》学习笔记55 ——《P56 网络更新频率(Net Update Frequency)》
c++·游戏·ue5
每天回答3个问题11 天前
UE5C++编译遇到MSB3073
开发语言·c++·ue5