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.

CREATED BY

SIMON VERSTRAETE

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

COMMENTS

  • art3mis 9 months, 3 weeks ago  | 

    Very useful. Thanks. Where are the sample files?

  • art3mis 9 months, 3 weeks ago  | 

    Never mind. I see the link at top.

  • Parpa 9 months, 2 weeks ago  | 

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

  • Eason_Zhong 9 months, 2 weeks 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 9 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 2 months, 3 weeks ago  | 

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

    • jasveersin 2 months, 3 weeks 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.

  • samirpatro2001 9 months ago  | 

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

    • samirpatro2001 9 months ago  | 

      *Unreal

      • Simon_V 9 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 9 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 9 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 8 months, 3 weeks 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 8 months, 3 weeks ago  | 

      delete the attribute is ok.thanks~

  • livinskyalex 8 months, 3 weeks 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 8 months, 3 weeks ago  | 

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

      • livinskyalex 8 months, 3 weeks ago  | 

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

  • ttpetra 8 months, 3 weeks 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 8 months, 3 weeks ago  | 

      So sorry. I have seen the answer in the video

  • ttpetra 8 months, 3 weeks 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 8 months, 3 weeks ago  | 

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

    Warning
    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 8 months, 2 weeks 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 8 months, 2 weeks 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 8 months, 1 week 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 8 months, 1 week 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 7 months, 3 weeks 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 7 months, 3 weeks 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 7 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 7 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 7 months ago  | 

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

  • justin_a_f 5 months, 2 weeks 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 5 months, 1 week 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 5 months 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?

    Thanks!

  • antoniopepe 4 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 .
    Thanks

  • Newmanfx 3 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?

    Thanks

    • Newmanfx 3 months ago  | 

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

  • petewallaceguildhall 2 months, 1 week 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.

  • Mysunder 2 months ago  | 

    Doesn't seem to work for UE5

  • qq1595505499 1 month, 3 weeks 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 month, 2 weeks 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 month 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 3 weeks, 3 days 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 week 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 week 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 5 days, 5 hours 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.

Please log in to leave a comment.