VAT Shader Basics
Last updated
Last updated
A VAT (Vertex Animation Texture) is a shader and texture map combo technique used in 3D graphics to achieve efficient vertex animation without the use of bones. It's particularly useful for complex or deformable objects and animations that would otherwise require too many bones to be efficient.
The VAT shader requires access to the object's source file to create the required textures. This contrasts with the Displacement shader, where it’s possible to create maps by understanding the UV layout of an asset.
NOTES:
VAT only affects the appearance of the visual mesh and not its collision.
Sansar VATs are implemented differently from those in other external engines. A tool is available for most users (details below), while advanced users can see VAT Technical Info for more.
The VAT shader requires the creator to have access to the object's source file to generate the necessary textures, as it relies on a secondary UV map to control animation. In contrast, the Displacement shader can work with maps created by understanding the UV layout of an asset, even without access to the source file. The advantage of the VAT shader is that its color maps are separate from the animation maps.
VAT maps are not considered human-editable. While technically possible to edit them, it is not straightforward.
A Blender addon has been created to assist in making VAT assets. CLICK HERE to download the free tool for Blender 3.4 and above. The tool is untested on earlier versions.
After downloading the latest release of the tool, install it in Blender like any other addon.
(User Preferences -> Addons -> Install from File) and then select the .zip
file.
Once installed, you should see the Sansar Tools addon in the sidebar.
Frame Range: Specify the first and last frame for export, as well as the frame step size. A smaller step size captures more frames of animation. Sansar includes some interpolation between frames.
Generate Mesh: If checked, the mesh to be uploaded to Sansar is generated along with the displacement and normal maps. If unchecked, only the textures are generated.
Encode Map as Z-Curve: If checked, the generated images store the data in Z-order (Morton Code), which optimizes caching inside Sansar. Additionally, the first pixel encodes the number of vertices and frames. This option is required for generating Sansar assets. If disabled, the images store the data such that the vertices are columns and the frames are rows, making them compatible with other engines.
Export Files: Exports both images and the mesh (if generated) to the specified path and filename prefix.
The maximum number of vertices and frames is limited by two factors:
Precision of Encoding: This independently limits the number of vertices and frames.
Available Pixels in an 8K Texture: This limits the product of the number of vertices multiplied by the number of frames.
Exact Limits:
Maximum number of vertices: 16,773,120 (after split normals).
Maximum number of frames: 4,096.
Maximum product of vertices and frames: 67,108,863.
Example:
If you want 4,096 frames, the number of vertices must be limited to 16,383.
Halving the number of frames allows you to double the number of vertices, continuing this trade-off up to the maximum allowed vertices.
4,096 pixels are used for encoding, so factor this into your calculations.
This is a basic guide to creating VAT assets. The Blender tool converts keyframed animation into a usable mesh and texture set for Sansar VAT. All objects will be combined into a single mesh with the tool, so ensure individual objects are scaled and transforms are applied.
Your objects need a clean UV layout to create a VAT map. Ensure no overlapping vertices before creating the VAT UV. Once done, you can modify UV Map 1 as needed.
Animate your object using any method (shape keys, bones, vertex-based animation with Blender’s AnimAll addon, object animation, etc.).
Ensure your UV unwrap has no overlapping vertices (e.g., from mirroring).
After finalizing your keyframes, select your objects, set the frame Start, End, and step rate in the Sansar addon.
Choose the export path and filename prefix, then click the process button. The tool will create the mesh and textures required for import into Sansar.
The generated mesh is essential for Sansar VAT and must be used as your import model.
In Sansar:
Import the VAT Mesh files.
Set up the shader using the provided VatMap and VatNormals.
Adjust the step rate in the editor to see the animation. There is a chance you may need to save the material to see this correctly and allow the processing of the texture to complete.
Add other material maps (albedo, roughness, etc.) and save.
For animations not inherently keyframed (e.g., cloth simulations), use workarounds like Point Cache .mdd
import/export or Blender's Bake to Keyframes modifier. These methods generate usable keyframes.
Steps:
Apply the scale, location, and rotation to the object (Ctrl-A
).
In User Preferences -> Add-ons, enable:
Import/Export NewTek MDD Format
Export your animation using File -> Export -> Lightwave Point Cache (.mdd).
Delete unsupported modifiers (e.g., Cloth Sim in Physics).
Re-import the .mdd
file (File -> Import -> Lightwave Point Cache).
The object will now have keyframes and shape keys, making it compatible with the VAT tool.