feat: add collision-hull-proxy example (compound convex collision)#96
Merged
Conversation
Game prop pipelines (engines generally, FiveM/GTA-style prop workflows specifically) ingest collision as a compound of convex pieces, each under a per-piece face budget. This example builds a fire hydrant street prop and its four-piece collision compound — each piece a bmesh.ops.convex_hull of a coarse sec(pi/n)-inflated cage — and proves per piece, from closed forms: render-vertex containment (5.9e-08), hull convexity, watertightness, positive signed volume, Euler characteristic 2, and the 255-face budget. A hull of the dense render mesh measures 368 faces — over budget — which is why pipelines hull cages, and why proud details cost cage rows while concave grooves are free. Falsified: post-hull render edit (exit 3, escape 0.730000), flipped winding (exit 5, volume -0.968858), deleted face (exit 4, 3 border edges). Check output byte-identical on Blender 4.5.11 LTS and 5.1.2. Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
This was referenced Jul 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Ships
examples/collision-hull-proxy/— the first of a "game prop validation" pair aimed at game and FiveM prop developers. A fire hydrant street prop (lathed barrel, bonnet dome, three outlet caps, operating nut) plus the collision a prop pipeline ingests: a compound of four convex hull pieces, one per part group, each built withbmesh.ops.convex_hullfrom a coarse collision cage.Scope guard: this witnesses the bpy-level contract a prop pipeline relies on. It is not an engine exporter and does not claim FiveM/engine compatibility — the README says so explicitly.
Contract witnessed
Engines (GTA/FiveM-style prop workflows included) ingest collision as a compound of convex pieces, each piece under a per-piece face limit (255 is the common cap). Per piece, derived from closed forms:
sec(π/n)so each n-gon cage ring circumscribes its render ring exactly.Falsification evidence (probes run, checks fail as claimed)
Visual notes
Hero render (Cycles, 48 samples): the prop inside its four faceted translucent hull pieces — a containment failure would read as painted metal poking through the shell. Contact sheet (candidate vs pinned calibration set
armature-bend/damped-track-aim/bmesh-gear): collision-hull-proxy-contact-sheet.webpPer-criterion verdicts: stage darkness matches (same floor/wall/world recipe); wedge warmth present (warm pool right of subject); subject fill ~75% of frame height; saturation in-family (enamel red/yellow vs calibration teal/gold); thumbnail legibility instant (hydrant + shell read at 320px). Mean luminance 136.3/255 vs calibration 139.4 (armature-bend), 100.1 (damped-track-aim), 143.4 (bmesh-gear) — inside the band, not the odd one out. No calibration-set change.
Test plan
.scratch/blender-5.1.2-windows-x64/blender.exe(reports Blender 5.1.2, build 2026-05-19) — check-only run: exit 0, all four pieces pass; all three falsification probes confirmed; EEVEE draft renders + final Cycles hero rendered locally..scratch/blender-4.5.11-windows-x64/blender.exe(reports Blender 4.5.11 LTS, build 2026-06-23) — check-only run: exit 0, output byte-identical to 5.1.2 (same counts, volumes, excursions).blender-smokeruns the check-only step under both matrix series (4.5 + 5.1) on this PR.Live-run vs inspection
eevee_engine_id()branch, exercised on 5.1 only; Cycles is the shipped hero engine).Integration
Example dir + README + preview, hero webp, committed contact sheet,
gallery.jsonentry, plugin manifest (alphabetical),blender-smoke.ymlstep (both matrix series), top-level README counts 30→31 + Game asset pipeline row (5→6), ROADMAP pool drained/restocked (this subject shipped; custom-normals-shade, prop-origin-transform, mesh-hygiene-audit added), gallery regenerated viascripts/build_gallery.py.