How to correctly scale a skeletal mesh / physics actor along one axis
To cut a long story short since I have been working on this one thing for a very long time, I basically have a skeletal mesh that I have turned into a physics actor. I am happy with the physics actor and it works correctly as it is. I would, however, like to change the scale of the skeletal mesh / physics actor dynamically during runtime.
For some example context, I am working on making a modular character creation system and would like to have a set of different tails that players can add to their characters. As a part of the creation interface, there is a slider that will allow you to adjust the tail length, and as you move the slider, the length of the tail will update in the game. This needs to be a physics asset since I would like it to dynamically react to how the character moves and hit or knock over things in the environment. It is very important that the scaled mesh collides with things and moves correctly.
In attempting to simply apply scaling length to test tail through the character blueprint by pressing some debug keys, I am able to scale the mesh along the axis I specify. However, the mesh is the only thing that scales; the skeleton and physics do not scale with it. For example, the default tail length will sway and collide with the environment as it should, but a longer tail that was scaled will clip through the environment and only collide with things where the default tail length would be. In addition to this, the tail mesh becomes distorted.
How am I able to scale the skeleton and or physics actor along one axis so that it behaves as it should? I am using blender to create my models. Am I able to do something similar to using morph targets / shape keys to distort the skeleton? Can I keyframe bone size somehow? Am I able to lerp in between two target skeletons?
Thanks to anyone in advance who offers some help; it is greatly appreciated!
asked Jan 13 '18 at 05:11 AM in Using UE4
This is an old thread, but I ran into this problem (although I was scaling my mesh in all axes), and calling RecreatePhysicsState() (native method) on the SkeletalMeshComponent before calling SetSimulatePhysics did the trick for me.
answered Jul 11 '19 at 07:47 PM
Follow this question
Once you sign in you will be able to subscribe for any updates here