Skip to content

UnityEQ VAT Lab

Houdini VAT 3.0 import

Houdini support in EQ VAT Lab is import-only. Artists bake VAT in Houdini, then EQVAT imports the exported mesh, textures, and .mat companion data and wires EQVAT URP shaders. The workflow no longer requires SideFX/VAT_* shadergraphs.

  1. Open Tools > EQLabs > EQ VAT Lab > Open Editor.
  2. Go to the Import Wizard tab.
  3. Assign the Houdini export folder to Houdini Folder.
  4. Click Auto-Detect VAT 3.
  5. Check that Type, Base Mesh, textures, bounds, FPS, frame count, and playback values were filled.
  6. Click Validate and then Auto-Fix Textures if texture import settings need repair.
  7. Click Import & Generate.
  8. Use the generated prefab or open the Preview tab to scrub/play the result.

The same wizard imports EQLabs-native bakes; these stills show one, a Vertex bake read back from EXR textures.

Validate catches the texture import settings that would corrupt VAT data.
Validate catches the texture import settings that would corrupt VAT data.
Import & Generate: a material, metadata and a prefab that plays.
Import & Generate: a material, metadata and a prefab that plays.
The Preview tab: scrub the animation frame by frame.
The Preview tab: scrub the animation frame by frame.
The Preview tab showing the VAT texture itself: every vertex, every frame, in one image.
The Preview tab showing the VAT texture itself: every vertex, every frame, in one image.
ModeEQVAT shaderRequired texturesOptional textures
Soft BodyEQVAT/URP/SoftBodyPosition, RotationColor
Rigid BodyEQVAT/URP/RigidBodyPosition, RotationColor
Fluid / Dynamic RemeshEQVAT/URP/FluidPosition, LookupTableRotation, Color
Particle SpritesEQVAT/URP/SpritesPositionColor

The Import Wizard can still be filled manually if auto-detect cannot infer the export layout. Select one of the Houdini VAT 3 Import types, assign the base mesh and required textures, then pull bounds from the mesh or type the values from the Houdini .mat file.

The parser reads the Houdini/Unity material companion text when present. It looks for:

  • Bounds: _boundMinX/Y/Z, _boundMaxX/Y/Z, or _VAT_LocalBoundsMin/Max.
  • Playback: _frameCount, _houdiniFPS, _displayFrame, _playbackSpeed, _B_autoPlayback.
  • Texture references: _posTexture, _rotTexture, _lookupTable, _colTexture, _spareColTexture, _posTexture2.
  • Mode hints from shader/material names such as SoftBody, RigidBody, DynamicRemeshing, Fluid, Sprite, or ParticleSprites.

EQVAT converts those values into the EQVAT shader property layout:

  • _VAT_Position
  • _VAT_Rotation
  • _VAT_LookupTable
  • _VAT_SpriteColor
  • _VAT_LocalBoundsMin
  • _VAT_LocalBoundsMax
  • _VAT_HoudiniFPS
  • _VAT_DisplayFrame
  • _VAT_Speed

VAT data textures should be point-sampled, linear, mip-free, and uncompressed. Houdini exports commonly use Repeat wrap mode; EQVAT validation accepts Clamp or Repeat and flags mirror modes because they corrupt table lookups.

Use Auto-Fix Textures after auto-detect if Unity imported the textures with sRGB, mips, compression, or a bad wrap mode.

  • VAT 3.0 is the target. VAT 2.0 / Built-in pipeline Houdini exports are not a production path.
  • Optional high-precision Position2 and SpareColor textures are parsed for reporting/future parity, but only the texture slots exposed by the current EQVAT shaders are wired.
  • Baking Houdini VAT inside Unity is not part of the EQVAT Baker tab. Houdini remains the DCC baker.
SymptomLikely causeFix
Auto-detect finds no typeFolder or asset names do not contain recognizable mode hintsPick a Houdini VAT 3 Import type manually
Mesh collapses near originBounds metadata was not read or pulledAssign the .mat companion or click Pull Bounds From Mesh
Animation is staticFrame count/FPS/display-frame values are wrongCheck _frameCount, _houdiniFPS, Auto Playback, and Display Frame
Fluid tears or scramblesLookup table missing or filteredAssign LookupTable, set Filter = Point, disable mips
Looks blurred/smearedTexture import settings are wrongRun Auto-Fix Textures
Report an issue with this tool

Opens our feedback form in a new tab with the tool name pre-filled.