Regression tests for custom grip placement, arm reach, and attachment preservation.
Smart Port now fits copied weapon attachments to custom hand proportions.
Adjusts grip reach for shorter arms without stretching bones or scaling the character or weapon.
Preserves existing fitted weapon attachments.
Support-hand drifting during walking, running, and firing on custom rigs.
Attachment fitting with nested helper bones and inconsistent bone-name casing.
Smart Port mode with a dedicated source and target model picker.
Support for selecting local and cloud assets.
Project-owned copies of the source animation graph.
Built-in recovery of compiled model and animation graph files.
Regression tests for skin bindings, animation data, and compiled output.
Retargeting between compatible humanoid rigs with different bind poses and proportions.
Preservation of animation sequences, additive data, footstep events, and required model settings.
Preservation of target geometry, materials, and skin bindings.
Clearer error reporting when Smart Port cannot finish.
Compatible models being rejected because their bind poses differed.
Missing optional material metadata preventing model creation.
Additive animations causing stretched limbs.
Mesh vertices attaching to incorrect bones after compilation, causing mangled models.
Automatic Citizen and Human Citizen animation setup for compatible custom armatures.
Complete stock animation libraries with automatic animgraph assignment.
Optional editable animgraph copies saved alongside the output model.
Stock animation replacement using any supported animation source.
Automatic locomotion direction suggestions from clip names and clear movement.
Selectable reference frames for additive animation variants.
Preservation of animation events, additive settings, blends, IK, attachments, masks, constraints and animation game data.
Footstep detection for in-place animations, with sample-rate-aware contact timing.
Armature compatibility checks before enabling automatic setup.
Backups and conflict protection for existing models and editable graphs.
Expanded regression coverage without weakening existing tests.
Incorrect compiled facing for replacement animations in prefab-based models.
Missed footsteps during horizontal foot sliding and repeated events from contact jitter.
External glTF buffer loading when importing animation files.
Preserved CopyPinky constraints when adding animations to stock-compatible models.
Ambiguous locomotion directions require manual selection.
Fast locomotion variants, animated idle layers and airborne/landing states may require separate setup.
Stock Human Citizen constraints make pinkies follow ring fingers.
Direct stock animation setup requires a compatible Citizen armature.
Automatic detection of separate FBX mesh parts.
Regression tests for mesh imports and output upgrades.
Custom model compilation preserves source mesh boundaries.
Existing generated outputs upgrade without losing animations.
Missing eyes and corrupted geometry caused by merged FBX mesh imports.
An editor compilation error during custom model import.
Automatic support for rigs with separate control and deform skeleton branches.
Automatic detection and animation of articulated single-joint thumbs.
Anatomical mapping now selects the bones that actually deform the model.
Detached body branches now follow the connected animated skeleton.
Twist and helper bones follow their associated limbs more reliably.
Thumb retargeting now preserves each model’s authored hand pose.
Fixed mangled or frozen limbs on control/deform rigs.
Fixed Skeleton’s head pointing slightly upward.
Fixed thumbs sticking out or flipping by approximately 180 degrees.
Fixed coincident thumb joints losing their hand reference.
Fixed disconnected deform bones remaining behind during animation.
Very dark models may trigger the preview texture-color diagnostic despite compiling with valid materials.
Distant non-deforming control bones may trigger the wild-bone diagnostic without affecting the rendered model.
Added a new runtime pose retargeting API for retargeting live humanoid poses without creating animation clips or writing files.
Added an allocation-free retargeting path designed for continuously evaluated pose streams such as mocap, procedural animation, VR, and other real-time animation systems.
Added automatic target humanoid mapping support when creating runtime retargeters.
Added a public source resolution API, allowing integrations to use the same rig detection, mapping, diagnostics, and bind-pose preparation used by normal animation conversion.
Added .cba files to the Humanoid Retargeter editor, file picker, and Asset Browser retargeting menu.
Added editor support for selecting the joint-table JSON required by EA ANT animation packages.
Added support for EA ANT joint-table JSON files stored either as a direct joint array or inside an extractor metadata object.
Added editor-facing support for EA Fight Night boxer rigs and their associated ANT animation workflow.
Improved support for integrations that need fully prepared source animation data in memory instead of immediately exporting DMX animation files.
Improved runtime retargeting performance by reusing mapping data, solve plans, and temporary buffers between poses.
Improved runtime error handling with safe TryRetarget-style APIs and clearer diagnostics for invalid pose data or incompatible skeletons.
Improved .cba workflow integration so ANT animations can use companion skeleton/joint-table files similarly to RenderWare animation sources.
Improved Fight Night rig detection and mapping validation.
Improved handling of Fight Night helper, glove, IK, and control bones so they do not interfere with anatomical humanoid mapping.
Expanded automated test coverage for Fight Night skeleton detection and role mapping.
Fixed Z-up FBX preview orientation being incorrectly rotated when previewing certain FBX targets, including Unreal-style exports.
Fixed source-space conversion so Z-up FBX targets are no longer rotated a second time during preview preparation.
Fixed compatibility with ANT skeleton extractor JSON files that wrap their joint list inside a metadata object.
Humanoid bipeds are currently supported; quadrupeds and tails are not.
Facial and morph-target animation is not transferred.
External .bin files referenced by glTF are not supported; use an embedded .glb instead.
FBX 6.x files are unsupported and must be re-exported as FBX 7.x.
The experimental deep-learning solver does not retarget fingers and remains weaker on hand motion than the geometric retargeting path.
EA ANT .cba files contain joint indices rather than bone names, so a matching ordered joint-table JSON is required.
Custom model support is still lacking.
Preview is buggy at the moment will fix.
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
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
The "Detect locomotion sets" checkbox is hidden from the options panel
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
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
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