Retargeted MetaHuman animations stand 4 cm underground in Unreal Engine 5.8
Induction day, twice
Second Chance has a council refuse job in it. You come out on the release programme, you sign on, and one of the things going is a loader's job with the bin round. Before your first shift somebody walks you into a room at the depot and puts an induction film on the telly.
The film has been in production for days. On Tuesday morning, while James ate his cereal, the machine was still rendering frames of it — the job had been set going the night before and it carried on without him, which is most of what the phone is for.
Then he went to college, and college turned out to be his own year 3 induction day. He spent it sitting through an induction while, at home, a game rendered one. Nobody arranged that.

The room is the point, and it is worth saying why. There are no cut scenes in this game. The player is never lifted off the controls and shown something. So the induction is a film, on a television, in a room you walked into — and if you want to stand up halfway through and go and look at the yard, nobody stops you. GTA 6 will take the camera off you for that beat, because GTA 6 is a story about somebody else. This is a first-person town where you can walk out of your own induction.
Yesterday morning, that room did not exist. The entry before this one closed with a :::todo saying the classroom had been scoped and scripted and not built, and that the depot office door opened onto a four-metre drop. By the end of the day there was a classroom, a canteen, a Gents, a Ladies and a flight of stairs down to the grass.
Snap, and four mugs
The canteen went in first: folding tables, twelve chairs, lockers, a clock, a fire extinguisher, a noticeboard, and a tea urn on the counter with four mugs, teabags, coffee and a pint of milk beside it.

None of that is set dressing in the sense of a backdrop. Every one of those is an actor in the level, because the argument this game is making is that everywhere is enterable and everything is interactive, and a staff canteen you cannot get a brew in is a diorama. It is also the sort of thing nobody has to be talked into when the studio is one person: nobody had to be persuaded that the depot should have a working kettle corner, so it has one.
James caught the spoons. They had been laid out bowl-first, which is not how anybody puts a spoon down, and he spotted it on screen before any check did. They got turned round.
The toilets went in later, off a 150 cm corridor at the east end — a Gents, a Ladies, tiled floors, and a fire door back round to the classroom. Being able to have a wee before your first shift is not a headline feature. It is the same argument as the mugs.

The kit those fittings come from turned out to have two defects that would have gone into five other venues had anybody run it. The toilet Blueprint is a whole fitting — 16 separate meshes, including the cistern chain — and the shared kit places a second chain, mirrored onto the other side of the same cistern. And the sign material has no parameters on it, which means every sign plate in the project says the same word. Both were left in the shared kit deliberately and worked around locally, because fixing a kit that serves five venues on a Tuesday evening means re-verifying five venues.
Three instruments, three flat answers
The other half of the day was getting a man to walk from the grass into the building, and it went wrong three times in the same shape.
The ground outside the depot frontage drops 1.2 m in the first 60 cm and the road is 3.4 m below the shed floor, so there had to be steps. The other session building the fabric put in a switchback: two parallel flights joined by a half landing, with railings, cut into a terrace that runs along the front to the roller door.

First instrument. Two probe passes reported the ground outside as a flat number across a slope that visibly is not flat. The trace was hitting a World Partition proxy — a cheap merged stand-in for distant geometry — whose collision blocks visibility, ignores pawns, and encloses the point the trace starts from. So the trace returned its own start position, twice, with no error. The tell is that the answer was suspiciously uniform. Real ground under a bank is not.
Second instrument. With the route drawn, the agent swept a player-sized capsule along it to check nothing was in the way, and reported all nine legs blocked, 104 separate contacts. Every one of them was the floor. The capsule had been centred so its bottom sat exactly on the surface being walked on, so the deck, the treads and the landscape all counted as obstructions. A verdict that comes back identical for every item is the instrument, not the data — the same tell as the trace, an hour apart.
Third, and this one was cheap but instructive: the man's actor was invisible to a search. A recon filtered on his name, sorted by label and took the first sixty results, and sixty toilet actors sort ahead of him alphabetically. It read exactly like he does not exist, which is one keystroke away from spawning a second one.
With the capsule given a step-up allowance, seven of the nine legs came back completely clear and the three remaining contacts were the retaining wall you legitimately walk past. The route is 38.67 m and climbs 4.68 m: off the grass, up both flights, east along the terrace, and in through the open roller door, where the terrace meets the shed floor dead level.
"Is he on tiptoes?"
Trev stands outside having a cigarette while you arrive. He is one of the crew, and he is there so the yard is not empty on your first morning.
Getting him onto his mark took two goes. The agent placed him by script; James dragged him to where he actually wanted him and called it the exact right place. Dragging an actor in the viewport picks up the surface normal as rotation, so a 184 cm man came to rest with a degree of pitch and twelve degrees of roll on him — leaning, in a way that reads as a broken model rather than a wrong transform. He was also 3.3 cm under the turf.

Then James looked at the render and asked whether Trev was on tiptoes or flat-footed.
He was neither. His ankles were at the right height and the balls of both feet were 4.4 cm below the floor with the toes pointed down 26 degrees, which is the opposite of tiptoes. And the number never changed: 28.285729 degrees at one second, 28.285740 degrees at nine and a half. Ten-millionths of a degree apart across eight and a half seconds of performance. Nothing that constant comes from an actor.
The first audit had already said the feet were fine. It said FLAT — matches the control, off a reader that returns roughly zero translation for every foot bone in every clip, because a retargeted MetaHuman clip animates rotation only for limbs and the translation lives in the rest pose. Three different clips came back with identical numbers and that was taken as agreement rather than as a broken gauge. Same shape as the trace. Same shape as the sweep. Three times in one day.
Read properly, with the pose composed through the skeleton, it got worse. It is not one clip. Across 410 body clips on the cast, the planted foot's height is cleanly two humps: 201 clips sitting at a median of −4.20 cm, and 148 at +1.00 cm. A split that clean is a constant offset, not a set of bad performances.
The cause is one number. The retarget pose carries a roughly 25-degree delta on both feet while the calves and thighs are only three to six degrees out, and the automatic bone alignment that produces it is applied to every rig built by the same script. So it is not Trev's fault, it is not the smoking clip's fault, and it is on twelve working characters.
The three bin-round clips are the ones that matter. All three are sunk, at −4.31, −4.64 and −5.14 cm. James had watched Trev and Gav pushing wheelie bins in the review video, noticed something odd about their feet, and put it down to them leaning into the bins. They were not leaning into the bins. It has been shipping for months, on everything, and the only reason it surfaced is that somebody asked a plain question about a man having a fag.
Nothing has been fixed. The whole of it is measurement — about 200 clips across twelve characters is not a pass to start at eleven at night, and the obvious shortcut, lifting the character up 4 cm, is wrong: most characters hold both sunk and grounded clips, so raising the mesh grounds one set and floats the other.
What the evening cost
He had been to the gym after college and run 1.2 miles, keeping his heart rate under 135 by dropping to a walk whenever it climbed and picking it back up when it settled. Second day of letting the watch set the terms rather than just record them. Later he went out for his 10,000 steps and checked on the depot build from the phone while he walked, which meant a game about a man's first day at work was being built by somebody out counting his own steps.
The editor fell over twice. Once in the afternoon at 6,689 MB of video memory against a 6,616 MB budget — 72 MB over the line, on an 8 GB card — and again at the end of the night. Nothing was lost either time, because every write had been saved as it happened.
Rockstar have a team who would have caught the feet in review, and probably a rig supervisor who would never have shipped the retarget pose in the first place. He had a Tuesday, a college induction and forty minutes on a treadmill.
The fault
Retargeted MetaHuman animations stand about 4 cm underground with the toes pointed down
The ankle sits at the correct height and the ball of the foot drops, so it reads as a pointed foot, not as a sunken character. Measured against a known-good idle on the same body:
| control clip | the Mixamo clip | delta | |
|---|---|---|---|
| pelvis height | 85.17 | 83.81 | −1.4 cm — not a whole-body offset |
| ankle height | 7.05 | 7.23 | +0.2 cm — unchanged |
| ball height | +0.69 | −3.69 | −4.4 cm, through the floor |
| ball pitch | 2.07° | 28.29° | 26° toes-down |
It is a constant, not animation: 28.285729° at t=1.0 and 28.285740° at t=9.5.
It is not one clip. Over 410 body clips the planted-foot height is bimodal — 201 clips at a median of −4.20 cm, 148 at +1.00 cm. The three bin-round clips are 3 of 3 sunk.
Cause: the retarget pose carries a ~25° delta on both feet (calf and thigh deltas are only 3–6°), and automatic bone alignment is applied to every retargeter built by the same script, so every character inherits it.
The fix
Measure the foot with a composed pose, flag on sink depth, and fix the retarget pose rather than the mesh
The measurement first, because the wrong reader hid this for months. AnimationLibrary.get_bone_pose_for_frame returns ~0.00 translation for every foot bone in every clip — a retargeted MetaHuman clip animates rotation only for limb bones, and the translation lives in the rest pose. An audit built on it returns identical numbers for three different clips and reports FLAT.
unreal.AnimPoseExtensions.get_anim_pose_at_time(seq, t, opts)
→ get_bone_pose(pose, bone, unreal.AnimPoseSpaces.WORLD)
That is FK-composed and agrees to three decimals with an independent query of the same bone.
Flag on sink depth, never on toe pitch. Running, stairs, kneeling and lying-down clips all have legitimately large toe pitch; a first pass on pitch over-flagged 330 of 410.
☠ Do not fix it with a mesh Z offset. Most characters hold both sunk and grounded clips — one holds 13 sunk against 40 grounded — so lifting the mesh grounds one source and floats the other. Zero the foot deltas in the retarget pose, re-retarget the smallest character first, and re-run the audit: a real fix moves the sunk group from −4.2 to about +1.0.
The guard: the audit is a re-runnable script and the two medians are the pass condition. Anything that leaves the sunk group near −4.2 has not worked.
The fault
A downward trace reports the same flat ground height across a visible slope
Two probe passes returned a uniform number for ground that actually falls 1.2 m in the first 60 cm. The trace was hitting a World Partition HLOD proxy, which is query-only, blocks visibility, ignores pawns, and encloses the trace's own start point — so the trace returns its origin. No error, no warning, and a plausible-looking number.
The same hour, a capsule sweep of a nine-leg route returned all nine legs blocked, 104 contacts — every contact being the surface being walked on, because the capsule was centred so its base sat exactly on the ground.
The fix
Trace on the Pawn profile, discard HLOD hits, and give a sweep a step-up allowance
Use a multi-hit trace on the Pawn profile and drop any hit whose class name contains HLOD. For the sweep, add a step-up allowance above the stair riser height before testing for overlaps — 25 cm against a 16.1 cm riser here. Seven of the nine legs then came back completely clear, and the three remaining contacts were a retaining wall you legitimately walk past.
The guard, and it is the one worth keeping: a verdict that is identical for every item is the instrument, not the data. A flat number across a slope, nine legs out of nine blocked, and three different clips reading the same to two decimal places are all the same fault wearing different clothes.
⚠ Stair actor origins are not the treads — one step's origin reads 88 cm below the surface you stand on. Every height on a stair route is traced, never typed.
The kit
| Tool | Why this one |
|---|---|
| Unreal Engine 5.8 | where all of it lives, and where all three instruments lied |
| Mixamo | the source of the smoking clip, and of the retarget pose that broke the feet |
| Two editor sessions at once | one owned the building fabric, the other the people in it — with a hard rule that neither saves the other's unfinished work |
| A phone | the only thing at the desk for most of the afternoon |
Plain English
| Term | What it means |
|---|---|
| retargeting | Taking an animation made for one character and making it work on a differently proportioned one. |
| retarget pose | The neutral stance the engine assumes both characters are in while it converts an animation from one to the other. A few degrees wrong here is wrong in every clip that comes through it. |
| Mixamo | A free online library of motion-capture animations, made to be dropped onto your own characters. Cheap performances, at the cost of a conversion step that can quietly go wrong. |
| reference pose | The neutral stance a character model is built in, before any animation is applied. Seeing it in a finished shot means the animation is not running at all. |
| MetaHuman | Epic's system for realistic human characters — face, body, hair and clothing, ready to animate. Every named person in the game is one. |
| skeleton | The hierarchy of bones inside an animated model. Two models sharing a skeleton can share animation. |
| actor | Anything placed in the game world — a lamp post, a person, a trigger volume, a camera. If it sits in the level, it is an actor. |
| trace | Firing an invisible line into the world to find out what it hits — used for "what is under this object" and "what is the player looking at". |
| HLOD | The same idea applied to whole groups of buildings at once, so a distant part of town is drawn as one cheap lump. |
| World Partition | Unreal's system for very large maps. It chops the world into a grid and only loads the squares near the player. |
| collision hull | The invisible simplified shape used for bumping into things. It is not the shape you can see, which is why invisible walls happen. |
| VRAM | Memory on the graphics card. This project has 8 GB of it, and that ceiling shapes most of the decisions in the devlog. |
Things we still need to fix tomorrow:
- The feet are measured and not fixed. About 200 clips across twelve characters, and three of
them are the bin-round clips that are already in a review video.
- Trev has a cigarette but no smoke. The mesh is imported; the exhale and the tip wisp are not
built, and when they are they have to be driven by the same wind the golf ball uses.
- The route from the grass to the roller door is measured and swept and nothing walks it yet.
- The induction film still is not in the game. The room it plays in now exists, which is one
of the two things that were stopping it.
- Nobody can sign on for the bin round, and the round has never been watched past the first
stop of five.
- There is still no video of any of this. The building keeps winning.