test(review): ground-level cameras, and a null result that locates the float
Two cameras were added at pavement height - one on the feet, one on the wheels - because the wide shots cannot settle whether anything touches the surface. The feet shot settled it, and not the way I expected. Lowering the player start from 455 to 395 changed NOTHING in the capture: same framing, same float. The capsule falls onto the collider and always rests at Z 456 with its feet at 369, while the rendered pavement is about a metre lower. So the float is not a spawn-height problem, and no amount of tuning player_z will fix it: the sidewalk's collision extends above its visible top, and the player stands on an invisible ledge. The earlier 'top surface under player: Z 366' measurement was not wrong - it was measuring the collider, which is the thing that is in the wrong place. Next: measure the sidewalk mesh's rendered top against its collider and fix the asset, not the spawn. Also pulled the wheel camera back; it had been inside the bodywork.
This commit is contained in:
1 parent
f1d6283384
commit
ca73563060
41 files changed
+81
-48
No files matched your search
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -26,9 +26,11 @@ Actionable task list for this project. This file is the single, central place fo
|
||||
- [x] Fix the character and car floating. **The measurement was taken at the wrong moment.** The foot probe ran in `BeginPlay`, while the pawn is still at its spawn height and falling, so every trace reported a surface far below it (`ground 366` against an actor at 561) and read as a float that was not there. The probe now runs **three seconds after spawn**, from the capsule's feet, on three channels, and names the actor it hits. Character: the player start at Z 600 left the soles 39 cm in the air (the capsule settles at 561 on this pavement); the start is now the measured 561. Car: the template's lowest geometry is exhaust, so grounding on the whole model put the tyres 4 cm above the origin - it is now grounded on its wheels, staged at Z 342 after the traced road height (366) disagreed with the visible road by ~25 cm.
|
||||
- [x] Fix the vehicle's material colour. The template's `car paint` is a legacy mix-shader graph that the FBX exporter cannot map, so `SM_Vehicle_Body` imported holding `WorldGridMaterial` and rendered black while Blender showed red. Legacy graphs are now converted to Principled before export (saturated colour wins over the grey diffuse next to it), and the staged body panel is assigned `M_Vehicle_HatchPaint`. Judge: `verdict=yes confidence=0.9`.
|
||||
- [x] Fix the missing vehicle glazing. The `windows` material was metallic 1.0 with roughness 0.0 - a black void that read as an empty cabin. Now tinted translucent (opacity 0.85, roughness 0.08); opacity 0.45 was tried first and made the glass invisible. The vision judge still returns `verdict=no` for the frame, disagreeing with what is visibly tinted glass; it is advisory, and the human verdict decides.
|
||||
- [A] Measure the shadow gap instead of arguing with the vision model. The judge now flags the character and car as floating in the spawn view, and its criterion is in the expectation ("a shadow more than a hand's width below an object means the object is floating"). Two readings are possible and both fit the pixels: the object really floats, or it stands on the raised pavement and the sun throws its shadow past the kerb onto the road. `Tools/shadow_gap.py` now does the measurement: object vs shadow in pixels, as a fraction of the object's height. It works on synthetic frames (tests pass) but returns `unknown` on the real spawn view, because the crop contains two surfaces - the pale wall behind and the dark road below - and a single global background cannot classify both. Next: per-region backgrounds, or crop tightly around the feet and their shadow only.
|
||||
- [A] Fix the pavement: its collision sits above its visible surface. The judge now flags the character and car as floating in the spawn view, and its criterion is in the expectation ("a shadow more than a hand's width below an object means the object is floating"). Two readings are possible and both fit the pixels: the object really floats, or it stands on the raised pavement and the sun throws its shadow past the kerb onto the road. `Tools/shadow_gap.py` now does the measurement: object vs shadow in pixels, as a fraction of the object's height. It works on synthetic frames (tests pass) but returns `unknown` on the real spawn view, because the crop contains two surfaces - the pale wall behind and the dark road below - and a single global background cannot classify both. Next: per-region backgrounds, or crop tightly around the feet and their shadow only.
|
||||
|
||||
**The spawn height is measured and is not the problem:** tracing down from 30 m above the player, the topmost surface is Z 366 and the capsule's feet sit at 369 - three centimetres, which is the capsule skin. If the character still looks like it floats, the gap is between the **rendered** pavement and its **collision** surface, not the spawn Z. That is the thing to measure next: the sidewalk mesh's rendered top versus the collider returned by the trace.
|
||||
**The float is a pavement bug, proved by a null result.** Lowering the player start from 455 to 395 changed **nothing** in the ground-level feet shot: the capsule falls onto the collider and always rests at Z 456 with its feet at 369, while the rendered pavement is roughly a metre lower. So the sidewalk's **collision extends above its visible top** - the player stands on an invisible ledge. Spawn height, capsule offset and the shadow are all consequences of that, not causes.
|
||||
|
||||
**The measurement that says otherwise:** tracing down from 30 m above the player, the topmost surface is Z 366 and the capsule's feet sit at 369 - three centimetres, which is the capsule skin. If the character still looks like it floats, the gap is between the **rendered** pavement and its **collision** surface, not the spawn Z. That is the thing to measure next: the sidewalk mesh's rendered top versus the collider returned by the trace.
|
||||
|
||||
- [ ] Implement enter/exit interaction.
|
||||
- [ ] Build a closed driving route with boundaries.
|
||||
|
||||
@@ -293,6 +293,11 @@ try:
|
||||
# view from the road so both the body and the wheels are visible: a side-on
|
||||
# or rear view hides the wheel stances that the build is judged on.
|
||||
("demo-vehicle", unreal.Vector(-12560, -1560, 560), unreal.Vector(-12950, -900, 420), 45.0),
|
||||
# Ground-level angles on the contact points. The wide shots cannot settle whether
|
||||
# the feet and wheels touch the surface - that question needs the camera near the
|
||||
# ground, looking along it, where a gap is a visible sliver of surface.
|
||||
("demo-feet", unreal.Vector(-13140, -980, 400), unreal.Vector(-13336, -1150, 372), 40.0),
|
||||
("demo-wheel", unreal.Vector(-12380, -580, 430), unreal.Vector(-12950, -900, 360), 55.0),
|
||||
("demo-spawn-view", unreal.Vector(-13336, -3100, 620), unreal.Vector(-13336, 1300, 620), 48.0),
|
||||
# Street level, from the north sidewalk: the old camera sat at Y -400,
|
||||
# inside the facade body (which spans Y -1457..-200), so it looked at
|
||||
|
||||
@@ -108,6 +108,26 @@
|
||||
"Art/blender/vehicle/hatch-reference.png"
|
||||
],
|
||||
"expect": "A red compact hatchback car parked on a pavement beside a person, with dark windows, four dark wheels and a dark bumper, daytime"
|
||||
},
|
||||
{
|
||||
"name": "demo-feet",
|
||||
"shot": "Screenshots/demo/review-demo-feet.png",
|
||||
"size": [
|
||||
1920,
|
||||
1080
|
||||
],
|
||||
"references": [],
|
||||
"expect": "Low view of a person's feet standing on a pavement, seen along the ground, daylight. The object must touch the surface: feet or wheels in contact, with the shadow starting at that contact point, not on the ground far below."
|
||||
},
|
||||
{
|
||||
"name": "demo-wheel",
|
||||
"shot": "Screenshots/demo/review-demo-wheel.png",
|
||||
"size": [
|
||||
1920,
|
||||
1080
|
||||
],
|
||||
"references": [],
|
||||
"expect": "Low view of a car's wheels standing on a pavement, seen along the ground, daylight. The object must touch the surface: feet or wheels in contact, with the shadow starting at that contact point, not on the ground far below."
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user