Parent scale does not account for child rotation

Illustration:

15110-axisscale.jpg

I have added a QuadPyramid mesh that comes with the starter content to a BP as a child of a scene component. If I rotate the pyramid 45 degrees and change the scene component’s X or Y scale, one of the pyramid’s vertices should be in the middle of the newly flattened side. Instead, the 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 the Scale value you’re giving the Parent is also being given to the Child, but in the same axis. So feeding the Parent an X Scale value of .33 is also giving the 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 the feature request. Thanks for the report!

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.

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 the default, because it’s counter to every 3D designer’s intuition.

Any news about this? It seems it have been more than a year and the issue is still present. OhiraKyou was right about cartoony squashing animations. Those are the kind of things I want to do and this weird scaling behaviour and the fact that we can’t change the 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 the effect illustrated above is very important to my project. If one wanted to modify the 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 the engine code to implement this, you can enter a pull request to be considered by our developers for implementation.

In the 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 the issue deleted?

I was just trying to do something that took advantage of the standard behaviour and am noticing that UE is not doing hierarchical transformations like Maya for example. Not that I miss the 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 the 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 the 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 the “Root” bone Y-axis rotation via blueprint, while having the model itself face the 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 the 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 the preferred method to begin with, but the 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 the 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 the packaged features didn’t do as they required AT ALL.

Hey dbuchoff,

The issue has not been deleted, we have just removed Feature Requests off of the public bug tracker in an attempt to keep the site limited to only bugs with the engine and make it easier to search the 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.

Since the 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.

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 ?

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.

The 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 (The scaling of multiple children at once from an arbitrary pivot probably could change, i’m just talking about the original post here.)