From ca7e410663e2e024416ec565b4cbb0e8a42e4bfe Mon Sep 17 00:00:00 2001 From: Zwitschi Date: Mon, 9 Nov 2026 17:54:06 +0100 Subject: [PATCH] docs(memory): why the sidewalk does not block, and the stopgap that does Records the finding rather than the tool that failed to fix it: the staged Sidewalk_North mesh carries QueryAndPhysics and CTF_USE_SIMPLE_AND_COMPLEX with auto-generated collision, and still lets both a trace and a capsule through. The likely cause is a degenerate convex hull for a 279 m x 8.6 m x 3.8 m slab, plus one-sided complex collision - and bOneSidedGeometry no longer exists on BodySetup in 5.8, so the flag cannot be flipped from Python. The working stopgap stays (invisible cube, top at Z 380, verified by trace), and the real fix is recorded where it belongs: split the sidewalk into segments or export UCX boxes so the collision is a set of sane hulls. Deletes Tools/ue_fix_ground_collision.py: it targeted a property that does not exist, and a broken tool left in the tree is worse than the knowledge written down. --- MEMORY.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/MEMORY.md b/MEMORY.md index e5b1a67..5a82ca6 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -512,3 +512,10 @@ Scope: facts and traps that cost time to establish. Planned work lives in [TODO. - **A 1 cm solidify shell lets the body poke through.** Garments built by duplicating body faces needed 2 cm of solidify plus an 8 mm fatten along their own normals before the cloth read as continuous at shoulders, hips and knees. - **Warm skin sampling as blue-grey was lighting, not material.** The body stood in building shadow and was lit almost entirely by the blue `Demo_SkyLight` (intensity 2.6): face (99, 98, 100), arms (67, 74, 81). Raising the sun to pitch -74 moved the face to (131, 121, 117). A deliberate red test colour reaching the render first proved the material and the slot assignment were fine, which is what stopped a long hunt in the wrong place. - **The Unreal commandlet drops unknown command-line switches.** A `--unlit-test` flag passed after `-script` never reached Python; an environment variable does get through (and even that proved unnecessary once the red test settled the question). + +## 2026-11-09 — The sidewalk does not block, and why + +- **The staged `Sidewalk_North` mesh does not stop a trace or a capsule.** It carries `QueryAndPhysics`, its bbox tops out at Z 380, and `Tools/ue_import_site.py` sets `CTF_USE_SIMPLE_AND_COMPLEX` with `auto_generate_collision=True` — yet both a downward trace and a falling capsule pass straight through to `Road_Hollywood` at 366. +- **Likely cause: the auto-generated simple collision for a 279 m x 8.6 m x 3.8 m slab is degenerate.** A convex hull over that aspect ratio either collapses or ends up far from the surface; the complex side is one-sided and the mesh may be wound the wrong way. `bOneSidedGeometry` no longer exists on `BodySetup` in 5.8, so the flag cannot be flipped from Python. +- **Working stopgap:** an invisible `279 x 8.6 x 0.08 m` blocking cube with its top at Z 380 in `Tools/ue_build_demo_map.py`. Verified: `top surface under player: Z=380 mesh=Cube`, `foot: actor Z 470, feet 382`. +- **The real fix belongs in the site export:** split the sidewalk into segments of a few metres, or export explicit `UCX_` boxes, so the collision is a set of sane hulls rather than one degenerate one.