Parent scale does not account for child rotation

Illustration:

15110-axisscale.jpg

I have added a QuadPyramid mesh that comes with starter content to a BP as a child of a scene component. If I rotate pyramid 45 degrees and change scene component’s X or Y scale, one of pyramid’s vertices should be in middle of newly flattened side. Instead, QuadPyramid’s scale simply changes to match its parent’s.

This is faulty implementation more than a bug.

1 Like

Hey OhiraKyou,

What’s happening here is that Scale value you’re giving Parent is also being given to Child, but in same axis. So feeding Parent an X Scale value of .33 is also giving Child an X Scale value of .33. Currently, there is no way to achieve what you are looking for, using Local Space for Scaling rather than World Space. I will enter a feature request for our developers to consider this, however I believe this has been an issue for a long time and may not be a quick fix. I will let you know if I see an update on feature request. Thanks for report!

1 Like

It’s obvious what’s happening, and it makes deforming complex objects impossible, which can be a big deal for cartoony squashing animations and general prototyping. Thanks for forwarding it.

1 Like

Rule of thumb: if 3D manipulators behave differently than every 3D modelling program ever made, then they’re implemented wrong. If “Uniform scale” is useful, it should be a special-case, not default, because it’s counter to every 3D designer’s intuition.

1 Like

Any news about this? It seems it have been more than a year and issue is still present. OhiraKyou was right about cartoony squashing animations. Those are kind of things I want to do and this weird scaling behaviour and fact that we can’t change pivot location and rotation, makes it harder to do cartoony stuff.

Hey chirieacam,

I have entered a feature request for your suggestion, UE-32676, to be investigated by our developers. Thank you for your suggestion.

Have a great day

How about a work around? Being able to rotate then scale to achieve effect illustrated above is very important to my project. If one wanted to modify engine code for this where would we start?

At this time, there are no known workarounds that have been discovered. If you manage to come across one, feel free to provide it for other users to make use of. Unfortunately, we do not guarantee support for development questions. If you’d like to delve into and modify engine code to implement this, you can enter a pull request to be considered by our developers for implementation.

In meantime, I’ll provide updates on this feature request as they become available.

Have a great day

Waiting for this feature. It will be really useful which I’ve just came across right now, having 4 objects one for each side of a cube then resizing it, generates this issue also.
Hope to get this one day :wink:

I can no longer find this feature request. Was issue deleted?

I was just trying to do something that took advantage of standard behaviour and am noticing that UE is not doing hierarchical transformations like Maya for example. Not that I miss Maya behaviour much though tbh except it would have been useful this time I think.

I want to point out that you can achieve a similar result to this via an extremely hack method regarding bones in a skeletal mesh. Of course, it’s not as simple as using 2 parent bones, one for rotation and other for single-axis scale; Unreal doesn’t support that at all and any/all changes to a single bone’s scale will apply that to successive bone scales, which… is not what’s supposed to happen, as those bones are also supposed to have their world positions modified as well.

Either way, I managed to achieve a “flat character” effect by changing “Root” bone Y-axis rotation via blueprint, while having model itself face camera and flattening its local X axis. This is basically forcing what UE4 does not natively support, hierarchical transforms.

There were still issues and limitations, majorly in part because of root bone always trying to rotate on its local Pitch/Roll/Yaw meaning I couldn’t feasibly achieve a “3D sprite” effect, or more specifically, Rotate → Flatten → Unrotate in any arbitrary axis. This could possibly be fixed by forcing some transform matrices instead of simply dealing with rotators, and this is probably preferred method to begin with, but point is it’s possible, just very limited… and requires a lot of specific setup.

Doubt this is going to be fixed since Unreals priorities are seemingly fixed towards VR and like, not anywhere near fixing its fundamental low-level problems :confused:

unsure how likely it is this is going to be addressed, which is kind of sad. In their VR demos it looked like they got something interesting down with Bounding Box scale and rotation, but I don’t think they have a method of parenting an object and rotating/scaling to deform them both in that way.

This is honestly really troubling because theres a whole slew of reasons you’d want functionality like this, and it seems this isn’t doable with bones either which means cartoony skeletal meshes are almost an impossibility; this makes it almost no surprise that in UE3, Guilty Gear XRD had to write their own mesh scaling algorithms (or something to that extent) because packaged features didn’t do as they required AT ALL.

Hey dbuchoff,

issue has not been deleted, we have just removed Feature Requests off of public bug tracker in an attempt to keep site limited to only bugs with engine and make it easier to search database for an issue that you’re looking for.

Just encountered it in Unreal 5.02. Still on TODO list? It’s not a feature request, it’s a bug report. Scale ransform in hierarchy doesn’t behave properly. Fundamental feature deosn’t work as intended.

1 Like

Since feature request could no longer be found I’ve reopened it here:

Covering both parent space rotation and first selected object rotation.

Hoping we can still get support for this added.

1 Like

I just encountered this problem and I’m a bit confused. This seems like such a huge issue, that has been going on for 8 years and it’s still not resolved ?

2 Likes

Hey all,
Not a rep of epic, but I think you shouldn’t expect this (non-uniform scaling of parent of a rotated child) to ever change.

FTransform simply cannot represent a shear because it isn’t a 4x4 matrix but instead a location, rotation, and scale held seperately. You’d get a shear if there is non-uniform scaling on a non-axis aligned rotation.

To change this would be a substantial rework of what FTransform is, how its represented, and potentially how it is edited, as well as performance characteristics.

It really just isn’t likely to happen, probably ever, and although it feels like a “bug” it actually is a feature you are requesting, and a substantial one.

I don’t like it either, but for future people coming into this thread, avoid non-uniform scaling where possible.

Cheers

PS ( scaling of multiple children at once from an arbitrary pivot probably could change, i’m just talking about original post here.)

I first experienced this issue in UE5.

It is happening for each emitter in the Niagara system, and I did not have this issue in UE4, so the same work is showing different results.

It doesn’t make sense and feels like a bug to change a common rule in a 3D program just because of a different version.

It’s terrible to have to fix all of your years of work because of a bug like this, so makes me question whether UE5 is a reliable engine.

I hope this issue is resolved.

1 Like