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里面没找到,推荐用上面的四元数的方法实现)

相关推荐
四代水门2 天前
UE5实现客户端与服务器时间同步
ue5
智海深蓝3 天前
海上平行战场:态势模拟三维可视化平台
3d·ue5
_守一4 天前
UE5 ListView记录
ue5
成都渲染101云渲染66665 天前
CR15新功能介绍以及CR15云渲染流程
ue5·图形渲染·blender·maya·corona
一锅炖出任易仙6 天前
创梦汤锅学习日记day30
学习·ai·ue5·游戏引擎
OSwich6 天前
【UE5学习笔记】UMG中控件命名规范
笔记·学习·ue5
一锅炖出任易仙7 天前
创梦汤锅学习日记day29
学习·ai·ue5·游戏引擎
吴梓穆7 天前
UE5 C++ 注册 开始重叠和结束重叠事件
开发语言·c++·ue5
妙为8 天前
unreal engine5(UE5)中使用Rider
ue5·游戏引擎·虚幻·rider
归真仙人9 天前
【UE】LineTraceByProfile
ue5·游戏引擎·ue4·unreal engine