Morph target not working on slaves meshes

Hello,

I have a character blueprint composed of two meshes at the moment, one for the body and one for the head.
I have set the body as master component and the head as slave in the construction graph of the blueprint.
The body has an anim blueprint.
I try to apply a morph on the head on start and for this, I call the Set Morph Target function in the event graph of the blueprint on the event begin play, but it doesn’t show when I hit play or simulate.
If I put the head as main mesh and master component and the body as slave, it’s working.
So I’m guessing I’m missing something here, but I haven’t been able to figure it out by now. If anyone could provide some help, that’d be great.
Thanks for reading.

I’ve workarounded this by extending AnimInstance in c++ and I’ve overridden EvaluateAnimation and set my target morph to 1.0 there. Then I used this class as a base for my Anim BP.
It works but that feels rather ugly. Pretty sure there is another way to set morph in slave components of a character BP ?

Just set morph target on master mesh, it will get send down to slave mesh (at least it worked for me).

Hum that’s embarrassing… I was pretty sure I had tried what zigo.osolin suggested in his comment, but obviously not since it’s actually working. I feel dumb!

Thanks for your help.

So, it’s resolved : I just have to call set morph target on master mesh, even if the morph is actually on a slave mesh.

Could you possibly clarify this for me? I’m running into what I think is the same issue. I have 3 pieces - the head, the body, and the legs. The morph that I want to use is on the body. When I export the three pieces of the character, I figure that I should only include the relevant morphs on each body part, not all morphs on every body part. Is that correct? Then when I try to use the morph (that is on the body piece, which is a slave), I access it through the head, which is the master mesh? I’ve tried accessing it separately through the master and the slave mesh, but neither seem to work.

Also, like you, this is only an issue if the mesh I’m trying to set a morph target on is not the master mesh. If I change the head and body in terms of master/slave, the morph works.

After encountering this issue yesterday I’ve worked out another problem with how this works, and a solution.

Another post covers most of it, so I won’t.

However - additionally, if you have a component directly under the Master component in the component tree, it will not accept the morph, though it will accept the pose/animation. To accept the morph it must either be at the same level or a couple of levels below, for example you could add a Scene component under the body and add the clothes under that.

I know this question is a year old but I couldn’t find this part anywhere and hopefully this will help others avoid frustration in future!

lith

Safe From Robots

Just to clarify.

The master pose component, target models mush not be children of the master model, in the mesh component section, or they will not receive any morph target animation through the Master pose component. However they will still receive animation…

Is that a bug? or a feature?

Same problem on our side. We have character build from few USkeletalMeshComponent and need morphs on base mesh, which works fine, and also morphs for one child mesh, and this part dont work. In engine 4.7 it works fine, now after we switch to 4.10 morphs not work for child mesh.

SOLUTION:
In AnimInstance.cpp move MorphTargetCurves.Empty(); operation from UpdateCurves() to UpdateAnimation(), where was in previus engine versions. This resolves problem for our project.

This bug is fixed in UE 4.11 preview 8.

PR https://github.com/EpicGames/UnrealEngine/pull/1512

Thank you