Log into your account to keep track of your progress. You can work through the lessons without logging in but your progress will be lost when you refresh the page.
Learn how Vertex Animation Textures (VAT) provide an efficient and powerful solution for recreating complex and non-traditional animations and FX in real time. Because VAT only uses textures and shaders to achieve the visuals on the GPU, it has a much lighter performance impact on the CPU, compared to traditional skeletal mesh animations. These lessons use the VAT 3.0 which offers a more streamlined workflow, additional advanced features, and a lot more customizability.



Simon is a tech Artist that loves building procedural tools and assets. By adding more and more procedural approaches to his workflow, he is able to build 3D models with speed and flexibility. During his studies at Digital Arts and Entertainment, he taught himself how to work with Houdini. After his studies, he started working on Ary and the Secret of Seasons at eXiin. Currently he is a Houdini freelancer and focuses on creating procedural content.

More from Simon Verstraete


  • art3mis 2 years, 5 months ago  | 

    Very useful. Thanks. Where are the sample files?

  • art3mis 2 years, 5 months ago  | 

    Never mind. I see the link at top.

  • Parpa 2 years, 5 months ago  | 

    This doesnt work with apprentice version since it cant export FBX.

  • Eason_Zhong 2 years, 5 months ago  | 

    After clicking 'Unreal Engine Plugin and Guides' in VAT node, I don't see anything new in the pop up window, like those new Material Functions. Any links for downloading those utilities please?

  • haijijuevip 2 years, 5 months ago  | 

    thanku ~ wannask Why VAT doesnt work with niagara(its Jitter a lot when I use [ niagara/mesh render/apply the right Mat ] the effetc doesnt right~ ) Looking forward to your reply~

    • scorpes 1 year, 10 months ago  | 

      Same problem here, mesh jitters in Niagara, must be doing something wrong

    • jasveersin 1 year, 10 months ago  | 

      Same issue on my end with extreme jitter and incorrect shading when used in niagara mesh emitter but seems fine on a regular static mesh.

    • hyawatha15 6 months ago  | 

      There's a solution posted here that worked for me: https://realtimevfx.com/t/houdini-vat3-0-to-ue4-use-niagara-error/19242/5

  • samirpatro2001 2 years, 4 months ago  | 

    Can we also use high-res rbd fractures with chipping or interior details as VAT in Houdini?

    • samirpatro2001 2 years, 4 months ago  | 


      • Simon_V 2 years, 4 months ago  | 

        You can do high quality RBD fractures with VAT, of course it might cost a bit performance in unreal. Like I mentioned in the first video the more pieces and animation the bigger the textures. Here is a detailed example https://twitter.com/sidefx/status/1437455046774513677
        What you can do is combine VAT and trigger particles systems at that location with smaller details and smoke.

  • MarcoMeeuwse 2 years, 4 months ago  | 

    Hi Simon,
    First of all, thank you so much for creating these tutorials. I hope you have some time to shine some light on how to add textures to these models. I can't find a texture slot to add a texture for the brick / concrete wall or a simple water texture. I can't find if VAT comes with an export for the UV map or something?
    Thanks in advance!

    • Simon_V 2 years, 4 months ago  | 

      It depends what method your are using for example with the RDB you should be able to use the "base color" material input for adding textures.

  • 18950403839 2 years, 4 months ago  | 

    I use my own models,but it Warning
    Do not include the vertex attribute "uv2", "uv3", or "uv4" for Rigid-Body Dynamics (Rigid) mode. They will be overwritten.

    • 18950403839 2 years, 4 months ago  | 

      delete the attribute is ok.thanks~

  • livinskyalex 2 years, 4 months ago  | 

    I am trying to run an animation at a specific time. I create a dynamic material instance. I change the set scalar parameter "Auto Playback" to 1. Nothing changes. Perhaps you need to use a different function?
    Everything works with "display frame", but not with "Auto Playback".

    • livinskyalex 2 years, 4 months ago  | 

      Changing Playback speed to 0 works. But is this the most optimal way.

      • livinskyalex 2 years, 4 months ago  | 

        But no. Changing "Playback speed" from 0 to 1 does not start the animation from the beginning ...

  • ttpetra 2 years, 4 months ago  | 

    Hi Simon,

    Thank you for this tutorial. I have a question about creating the material in unreal. The documentation provided on artstation says that '"Create a new Material and call the VAT Material Function of the mode you need e.g dynamic remeshing (fluid))" but after that there is not much to go with. unlike the legacy method where we copy a sample shader code from houdini and the material network is created in Unreal. With the 3.0, how do we set up the material in unreal?

    • ttpetra 2 years, 4 months ago  | 

      So sorry. I have seen the answer in the video

  • ttpetra 2 years, 4 months ago  | 

    I followed your tutorial for fluid but the look up texture option was not available in the material instance. Any tips on how to fix this?

  • jkxblueandwhite 2 years, 4 months ago  | 

    Hi Simon, I followed your tutorial for fluid but I have an error with the Labs_vertex_animation_textures node

    Invalid source /out/Fluid_Simulation/objects/TEXTURE/msg_fluid
    Error: Dynamic Remeshing (Fluid) mode expects unpacked polygon primitives. One or more unexpected primitive types are found on the input geometry. Consider using Convert SOP to convert your geometry type to "Polygon"

    Thank you

    • Simon_V 2 years, 4 months ago  | 

      The error tells you to unpack geometry and they all need to be of the same type "Polygon".
      For Example in the fluid video at 4:19 you will see that I need to convert the simulation to a polygon.

  • RyanGillespie 2 years, 4 months ago  | 

    Hello, I've been looking through the VAT 3.0 Complete Guide: Part 1 on Artstation, watching some of the Labs VAT video tutorials by the SideFX Labs team, and reading the SideFX Labs docs pages. Great job on putting the docs and training materials together.

    I've been working with the dynamic remeshing material function and my sim is working in Unreal 4. I saw that we do have the ability to export UV information in a couple of different ways. Either using the red and green channel in the color texture or in the position and color alpha channels. I'm not exactly sure how to leverage these channels in the material node network once these textures are exported.

    Is there additional documentation or an example of an Unreal material set up somewhere? It's a bit out of my wheelhouse. Thanks in advance for your time.

  • woshixiaoge93 2 years, 4 months ago  | 

    I have a problem.Dynamic Remeshing (Fluid) mode,When I run the first Pass,It warned me,Points are folded into more than 99 rows in the animation data uv channel,please,increase Target Texture width. But I've given it very high ... turn on Preview Texture Size ,But I don't know what the calculated size represents,how to know the specific size of the value? Can anyone help me answer it, thank you

    • Simon_V 2 years, 4 months ago  | 

      There is a change the fluid setup you have has too many points or high polycount.
      All the data of the simulation need to be compressed to textures which mean you will have a limit.
      The more points and frames you have the bigger the textures, currently 8K textures are the cap and with that you can do already a lot.

  • lhx940851993 2 years, 3 months ago  | 

    Is there any relevant documentation about the corresponding material shader in the engine? I found out that in the shader of UE, the attribute of geometry will be encoded into the material data, such as "active pixels ratio X". I don't know these special coding roles, although the idea of VAT is very simple, it is relatively difficult to use the data exported from Houdini in our own engine.

    • Simon_V 2 years, 3 months ago  | 

      Currently there is no documentation on how you could implement this in your own game engine. The VAT data has a lot of compression to save data in textures, vertex color and uv channels. Would recommend looking at the Unreal version and breakdown what is needed to create the effect, if you would need assistance you could try sending a mail to support to see what would be possible.

  • MM-2 2 years, 2 months ago  | 

    Great video ! But I have a question: How to setup material instance in UE to play animation once and stay on last frame ?
    I've created some simple crate destruction exported to VAT.
    Then OnCollision I can set GameTimeatFirstFrame to curent time, and then PlaybackSpeed to 1.0.
    It animates but in loop. I have tried to set PlaybackSpeed back to 0.0 (after some delay) but it switches to first frame :)
    I also tried to set DisplayFrame parameter to last frame, but this parameter isn't available when Auto Playback is on.
    And AutoPlayback is needed to be able to control PlaybackSpeed :)
    So... how to play VAT animation once and stay on last frame ? :)

    • Simon_V 2 years, 2 months ago  | 

      What has worked for me is using a custom time input. So if you input time node + clamp node in the material network then it will play once because of that clamp. If you not tried it but you probably could use in blueprint the timeline node to drive the vat animation in the Time slot of the material node.

      • MM-2 2 years, 2 months ago  | 

        Yeah !! It's working ! :) Thank you very much :)

  • justin_a_f 2 years, 1 month ago  | 

    I tried to do the particle animation and every step works, but the last step, when I put VAT_Sprites_Inst to material the object just become invisible.
    Any tips on how to fix this?

  • Kegs 2 years, 1 month ago  | 

    This looks amazing. I'm trying to do something like this https://youtu.be/tG7tzwNSgS0?t=1971 Its calculating rotations for packed geo that has not been simulated through a solver. I'm having trouble with the extract transform/transform pieces method (as seen with the with the "crag" example). It works perfectly in Houdini, but the orients/rotations are wrong in Unreal (the positions look correct). I also created a simple simulation using a bullet solver to debug - I deleted the orient attribute from the solver, and then recalculated it with the extract transform/transform pieces method. It worked perfectly in the Houdini and Unreal, I'm getting confused at this point.. Has anyone else got the crag (or any non solver) example working? Or any ideas what I may be doing wrong? thank you :)

    My HIP file: https://drive.google.com/file/d/1H-UGLzhI9Br7mxmEGjmMfqJ5Pel6atEa/view?usp=sharing
    Video : https://drive.google.com/file/d/1voauCtzoajgOjoH_ke1r_XnujvvZzoSq/view?usp=sharing
    Unreal 4.27.2 file (just on the off chance anyone wants to access it): https://drive.google.com/file/d/1YGkutFsVrfavtZXDEpv9eX4gkhRxRUFp/view?usp=sharing

  • Clos3d 2 years ago  | 

    Very cool tech. The only thing missing I can't find is the MultiMaterials ( Materials element 0/1/2 etc.... ) Sharing the same POS/ROT but with different materials.
    For example, in you wood/concrete RBD simulation, would you need to split it into 2 files to have the wood AND the concrete materials applied?


  • antoniopepe 1 year, 12 months ago  | 

    There is a way to smooth the normals for softbody geo? ... as seen in your example the normals are a bit hard and would be great to have a smooth 80/90° normal .

  • Newmanfx 1 year, 11 months ago  | 

    Hi Simon,

    Thank you for sharing. Quick question, I have an issue where half geometry is missing, I get holes and weird triangles. I triple-checked textures and geometry, tried on simplest example. What am I missing?


    • Newmanfx 1 year, 11 months ago  | 

      update: it has something to do with the lookup table width and target texture width ratio or value, will keep testing.

  • petewallaceguildhall 1 year, 10 months ago  | 

    Hello NewmanFX --- Did you solve this at all? From the demo above I get different results to Simon in terms of the height generated from the width - for Lookup and Textures. Which I think is causing the same in UE5.

  • AK_dev 1 year, 10 months ago  | 

    Doesn't seem to work for UE5

  • qq1595505499 1 year, 9 months ago  | 

    Hello, I have imported the baked character vertex animation into UE5, it is normal, but when I put it into Niagara, it will shake and stretch, is there any good way?

  • Samani123 1 year, 9 months ago  | 

    Hey Great video, I was able to follow up the whole time but the particle is not working when I import it into UE5 is it working on UE5?

  • Chats 1 year, 9 months ago  | 

    This is awesome, however I have one question.
    Instead of the particles being used as sprites in UE5, can the imported VAT-animated particles be used as points for instancing Unreal geometry onto?
    ie. drop Unreal boxes onto the particles that use the orientation and scale attrs on the particles to align and scale the instances?

  • sourceengine1402 1 year, 8 months ago  | 

    Recommended only for experienced users. Why they put the tag for beginners is not clear. The speaker shows the result and editing it, but does not show how to do it.

    • NotTheRealRuss 1 year, 8 months ago  | 

      It sounds like you just saw the first 7 minute video. They go through every node used to make the each effect in the following videos on the right. It's an advanced technique so maybe it should be tagged as intermediate but I think a beginner could follow all the tutorials and piece together the steps.

  • NotTheRealRuss 1 year, 8 months ago  | 

    First off, great video series, I learned a lot.

    I'm trying to get this working in UE5. Vellum, RBD and Particle VAT effects work as expected. Dynamic Remesh is giving me some issues though. The general shape and color is there are hundreds of triangles of negative space that flicker with each frame. Strange lines seem to connect and reconnect between the mesh.

    The simulation works perfectly in Houdini. It has between 2,000 and 12,000 prims and the output in the particlefluidsurface node is set to 'Surface Polygons'

    I've been digging for an answer but from what I can tell UE5 has a breaking bug when importing Dynamic Remeshes specifically, but I couldn't find anything definitive.

    Does anyone have any help or documentation that could help sort this out?

    • NotTheRealRuss 1 year, 8 months ago  | 

      I was working with my team who got in touch with sidefx on the back end. The solution was in this thread. https://www.sidefx.com/forum/topic/81422/?page=1#post-350761

      tldr, in UE5, in the static mesh, turn on UE4 Compatible UVs, and restart UE5.

  • dome1812 1 year, 7 months ago  | 

    Is your fluid looking brtoken in UE5 5 even after change texture settings and restart the engine try those steps

    -Disable power of two when export it can casue issues in the whole system
    -enable full precision UV and full precision tangents in the imported mesh settings
    -Export the Lookup table texture also as HDR image ( dont forget to change to .exr format)
    - in the mesh settings disable nanite
    - when creating the mesh dont go too crazy with the point count. i tried a 50.000 points and 100 frames mesh and it was not very stable


    if its still broken you should check if the

    UE4 compatible UVs is checked inside the mesh, if not it can cause also the mehs to break

    • acherednychenko 11 months, 2 weeks ago  | 

      Thank you, @dome1812 - enabling full precision UVs makes it work for me in UE5.1

  • theshizon 1 year, 6 months ago  | 

    Hi Simon. Thanks for the tutorial. So I'm trying to do rain in Unreal 5. For your particle example of the hi-res green swirly one with the trails, how do you get that effect. You just show the super basic particle sim but I need to get my particles oriented towards the velocity. The rain is falling diaginally but my sprites are just squares/rectangles wont orient to the velocity. Can you please upload an example of how to get the particles with motion blur or something. Thanks!

  • ChadWang 8 months ago  | 

    Hi Simon. Thanks for your tutorial which is really useful, however, I have some questions about high precise VAT. I sim a cloth with collision and everything looks well in Houdini. There are some areas(prim) cross in UE4 even though I keep all setting same with the Houdini &UE4 instruction doc. Does it possible to use this way to calculate highly precise cloth sim, At least keep all points in their right position such as ABC file. Thanks!

  • zzm88104 1 month, 3 weeks ago  | 

    The fluid and particle examples have glitch in runtime. Working fine in edit mode. UE5.3

Please log in to leave a comment.