VAT (Vertex Animated Textures) PLANT with Anim States - Presentation 2023 Digital Dragons

Hey everyone,

Recently, with my work colleague Krystian, we went to the Digital Dragons Conference (Krakow, Poland) to present a few concepts of VFX we’ve been working on.

The presentation was recorded, and once it’s online, I will post it here if some of you might be interested.

To give you a quick breakdown - I worked on an animated Plant using Vertex Animation Textures, and all the animation states, logic and additional VFX are made in Niagara without any blueprints.

I’ve created anim states using ENUMS and switched between them using distance from the particle to the player (Camera query + Offset). I will leave some breakdown gifs and also YT videos for the time being while I wait for conference organizers to upload the presentation online. Hopefully, it won’t be long.

Thanks, if you have any questions, feel free to ask, and I’ll be happy to provide some answers if you’re curious about how this is made.


It was a great talk!



Does the recording is up somewhere? Can’t seem to find it anywhere? And btw great job, it looks amazing!!!

I’m working on a vat animation in Niagara and I want to spawn particles on the animated vertices but since it’s only a texture that animates them it is not that easy to get the position of the vertex on each frame at runtime. Any ideas? Thanks

1 Like

Hi Nox

Thanks for your kind words. I think they’ll release it at some point, but I don’t have any date… Finding the Digital Dragons YT channel and checking it every few months might be a good idea.

Happy to help you, but I need a bit more info and maybe some screenshots demonstrating what you’re trying to achieve.

1 Like

Okay so since I’m on NDA I can’t really show you the real asset but I can easily explain it to you with assets from the content examples. So here is a static mesh animated with a VAT shader on it which is mainly how I made mine. Then they will spawn a million beetles using niagara. Nothing to complicated at this point. My question is what if I only want to spawn 1 beetle and spawn additional particles on the beetle wings? How can I get the vertices position data since the vertex are animated in WPO? Do I try to get the data in the shader directly or do I try using scratch pad in niagara to fetch the data? Thanks in advance!

Great idea! Very nice touch with them exploding close to you :slight_smile:
Are you using different Renderers and one Emitter?

I think it would even be possible to create a whole game, just in Niagara. Woud be a nice challenge.
The most complicated part, probably being that all the gameplay logic also needs to be handled somehow. The amazing thing about having everything in Niagara: you can utilise things like Simulation Stages, Neighbour Grid, Distance Fields etc.
I also did similar experiments, but was still shuffling data around between GPU & CPU (via RenderTargets):

Also, maybe you have seen this? There is a plugin that converts animations into VATs. It’s very advanced! Flexible workflow, multiple meshes, root motion, anim notifiers etc.
(also it’s very expensive, so haven’t tested it yet)

Apologies for the late reply. I think you could either use Vertex colour data (apply vertex colour and spawn additional particles based on that OR spawn it based on mask as an additional texture, maybe?
By the way, I’m guessing what I’d try before trying complex solutions/ideas.

by the way digital dragons made my presentation public today in case you’re interested…-> Pawel Margacz, Krystian Borowski - Interactive VFX systems (Niagara - Unreal Engine - Houdini) - YouTube

1 Like

Thanks again for the reply. For now, the workaround I used is basically to “bake” multiple static frames from the “IN” animation and then lerp between those meshes. So I can now spawn particles from a mesh location module and fake the movement like that.

Pawel Margacz, Krystian Borowski - Interactive VFX systems (Niagara - Unreal Engine - Houdini) - YouTube recording just showed up btw! Have fun as it was a pleasurous one