a callback to report merges,
a callback to prevent merges, and
a bool to control whether the error tolerance allows merges below the target number of parts requested.
#rb rinat.abdrashitov
[CL 31487645 by jimmy andrews in ue5-main branch]
+ add function to set usually-better settings than the defaults (but don't change the defaults, to avoid changing the behavior of any existing usage)
#rb rinat.abdrashitov
[CL 31457317 by jimmy andrews in ue5-main branch]
+ support adding custom negative space, and parallelize negative space search
#rb rinat.abdrashitov
#changelist validated
#virtualized
[CL 31245012 by jimmy andrews in ue5-main branch]
also always run the point prioritization step, and don't early-stop it if we may take more samples than the minimum requested.
#rb rinat.abdrashitov
[CL 30169822 by jimmy andrews in ue5-main branch]
- 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]
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]