Animation Scaling

There needs to be some method to overwrite the default scale of an animation, perhaps when its Loaded into the Humanoid or AnimationController.

As it is, any animation that is not pure Rotated poses, but includes any Shift, needs to be re-created (or manually scaled and published) for each scale of the target.

For instance, I have a game where you can Morph into a Dragon.
I allow for 4 different scales of the dragon, from large to small.

I can manually scale the mesh and bones in script within the game, allowing me to use a single Mesh for all 4 sizes.

However, because the Animations for the dragon (over 20 of them) include Shifts, I have to, in Studio, do a Batch Scale in Script of all the Animations in the Animation Studio’s Saved folder. Then load each one of these (well over 100) into the editor and Publish each one.

So instead of Dragon_Idle1…
I end up with Dragon_Large_Idle1, Dragon_Default_Idle1, Dragon_Medium_Idle1, Dragon_Small_Idle1, etc…

Then take into account that I have about 10 morphs that I have purchased the Meshes, so the Animations that came with it have shifts, this is well over 1000 Animations I would have to publish.

The Shift is just a CFrame position applied to the bones or motors when animating, so a Scale I would think would be easy to implement, such as … local AnimTrack = Humanoid:LoadAnimation(myAnim, .5) the .5 being a scale value.

I feel that with the recent replication of Animation Priorities, this would make a great new feature as well, and I feel this would allow for more creativity in that we can in game scale for mesh sizes along with animations.

Thanks for this consideration.

21 Likes

Are you using Humanoids? It seems like the behavior you want could be achieved by using the R15 scale instances (i.e. BodyHeightScale and co).

But the mechanics that drive the related adjustments behind the scenes would be nice to have direct access to if you’re not using humanoids. If you’re not using humanoids, it’s practically impossible to do what you’re doing without access for sure.

3 Likes

Correct, I am not using Humanoids.
However, when using a translation on the Y axis for my mermaid morph (which does use the Humanoid) If the player is scaled (using the BodyHeightScale) I have to manually adjust the C0 Cframe on the motor connection the tail to the lower torso, to adjust for the animation still keeping the original Y translation.
So not sure if it will scale even with a Humanoid.

3 Likes

I second this, I explained my own issue in this thread, but to summarize:

My project requires R15 characters and rigs that have to be scaled to different sizes. But as explained here, any shifting / XYZ position offsets do not scale up with the rig’s size.

I can try implementing an automated solution in-game, but this would be expensive. Exporting different versions of the same animation for different sizes is not ideal as explained in this feature request either due to how much you have to publish.

2 Likes

Same problem. Want to scale down/up custom characters but it messes up all animations with position data.

I was hoping this release would fix it but it doesn’t seem like it? Or maybe only for R15 right now.

4 Likes

This seems to me like it is something that really could be a fairly easy fix.
Of course when you publish an animation, it has the rotation and shifts.
So when you load the animation to create a track, I feel there could be an optional parameter to the
load function were you can specify a scale (percentage of the original shift values) This could be a general single value scale that works globally for the animation or a vector3 to specify the scale along the various axes.
I just think that, as long as the Load function is turning the animation into a Track, why cant during this process the scale be adjusted. Whatever optimizations are already being done to the animation upon loading could still take effect in this step, just … scale the cframes.

2 Likes