您好:
这个问题是希望针对社区帖子的内容的做进一步了解,链接如下https://forums.unrealengine.com/t/parent\-scale\-does\-not\-account\-for\-child\-rotation/293436。
[Image Removed]
当一个物体被附加到Parent上,然后旋转这个子物体,再缩放Parent的时候,会发现子物体和其Parent缩放的方向是不同的。目前这个问题会比较影响动画K帧、Sequence。想了解一下有没有什么解决方法?
这个问题从10年前被提出一直到5.5版本仍然有人在关注问题的修复情况,目前想了解一下官方在这一块的修复计划。
非常感谢
这个涉及到UE底层的很多算法,不太可能会改了。目前只能手动多做一些中间处理函数来矫正不同引擎导致的不一致问题。
Liu.Wei
(Liu.Wei)
3
Hi,
我做了些实验,找到一些思路,不过不适合提交进引擎,你们可以根据需要自己改一下:
- 把UPrimitiveComponent::GetRenderMatrix函数改成下面这样,可以在PrimitiveComponent上面加一个property,用于判断是否走这个分支。
FMatrix UPrimitiveComponent::GetRenderMatrix() const { if (1) { return FRotationMatrix::Make(GetComponentTransform().GetRotation()) * FScaleMatrix::Make(GetComponentTransform().GetScale3D()) * FTranslationMatrix::Make(GetComponentTransform().GetTranslation()); } else { return GetComponentTransform().ToMatrixWithScale(); } }
1. 把DataDrivenPlatformInfo.ini里所有的bSupportsSceneDataCompressedTransforms都设置成false,因为这个功能跟GPUScene的压缩不兼容。
Liu.Wei
(Liu.Wei)
5
可以试试这个改动。需要在ProjectSettings里开启ScaleInParentSpace,或者通过r.ScaleInParentSpace 1 开启。