【发布时间】:2019-05-22 02:00:08
【问题描述】:
我有一个简单的例子:
FVector TransformTest()
{
FVector translation;
{
translation.X = 0.0f;
translation.Y = 20.0f;
translation.Z = 0.0f;
}
FRotator rotation;
{
rotation.Roll = 0.0f;
rotation.Pitch = 0.0f;
rotation.Yaw = 45.0f;
}
FVector scale;
{
scale.X = 2.0f;
scale.Y = 1.0f;
scale.Z = 1.0f;
}
FTransform test_transform = FTransform(rotation, translation, scale);
return (test_transform.Inverse() * test_transform).GetTranslation();
}
这个函数会返回向量:
[X = -10.0, Y = -10.0, Z = 0.0].
预期:
[X = 0.0,Y = 0.0,Z = 0.0].
我在做变换,比如LocalToWorld然后WorldToLocal,我从某个空间开始,必须回到这个空间 (有一些小错误),但我在远离源头的陌生空间完成了我的旅程。
我认为,我已向 Epic 提交了一个错误,并得到了回复:
你好,
感谢您提交错误报告,但目前我们认为您所描述的问题实际上并不是虚幻引擎的错误,因此我们无法对此采取任何进一步的措施。
这种行为正确吗?
是否是错误?
【问题讨论】:
-
FTransform 不是矩阵,但它应该以相同的方式工作。这很奇怪。你可以尝试对 FMatrix 做同样的事情吗? :-)
-
@MichaelNastenko 我必须用С++编写一个辅助函数,将transform转换为FMatrix,处理它们,然后转换回transform。那是我通过任何排列得到正确结果的时候。
-
那么这肯定是一个错误
-
范围是什么?我提出了一项修改,但我删除了它,但被拒绝了。
-
@Lyngmo 我专门添加了它们以强制关注数字,而不是代码。很抱歉拒绝编辑。
标签: c++ graphics transform linear-algebra unreal-engine4