🎁 Added
  • Any humanoid-LIKE model now works as a conversion target: pick any compiled model (.vmdl) or FBX - including rigs with paws, a single finger, or a missing hand. Whatever roles the skeleton doesn't have are simply skipped
  • Unrecognized target skeletons no longer dead-end with "not recognized as humanoid": the manual bone mapper opens instead, and the confirmed mapping is saved as a preset so that model is recognized instantly forever after
  • Custom FBX targets produce a complete playable model: the FBX is copied into your project - together with its sidecar textures folder - and embedded into the generated vmdl as its mesh + skeleton (previously the vmdl compiled into an empty model with nothing to play). Z-up FBX exports (Unreal, 3ds Max) are detected and handled - no more animations lying on their back. Skeleton-only FBX exports get a clear warning up front. Output vmdls created before this update heal themselves: the next conversion into them adds the missing mesh
  • An FBX with its own animation keeps it: retargeting new clips onto an animated FBX preserves the embedded takes as sequences on the output model, next to the converted ones - converted losslessly through the pipeline so they play at the correct scale whatever units the FBX was authored in
  • Models exported mid-pose repair themselves: FBX files saved with the skeleton left in an animation pose (common on Auto-Rig Pro and store assets - IK'd hands or a foot half a meter from the bind stance) are detected when picked as a target and their true bind pose is restored from the file's own bind data. Previously such rigs looked fine standing still but played with mangled arms, fingers and legs - the "posed" limbs
  • Auto-generated materials handle masked card geometry (eyelashes, hair strands get alpha testing instead of rendering as solid white sheets) and fall back to a matching detail map when a material ships no diffuse texture (a vest with only a specular map shows its strap detail instead of flat white)
  • Custom FBX targets get a real skinned preview: picking the FBX compiles a small preview model in the background, so the preview dialog shows your actual character instead of a placeholder
  • Custom FBX target skeletons are taken from the engine's own import of the file, so the animations and the compiled model can never disagree - per-exporter quirks (3ds Max Biped, Auto-Rig Pro bone scales, odd pivots) previously produced stretched or misplaced fingers and twisted wrists on some rigs
  • Plain-named texture sets now resolve (a material "homer" shipping "homer.png" without any _d suffix used to render untextured)
  • Materials are auto-generated for custom FBX targets: a .vmat is written for every FBX material that has none (textures matched from the sidecar folder by name - diffuse and normal maps) and the model's material references are remapped to them, so the model compiles textured instead of showing "Missing vmat" placeholders. The generated files are yours to adjust and are never overwritten
  • Wireframe skeleton view in the preview: a "Skeleton" button switches between the skinned model and a stick-figure view of the retargeted animation (and back). Targets without a compiled preview model automatically show the skeleton view instead of an empty viewport
  • 2 new rig presets: s&box citizen/human naming (models re-rigged on the citizen skeleton are now auto-recognized) and AdvancedSkeleton (the Maya auto-rigger behind many game rips - Root_M/Scapula/Wrist/Ankle naming; one real model previously auto-mapped its arms and legs onto its head quills and played garbage) (19 presets total)
  • Texture matching covers every common suffix convention (diff/albedo/basecolor/col/clr and friends for diffuse; nrm/nm/norm/bump for normals) and now also wires roughness, metalness and ambient-occlusion maps into the generated materials when the set ships them
  • Single-set texture packs resolve: when everything is named "<character>_*" ("sonic_mat" + "sonic_diff.png"), the base name alone now decides an unambiguous match - previously the body rendered untextured while only distinctively-named parts (eyes) got their maps. Ambiguous base-name ties are still rejected, so multi-part sets can never grab each other's textures
  • Composite-shader texture layers pick the right stand-in by looking at the pixels: materials that ship several same-named layers for a custom shader (an eye as gray ball + white sclera mask + catchlight dot) get the layer with the brightest center as their color map - the pupil-hole layer used to render eyes solid black
  • An FBX with no materials at all (bare Blender export) compiles clean: the engine derives a material slot from the geometry name and used to fail with Missing vmat "cube.vmat" - a stub material is now generated for every geometry slot
🪛 Fixed
  • Custom model (.vmdl) targets were effectively unusable: even citizen-skeleton models were rejected as "not recognized as humanoid (5%)", and animations converted while a pick had silently failed targeted the wrong bones - playing them did nothing. Custom model targets are now recognized, preview skinned, and their compiled sequences actually animate (verified end to end)
  • Animations on custom FBX targets played rotated 90 degrees in ModelDoc (characters walking sideways or "backwards", body pitched over) while the preview looked correct - the compiled animation and the compiled mesh disagreed about the root bones' orientation on embedded-mesh models; they play straight now
  • Animations converted onto a custom FBX target played ZERO motion on the compiled model: the engine sanitizes bone names at mesh import (3ds Max Biped's "Bip01 R Hand" becomes "Bip01_R_Hand") while the animation channels used the raw names and never bound - targets are now built on the sanitized names (verified end to end on a real 3ds-Max-Biped character with mocap and Mixamo clips actually playing on the compiled model)
  • Custom model (.vmdl) targets no longer stretch: bind transforms read from compiled models were misinterpreted, compounding the upper body until heads sat metres away from the torso and the skin pulled into webs ("stretched wrists") - skeletons from compiled models are correct now (a real throw clip went from a bogus 4.3 m "arm swing" to the actual 71 cm one)
  • The preview's overlay skeletons (the "Show source" ghost and the "Skeleton" view) finally draw as full stick figures: the line renderer holds a single polyline, so only the last bone segment ever reached the screen, and stick-bind mocap rigs (NVIDIA SOMA) additionally smeared the ghost into streaks - the skeleton now renders one polyline per chain and the ghost aligns from the clip's first frame (verified in rendered images)
  • The preview no longer runs at ~2 fps with purple/black flicker on custom FBX targets: copied textures were unknown to the asset system, so the renderer retried resolving them every frame - they are registered now and the model renders textured at full speed
  • Rigs whose head bone rests away from the skull (seen on a Sketchfab rig that parks its head joint at chest height, with the skin bind compensating) no longer play every animation with the head pitched back and smearing further as the clip plays - such a bone is not a drivable skull joint, so it and the neck of that broken skull region rest while the spine carries the upper body (map them manually to override; driving the neck sheared a hump onto the character's back because it carried the skull's skin weights)
  • Auto-Rig Pro finger chains articulate at the right joints: the "index1_base" metacarpal was mistaken for the first knuckle, so curls bent the finger from inside the palm while the real knuckle never moved
  • Extra bones outside the body skeleton (skirt/cloth physics chains parented to the scene root - one model ships 48 of them) now ride the character instead of freezing at their spawn position while the body animates away; Prop bones resting at an extremity anchor there instead - a sword in the hand follows the hand, a skirt at the waist follows the hips
  • Limb twist bones on custom targets animate: auto-rigged exports (forearm_twist, ElbowPart1, ForeTwist) spread wrist/knee roll across helper bones the original game constrains at runtime - frozen at rest they candy-wrapped the skin into spike fans at the wrists; they now follow their joint's roll by their position along the limb. The roll extraction is numerically conditioned: near-180-degree limb swings used to inject huge fake rolls (one leg of a throwing character flipped upward while the other stayed correct)
  • The preview keeps each bone's bind scale when posing (models with scaled bind bones collapsed around them in the preview only)
  • Embedded FBX animations keep their authored bone translations: a 3ds Max Biped take animates spine/thigh positions (up to ~19cm of body sway on a death fall) that used to pin to the rest pose, subtly stiffening the preserved animation
🚯 Removed
  • The "Detect locomotion sets" checkbox is hidden from the options panel
🎁 Added
  • RenderWare animation support: drop in .anm clips or .an5 animation banks - banks unpack into individual takes like FBX bundles
  • RenderWare skeletons load from the model .dff next to your animation (auto-detected, with a "Pick skeleton..." fallback on the file row)
  • 4 new rig presets: Source engine ValveBiped, Xsens MVN, Perception Neuron, and DAZ Genesis 3/8 (17 presets total)
  • A preset coverage gate: every preset must map everything its rig family can animate (all finger phalanges, toes, clavicles, full spine) - incomplete presets can no longer ship
🧼 Improved
  • Head and neck alignment on turning clips: the head no longer pitches up/down and the neck no longer tilts sideways when the character faces away from its start heading (was up to ~27 degrees of head pitch and ~13 degrees of sideways neck lean on turning/seated mocap clips)
  • NVIDIA SOMA hands: finger mapping now accounts for SOMA's 4-segment fingers (metacarpal + 3 phalanges) - held grips transfer to the citizen hands instead of leaving them frozen flat
  • Fixed
🪛 Fixed
  • Adding to an existing vmdl no longer fails to compile when the vmdl contains animation entries whose DMX files were deleted or moved - stale entries are now detected and pruned (with a warning listing what was removed; a .bak of the original is kept), so a previously broken vmdl heals itself on the next conversion
  • Converted animations no longer disappear from the output vmdl: each conversion used to regenerate retargeted_animations.vmdl with only that run's clips (converting one more row wiped everything converted before) - the standalone output now accumulates, re-converting the same clip replaces it in place
  • Some BVH files flashed a T-pose at frame 0 in ModelDoc: mocap calibration rest frames at the start/end of a clip are now detected and trimmed (idle clips that genuinely start near rest are never touched)
  • BVH clips recorded away from the capture-volume origin no longer float in mid-air or play outside the ModelDoc grid - clips start grounded over the origin, with in-clip travel preserved exactly
  • Level walks no longer sink feet through the floor or gain height from the rig's rest lean (pelvis travel is now measured in a gravity-aligned frame)
  • Eyes sat outside their sockets in ModelDoc on classic Citizen conversions (preview was correct) - face bones keep their rest animation channels again
  • NVIDIA SOMA and other stick-bind BVH rigs (all bones along one axis) retarget correctly - the rest pose is rebuilt from the clip's first frame
  • Locomotion set detection: the checkbox now matches renamed/sanitized takes, and re-running a conversion over a previously shrunken locomotion set no longer errors
  • Console spam "Compiler CS8632" warnings are gone