- More aggressively prune the cache of computed merge shapes after it reaches a threshold size
- By default compute a proximity graph based on actual proximity, not the full n^2 possible connections
- After finding the best of a number of possilbe merges, optionally only look for local improvements to the current best rather than doing a full search for the absolute best connection.
#rb david.hill, shaun.kime
[CL 29158488 by jimmy andrews in ue5-main branch]
We now directly construct the initial voxel mesh to be the tolerance distance from the input mesh (while allowing it to follow the convex hull), and also ensure clamp the grid cell size to not be larger than half the width of the region bounding box's min dimension.
[CL 28455930 by jimmy andrews in ue5-main branch]
Add a 'source ID' concept to the convex part decomposition, to enable tracking of which hulls were not merged to any other hulls when running the convex hull merging algorithm.
#rb rinat.abdrashitov
[CL 28106868 by jimmy andrews in ue5-main branch]
Note: These settings were all introduced post-5.3, so moving them should not require deprecation
#rb rinat.abdrashitov
[CL 27715888 by jimmy andrews in ue5-main branch]
1. A MaxHullVertices setting. If positive, the convex hull algorithm will greedily add vertices to best expand the hull, generating a simplified hull if the exact hull would exceed the specified budget.
2. SkipAtHullDistanceAbsolute/SkipAtHullDistanceAsFraction settings. If positive, the convex hull algorithm will ignore points that are closer than the threshold value, resulting in a simpler hull.
Also stop relying on the Orient3 exact predicate to find the farthest hull points (regardless of whether PointsBudget is specified) both so that the PointsBudget and SkipAtHullDistance settings can accurately compare distances from different triangles and also to fix an issue where the Orient3 magnitude was discarded when requesting a single-precision Orient3 value.
Update convex hull unit test to also test these new settings.
Also adds a small optimization the reduces the number of duplicate points considered.
#rb rinat.abdrashitov
#jira none
[CL 27604026 by Jimmy Andrews in ue5-main branch]
[FYI] Jimmy.Andrews
Original CL Desc
-----------------------------------------------------------------
Add a new hull merge node for reducing the hulls used on convex decompositions
+ minor cleanup/fixes of hull merging algorithms
[CL 25960651 by jimmy andrews in ue5-main branch]
+ add a 'max hulls' option to convex decomposition, which functions like 'target num hulls' but can still cap the number of hulls when an error tolerance is specified (target num hulls is ignored when error tolerance is set)
#rb rinat.abdrashitov
#preflight 646d1033f85111e06c3a8fb7
[CL 25593250 by jimmy andrews in ue5-main branch]
#fyi Jimmy.Andrews
Original CL Desc
-----------------------------------------------------------------
set exact predicate float control for clang as well as msvc
#preflight 64643a472d446eac96856f8c
#rb rinat.abdrashitov
#jira none
[CL 25502827 by marc audy in ue5-main branch]