UPDATE: Now supports Nanite. Unreal 5.4 + Check this video: th-cam.com/video/xh0gT8acihE/w-d-xo.html www.patreon.com/posts/vat-tools-in-ue5-91225451 Sample project with all data: bake tools, player etc.
My advice for viewers on this. Take your time and absorb everything you can from this deep dive. It really helped me add to my understanding gained from the trash praxis video. Awesome video and breakdown! thank you sir.
In the original material layer, the PrevFrame is used with a PreviousFrameSwitch to help create the motion vectors with WPO. In your modification, you repurpose the PrevFrame to do the anim blending, however this also contributes to the blurring from TAA. You can keep the PreviousFrameSwitch if you have 2 CurrentFrame and 2 PrevFrame. Each sampled anim has a current and prevframe to connect to a PreviousFrameSwitch.
Hi. Great tutorial. It help me a lot to understand how the plug in worked. But for some reason I can´t make the Bake VAT on the utility to work correctly. It doesn´t write the UV channel 01 (previously deleted), nor actualizes the textures. Any idea of what could be happening? I´ve started from the previous version of the utility, which worked fine in 5.1. Thanks in advance.
Check if your static mesh model doesn’t have checkbox selected on Generate Lightmap UV. Also check how many UVs it has and then inside DA select proper channel value. Let’s say it has 2 channels 0 and 1. In DA fill 2 so it would be your third UV for only VAT purposes.
I also noticed at the end of the video that if the frame count isn’t normalised to 30 fps and has redundant keyframes it can’t be baked due to size of texture it generates
@@kostiantyntelego3622 Yes, but as I´ve used the same animation in the previous version without trouble, I didn´t realized it could be the issue. But it appears to be. Thanks a lot.
please can you assist. i followed your tutorial but the static mesh doesnt show in the view port and the texture is a semi circle not a scattered texture. please
Frame is simple math with some clamps and that all. But with this I have control over it. Not a big deal at all in terms of performance. Most benefits come from avoiding calculations of each bone and vertex on skeletal mesh component. Once I implement VAT on nanite meshes performance gonna be crazy :) or I will wait till Epic supports it
Hi! Quick question. Just started out on this and I can't seem to find the correct nodes to connect the Normal and Wold Position Offset plugs in the Material. Meaning your Teal "Normal" node and Yellow "WPO" nodes. What types would they be? I think it's the final piece of the puzzle for me :) . Great video really liked how you dissected the logic behind the process.
Oh I thought it was something a more fundamentally important. In that case. I need to go back and find why my character isn't moving. Thanks for the clarification!
Curious about how to randomize the animation between the different instances to break up the uniformity? Would that be like a a forth custom data value that just sends random value in each iteration of the for loop and then feed that back into the bone mods?
All animations are stored in array, so u can get index of it, length of array and just get random index within array bounds on demand e.g if animation play time is almost finished
@@YourSandbox Oh sorry, I wasn't clear in my message. Yeah that would randomize which animation is being played but I was curious about varying the playback position of the current animation between the instances. Say you had the 3x3 grid of people all playing the same walk animation, but you wanted to vary their start position so they weren't all taking the same step at the same time.
Nope. I am not. I am talking about a native Unreal plugin called AnimToTexture. And I only made an asset utility script for Unreal that helps to utilise plugins functionality so you can bake VAT within few clicks
Cannot seem to get array of different instances with random anims playing. This tutorial is great for the 1 instance. The grid system does not randomize using Setup Instance function. It only takes 1 instance. While the Add Instance works with arrays but the instances lay on top of each other. Any help on this?
This tutorial is not about setting up crowds. It’s about making tools, blending VAT and just an example of how to use. Why ppl think it’s crowds if it’s not even mentioned..
When you blend the normals at the end, you can also add the WPO values together. This is useful, for example, if you bake a MetaHuman head and want to still use the "HideNeck" feature of the material.
Im thinking of using this technique not for RTS, but 3d person rpg. Using VAT is the only way currently animating characters using the Mass tools Epic had provided. Question is: will it be possible to achieve high enough fidelity of animations? Other question, is it possible to switch from using vat animations to regular skeletal animations at runtime?
VAT being only way for MASS crowd animation is news to me. I was also wandering about transitions from VAT to skeletal animations and only way I think its possible is to manage the animation timelines ourselves and when transitioning from VAT to skeletal, calculate the timeline of current VAT animation and transfer it to newly initialized skeletal ABP so it can init and resume the anim from exactly same pose. Managing complex layering logic is another thing to take care of. For simple crowd I believe its possible with some work. Ragdolls or bone related logic will be really hard though
@@akshaydharmadhikari393 Not sure if still relevant, but I highly recommend looking the City Sample. They are doing just that! They use AnimToTexture and montages to keep track of what frame does the animation is currently playing so the transition from Skeletal anims to VAT (and back) is seamless.
@@RomanTimm For my purposes I ended up writing my own Niagara VAT rag doll system. Allows GPU ragdolls and large numbers. Also I'm not using Mass for any of it as it lacks lot of debugging I require. Opted for a custom ECS approach
@@akshaydharmadhikari393 Are there any guides on how to use Niagara for this? Would love to learn it and implement it instead of working with Mass since it's very hard to get going.
@@RomanTimm Niagara is for my cheap ragdoll system. For large entity count, I'm using Apparatus ECSish plugin. have to write many things from groud up but gives more control. Feasibility of Niagara for VAT and ragdoll depends heavily on project. Mine can be categorized as topdown horde survivalish looking. Also I don't need accurate ragdolls although with custom sdf full ragdolls can be done as well to some degree. Less bones == Cheap compute shaders. ATM I don't have any guides or tutorial for it, but basic principleis same. I re-wrote how the VAT plugin bakes textures into a compute shader so it can update a render target of some springy bones and drive VAT anim with it. Juggling bone space and particle IDs can be bit challenging. If more people think sharing the setup will help, I might make a video or just make the project public (basically Cropout project)
@@kostiantyntelego3622 yeah, indeed i send the msg before i saw it. sorry. but, the question now is why ue crash after i have tried to create static mesh from selected? please help
Does it crash on any skeletal mesh? Have u tried some basic ones? It should not, it’s not my code, transferring from skeletal to static is done on AnimToTexture plugin side. I need to see some information like log or crash message, dump file. U can send me your skeletal via email so I can try to reproduce the bug
Atm no, but I guess Epic will make it work in future. As from 5.0 to 5.3 the plugin has had lot of changes and improvements. So it’s just matter of time
UPDATE: Now supports Nanite. Unreal 5.4 +
Check this video: th-cam.com/video/xh0gT8acihE/w-d-xo.html
www.patreon.com/posts/vat-tools-in-ue5-91225451
Sample project with all data: bake tools, player etc.
This tested for 5.4?
@@inph1del yeap. recently added new tutorial how to make nanite work with it
My advice for viewers on this. Take your time and absorb everything you can from this deep dive. It really helped me add to my understanding gained from the trash praxis video. Awesome video and breakdown! thank you sir.
amazing tool for RTS projects, just like butter
your blueprints are so organized oh my god i love it
Very nice! Thank you for your work :) I did not know about the AnimToTexture Plugin, that will come in handy^^
Your content is pure gold! thank you so much for all the knowledge you provide!
In the original material layer, the PrevFrame is used with a PreviousFrameSwitch to help create the motion vectors with WPO. In your modification, you repurpose the PrevFrame to do the anim blending, however this also contributes to the blurring from TAA. You can keep the PreviousFrameSwitch if you have 2 CurrentFrame and 2 PrevFrame. Each sampled anim has a current and prevframe to connect to a PreviousFrameSwitch.
Sounds interesting. Gonna check it, thank You
Some great stuff right here! Looking forward to making use of it :-D
dude this tutorial is awesome, im dev joining your patreon
Hi. Great tutorial. It help me a lot to understand how the plug in worked. But for some reason I can´t make the Bake VAT on the utility to work correctly. It doesn´t write the UV channel 01 (previously deleted), nor actualizes the textures. Any idea of what could be happening? I´ve started from the previous version of the utility, which worked fine in 5.1. Thanks in advance.
Check if your static mesh model doesn’t have checkbox selected on Generate Lightmap UV. Also check how many UVs it has and then inside DA select proper channel value. Let’s say it has 2 channels 0 and 1. In DA fill 2 so it would be your third UV for only VAT purposes.
@@kostiantyntelego3622 All that checked. Only one UV (0) in the mesh, UV set to 1 in the DA.
I found that seems to be something related with the animation. With another animation sequence it worked.
I also noticed at the end of the video that if the frame count isn’t normalised to 30 fps and has redundant keyframes it can’t be baked due to size of texture it generates
@@kostiantyntelego3622 Yes, but as I´ve used the same animation in the previous version without trouble, I didn´t realized it could be the issue. But it appears to be. Thanks a lot.
please can you assist. i followed your tutorial but the static mesh doesnt show in the view port and the texture is a semi circle not a scattered texture. please
can you change the color of the static mesh AFTER you bake the animation to texture?
Yes, u can
To have the calculation of every frame outside of the shader, don't you loose the purpose / performance of having the VAT all calucated on the GPU?
Frame is simple math with some clamps and that all. But with this I have control over it. Not a big deal at all in terms of performance. Most benefits come from avoiding calculations of each bone and vertex on skeletal mesh component. Once I implement VAT on nanite meshes performance gonna be crazy :) or I will wait till Epic supports it
I wonder if there is a way to update this plugin to apply to the abc cache animation?how to do
Hi! Quick question. Just started out on this and I can't seem to find the correct nodes to connect the Normal and Wold Position Offset plugs in the Material. Meaning your Teal "Normal" node and Yellow "WPO" nodes. What types would they be? I think it's the final piece of the puzzle for me :) . Great video really liked how you dissected the logic behind the process.
It’s a named reroute nodes. Just like a shortcut or local variable to keep node graph cleaner.
Oh I thought it was something a more fundamentally important. In that case. I need to go back and find why my character isn't moving. Thanks for the clarification!
Curious about how to randomize the animation between the different instances to break up the uniformity? Would that be like a a forth custom data value that just sends random value in each iteration of the for loop and then feed that back into the bone mods?
All animations are stored in array, so u can get index of it, length of array and just get random index within array bounds on demand e.g if animation play time is almost finished
@@YourSandbox Oh sorry, I wasn't clear in my message. Yeah that would randomize which animation is being played but I was curious about varying the playback position of the current animation between the instances. Say you had the 3x3 grid of people all playing the same walk animation, but you wanted to vary their start position so they weren't all taking the same step at the same time.
thank you was look for how to covert anim to vertex
Hello are you the Guy before in unity ?The Asset in unity has Name Smart VAT
Nope. I am not. I am talking about a native Unreal plugin called AnimToTexture. And I only made an asset utility script for Unreal that helps to utilise plugins functionality so you can bake VAT within few clicks
Cannot seem to get array of different instances with random anims playing. This tutorial is great for the 1 instance. The grid system does not randomize using Setup Instance function. It only takes 1 instance. While the Add Instance works with arrays but the instances lay on top of each other. Any help on this?
This tutorial is not about setting up crowds. It’s about making tools, blending VAT and just an example of how to use. Why ppl think it’s crowds if it’s not even mentioned..
True , but it is a question I am asking. @@YourSandbox
how would you connect the VAT WPO node if a material already has WPO value from its own material nodes?
I can’t see how it can be done, cause all vertices are already playing animation baked into them. And I can’t see the real use case for it.
When you blend the normals at the end, you can also add the WPO values together. This is useful, for example, if you bake a MetaHuman head and want to still use the "HideNeck" feature of the material.
Pure Gold!
Is it just visual or you can shoot with physics every character?
Each ISM has capsule collision so it works pretty well. Just can’t rag doll, but can play proper animation if needed
@@kostiantyntelego3622 ah okey, thanks for answering ^^
Can i convert albembic?
Hi, I clicked "Show plugin Content" but I didn't find "ML_BoneAnimation_Mod".
Can you help me?
You won’t. It’s my modified version. Did u watch whole tutorial?
Im thinking of using this technique not for RTS, but 3d person rpg. Using VAT is the only way currently animating characters using the Mass tools Epic had provided.
Question is: will it be possible to achieve high enough fidelity of animations?
Other question, is it possible to switch from using vat animations to regular skeletal animations at runtime?
VAT being only way for MASS crowd animation is news to me. I was also wandering about transitions from VAT to skeletal animations and only way I think its possible is to manage the animation timelines ourselves and when transitioning from VAT to skeletal, calculate the timeline of current VAT animation and transfer it to newly initialized skeletal ABP so it can init and resume the anim from exactly same pose. Managing complex layering logic is another thing to take care of. For simple crowd I believe its possible with some work. Ragdolls or bone related logic will be really hard though
@@akshaydharmadhikari393 Not sure if still relevant, but I highly recommend looking the City Sample. They are doing just that! They use AnimToTexture and montages to keep track of what frame does the animation is currently playing so the transition from Skeletal anims to VAT (and back) is seamless.
@@RomanTimm For my purposes I ended up writing my own Niagara VAT rag doll system. Allows GPU ragdolls and large numbers. Also I'm not using Mass for any of it as it lacks lot of debugging I require. Opted for a custom ECS approach
@@akshaydharmadhikari393 Are there any guides on how to use Niagara for this? Would love to learn it and implement it instead of working with Mass since it's very hard to get going.
@@RomanTimm Niagara is for my cheap ragdoll system. For large entity count, I'm using Apparatus ECSish plugin. have to write many things from groud up but gives more control. Feasibility of Niagara for VAT and ragdoll depends heavily on project. Mine can be categorized as topdown horde survivalish looking. Also I don't need accurate ragdolls although with custom sdf full ragdolls can be done as well to some degree. Less bones == Cheap compute shaders. ATM I don't have any guides or tutorial for it, but basic principleis same. I re-wrote how the VAT plugin bakes textures into a compute shader so it can update a render target of some springy bones and drive VAT anim with it. Juggling bone space and particle IDs can be bit challenging. If more people think sharing the setup will help, I might make a video or just make the project public (basically Cropout project)
thanks bro it worked
glad to hear it, hope u didn't struggle too much :)
please did you change anything from the tutorial. my textures dont comeout properly and the static mesh iis blank if you can share please
cool, tried vats few times but never did a blending
Great tutorial! Thanks
DOES IT WOEK WITH UE5.3
Yes. As I said in video. And sample project is also 5.3
@@kostiantyntelego3622 yeah, indeed i send the msg before i saw it. sorry. but, the question now is why ue crash after i have tried to create static mesh from selected? please help
Does it crash on any skeletal mesh? Have u tried some basic ones? It should not, it’s not my code, transferring from skeletal to static is done on AnimToTexture plugin side. I need to see some information like log or crash message, dump file. U can send me your skeletal via email so I can try to reproduce the bug
@@YourSandbox thank you for reply.i have sent you an msg email via an other email adress.
i forget the password of this imail lol
thanks you
Does this support Nanite?
Atm no, but I guess Epic will make it work in future. As from 5.0 to 5.3 the plugin has had lot of changes and improvements. So it’s just matter of time
how can i replace my chracter model with sample project, please help me
this rules
Appreciated