Fix missing contacts for deeply penetrating boxes.
When penetration exceeds a box's smallest half-size, the midpoint between the contact surfaces can land outside both boxes. The outside- box filter in mjc_BoxBox then removed every contact of the manifold, returning nothing for a visibly overlapping pair, letting boxes fall through each other. Fixes #1800. If the filter would remove all contacts, restore the penetrating ones. This is strictly additive: configurations where any contact survives the filter are unchanged. The removed midpoints are bitwise-identical to the witness midpoints computed by mj_geomDistance for these configurations, so the positions follow the engine-wide contact position convention; re-anchoring them onto a box surface would not. Fixes #1800 PiperOrigin-RevId: 957867315 Change-Id: Ia9c858661d4badeb2a832d25455e33402936011d
This commit is contained in:
committed by
Copybara-Service
parent
8655446f25
commit
fb07a9ca50
@@ -52,6 +52,8 @@ Bug fixes
|
||||
|
||||
- Fixed a bug in the box-box collider where near-degenerate face clipping could generate contacts with spuriously
|
||||
large penetration depth between nearly touching thin boxes with positive margin, causing resting stacks to explode.
|
||||
- Fixed a bug in the box-box collider where penetrations deeper than a box's smallest half-size could produce no
|
||||
contacts, letting boxes tunnel through thin boxes. Fixes :issue:`1800`.
|
||||
|
||||
Version 3.11.0 (July 27, 2026)
|
||||
------------------------------
|
||||
|
||||
Reference in New Issue
Block a user