Add a face normal clustering function that returns the vertices at corners of the clusters (vertices touching at least 3 different clusters), for use in the angle-tolerance convex hull simplification method
#rb rinat.abdrashitov
[CL 28467181 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]
Use this algorithm in the polygroups generator tool, so we get more useful groups on smooth surfaces (like a cylinder)
Also add a helper to the FSizedDisjointSet class to easily get the number of groups in the set and a mapping between compact group indices and sparse group IDs
#rb david.hill
[CL 28433389 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]
- ZeroValue and NoneValue in TIntVector2 (from TIntVector3)
- GridValues() in TDenseGrid3 (from TDenseGrid2)
#rb jimmy.andrews
[CL 27294375 by frederic doll in ue5-main branch]
Add initial PointSetFunctions to Geometry Script, including: K-Means Clustering, Flatten/Unflatten, Make Bounding Box, Transforms -> Points
Add a custom For Each-style macro to provide a more convenient interface for working with the clustering result
#rb semion.piskarev, ryan.schmidt, david.hill
[CL 26785428 by jimmy andrews in ue5-main branch]