MD: Incorrect FEV For Nearly Axis-Aligned Mesh #26

Open
opened 2026-01-23 17:23:00 +00:00 by Quaternions · 1 comment
Owner

With body position 80.858, 358.368, -309.674 and mesh 1020 in bhop_iso, closest_fev_not_inside returns the wrong FEV.

I believe that I can compare MD Rust and Lua to find the issue.

With body position 80.858, 358.368, -309.674 and mesh 1020 in bhop_iso, closest_fev_not_inside returns the wrong FEV. I believe that I can compare MD Rust and Lua to find the issue.
Author
Owner

The bug appears to be in crawl_to_closest_fev, which is returning an edge when it should be returning a face. The MD algorithm itself appears to be returning a face, and then crawl_to_closest_fev fails to find the correct face.

on_exact simplex=Simplex3([VertVert(SubmeshVertId(3), SubmeshVertId(0)), VertVert(SubmeshVertId(3), SubmeshVertId(3)), VertVert(SubmeshVertId(3), SubmeshVertId(7))])
I can't believe it's not a face!
Edge(EdgeVert(SubmeshEdgeId(10), SubmeshVertId(0)))

See debug-26 branch.

The bug appears to be in crawl_to_closest_fev, which is returning an edge when it should be returning a face. The MD algorithm itself appears to be returning a face, and then `crawl_to_closest_fev` fails to find the correct face. ``` on_exact simplex=Simplex3([VertVert(SubmeshVertId(3), SubmeshVertId(0)), VertVert(SubmeshVertId(3), SubmeshVertId(3)), VertVert(SubmeshVertId(3), SubmeshVertId(7))]) I can't believe it's not a face! Edge(EdgeVert(SubmeshEdgeId(10), SubmeshVertId(0))) ``` See `debug-26` branch.
Quaternions added the physics-bug label 2026-01-30 18:04:34 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: StrafesNET/strafe-project#26