Skip to content

3.45.0

Choose a tag to compare

@fernandotonon fernandotonon released this 30 Sep 21:11

Vertex Animation Texture export — four modes

qtmesh vat now bakes four kinds of animation into OpenVAT textures, not just skeletal clips:

mode bakes texture columns
skeletal (default) a skinned animation, per-vertex positions + normals vertices
rigid one rotation + pivot per submesh piece per frame (destruction, mechanical parts) pieces
mesh-anim a vertex cache (Alembic / vertex-animation clip) vertices
morph keyed blend-shape weights (defaults to the editor's weight clip) vertices
  • Encodings: rgba8 (smallest), rgba16 (default), exr (float32, lossless).
  • Targets: agnostic, unity, unreal, godot. A non-agnostic target also copies that engine's shader template next to the bake. Rigid bakes ship a new Godot template, openvat_rigid.gdshader.
  • Rigid bakes report a fit residual per piece, so a piece that doesn't actually move rigidly is visible instead of silently wrong.
  • Same controls everywhere: CLI --mode / --encoding / --target, MCP bake_vat mode / encoding / target / include_shaders, and Mode / Encoding / Target pickers in the Inspector's VAT section. The picker only offers modes the selected mesh can bake.

Using it

  • qtmesh vat character.fbx --anim Walk -o out/
  • qtmesh vat pieces.fbx --anim Explode --mode rigid --target godot -o out/
  • qtmesh vat face.glb --mode morph --encoding exr -o out/

Two bake bugs fixed along the way

  • The last frame of every bake read frame 0 (Ogre wraps time on looping clips). Invisible on a looping walk, wrong on a lipsync clip that ends on a different mouth shape.
  • Morph bakes lost their vertex alignment and UV2 because the glTF read-back rejected the embedded buffer the exporter adds for morph animations.

Checked against an independent blend-shape oracle on the 51-target ICT lipsync clip: every frame decodes within one 16-bit quantization step.

Also in this release

  • ARKit blendshapes no longer land on the back of the head. The face auto-rig assumed every head faces the same way as its template, so any model facing another direction got the template fitted onto its skull, even with markers placed. The rig now solves the head's rotation from the detected face points or your markers, fits in the template's frame, and rotates the shapes back. With no usable points it falls back to the detected face direction (yaw and pitch; a head rolled sideways still needs markers). The face-landmark model now downloads on first use, and the CLI/MCP report includes orientation_source and orientation_angle_deg.

Full changelog: 3.44.0...3.45.0