Download

Niagara - Skeletal Mesh with Blendshapes - Particles seem to ignore blendshape deformation

Hi,
I have the following issue.
I have a skeletal mesh that basically consists of very simple geometry lets say a cube with a blend shape animation that deforms it.
Using “Initialize Mesh Reproduction Sprites” or alternatively to keep it simple with “Skeletal Mesh Location” with Mesh Sampling set to "Surface(Triangles) I manage to spawn sprites on the skeletal mesh surface.
But when I try to playback the blendshape animation, or even using an animation asset which just consists of the final value of the blendshape,
the particles will ignore the deformation and still use the basic cube as spawn positions.

Has anybody ran into this problem or knows what I am missing?
Do I have to customize the spawn module in some way so that it takes the changing tricoord positions into account? At least I assume that deforming geometry with a blendshape should also result in changed tricoord positions.

cheers
Christian

Hi,
after some more research it seems that particles (at least with cascade and I think also with niagara) indeed have the limitation that they dont recognize deformations from blendshapes when sampling skeletal mesh surface location, though I only found it in a side note of Vertex Animation Toolkit Docs.

So the proposed workaround I found is using the Vertex Animation Toolkit or similar scripts (for blender I think this is the one https://github.com/JoshuaRBogart/unreal_tools?files=1) to bake the animation to texture which than can be used directly in Niagara using two modules mentioning morphtargets and the toolkit in their name, also the textures can be used with World Position Offset in a material so the blendshape doens’t need to be imported with mesh. The downside is there are limitations to frames and vertex count due to texture resolution and the emitter needs to be gpu I guess because it needs to sample the textures.
Also for very simple animations that basically offset vertices along the normals you could also just use a combination of the niagara texture sample module and set it up to sample the texture used for WorldPositionOffset, use the sampled value in a custom module that multiplies with lerp between 0 and the offset amount and use a variable drive the lerp. Use the lerp as output of this module. And the output can be used as a normal offset that is available in the skeletal mesh location module. And of course the variable of the lerp can be exposed and animated, so that it matches the material.

That are at least some solutions I found out myself, but it would be nice if somebody could confirm that this limitation concerning blendshapes is still there or maybe point out any other workarounds.
Cheers