Commit Graph

221 Commits

Author SHA1 Message Date
jimmy andrews
bca502e8cd Fix convex decomposition's min sample spacing test to run after finding the final sample location, rather than running on the initial estimate location, so it will function as intended when the samples are placed far from their initial estimate locations.
#rb rinat.abdrashitov

[CL 30053523 by jimmy andrews in ue5-main branch]
2023-12-01 16:17:39 -05:00
jimmy andrews
709a94dbbd Add a method to remove unused vertices from a dynamic mesh, and expose it to geometry script
#rb tyson.brochu

[CL 30048365 by jimmy andrews in ue5-main branch]
2023-12-01 14:14:28 -05:00
marc audy
763a611985 Fix C4072 warnings
#rnx

[CL 29852844 by marc audy in ue5-main branch]
2023-11-20 17:26:53 -05:00
jimmy andrews
f55e6088b8 Add support for negative space protection in the 'splitting' part of the convex decomposition algorithm + associated initialization / support functions
#rb matija.kecman

[CL 29498286 by jimmy andrews in ue5-main branch]
2023-11-06 15:40:07 -05:00
jimmy andrews
78d8ab4884 deprecate convex decomposition's negative space compute's assumption of default-flipped triangle orientations by making the triangle orientation an explicit function parameter (rather than a settings struct member) and deprecating the old function w/out this parameter.
#rb matija.kecman

[CL 29321127 by jimmy andrews in ue5-main branch]
2023-11-01 12:20:40 -04:00
jimmy andrews
609a443699 Fix performance and memory issues when merging a large number of collision shapes:
- 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]
2023-10-26 20:24:56 -04:00
jimmy andrews
dcdd199f26 expose out convex decomposition negative space's voxel search 'min voxels per dimension' parameter to the setting structs, rather than hardcoding it as 128
#rb tyson.brochu

[CL 28877619 by jimmy andrews in ue5-main branch]
2023-10-18 11:04:33 -04:00
jimmy andrews
141c7eea94 make MergeCoincidentMeshEdges operation not ensure on inputs with near-zero bounding box size
#rb tyson.brochu

[CL 28857624 by jimmy andrews in ue5-main branch]
2023-10-17 17:54:27 -04:00
jimmy andrews
f0d473d3d5 expose min part thickness out to geometry script collision functions + make min part thickness apply with compact shapes (just skipping the inapplicable cutting step)
#rb shaun.kime

[CL 28829793 by jimmy andrews in ue5-main branch]
2023-10-16 23:03:12 -04:00
jimmy andrews
f3260123e2 add outer-only negative space sampling via continuation marching cubes
#rb tyson.brochu, rinat.abdrashitov

[CL 28771065 by jimmy andrews in ue5-main branch]
2023-10-13 16:45:04 -04:00
jimmy andrews
b3a1a9c3c2 support custom early-out overlap queries for sparse dynamic octree, and early-out Enumerate functions on SmallListSet and SparseListSet to support this
#rb david.hill

[CL 28687632 by jimmy andrews in ue5-main branch]
2023-10-11 18:26:55 -04:00
jimmy andrews
64873765ab fix crash in convex hull simplification due to not tracking polygon group IDs correctly
#rb rinat.abdrashitov

[CL 28552567 by jimmy andrews in ue5-main branch]
2023-10-06 15:11:54 -04:00
jimmy andrews
793ef9a727 Add angle-tolerance method of convex hull simplification to the geometry script convex hull simplify options
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]
2023-10-04 14:29:39 -04:00
jimmy andrews
4a3292849c Fix issue in negative space voxel mesh generation where eroding the (convex hull - original mesh) by the distance tolerance could delete valid negative space when the convex hull was thinner than the distance tolerance.
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]
2023-10-04 10:41:47 -04:00
jimmy andrews
edc21b808e Add a normal-based clustering algorithm which groups connected triangle groups based on the current average normal of the group.
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]
2023-10-03 17:20:18 -04:00
jimmy andrews
ced12de0f4 Add negative space protection to the geometry script collision merging algorithm
#rb david.hill

[CL 28234875 by jimmy andrews in ue5-main branch]
2023-09-26 12:59:58 -04:00
jimmy andrews
2d32fa2e5f Add a MergeSimpleCollisionShapes function to Geometry Script, which can reduce the number of simple collision shapes by merging them. Currently works via convex hull merging, so merged shapes will always be convex hulls, but shapes that are not merged will be left with their original type.
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]
2023-09-21 17:12:08 -04:00
jimmy andrews
f12520cfcf Add a new k-DOP fitting algorithm to GeometryCore and swap it in to GeomFitUtils so it will be used by the Static Mesh Editor.
#rb rinat.abdrashitov
#rb richard.talbotwatkin
#jira UE-194152

[CL 28048380 by jimmy andrews in ue5-main branch]
2023-09-20 14:46:30 -04:00
jimmy andrews
ce33cacf43 Move TConvexHull3 simplification-related settings to a separate struct, to make it easier to manage these settings (inside the convex hull code and also for other classes that call into it, like convex decomposition)
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]
2023-09-08 12:43:50 -04:00
Jimmy Andrews
7065fe745d Add support for direct construction of a simplified convex hull in GeometryCore's ConvexHull3 via:
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]
2023-09-05 13:49:30 -04:00
Jimmy Andrews
b2b72084ba remove unused local variable in Delaunay2.cpp
#jira none
#rb trivial

[CL 27594790 by Jimmy Andrews in ue5-main branch]
2023-09-05 09:44:22 -04:00
matija kecman
84bdab0304 Support Geometry Selection in the Tangents tool and fix some bugs
#jira UE-181650
#rb jimmy.andrews

[CL 27584315 by matija kecman in ue5-main branch]
2023-09-04 07:29:03 -04:00
george rolfe
06330436e4 [Geometry] Added profiler traces to mesh generators
#rb rinat.abdrashitov

[CL 27125582 by george rolfe in ue5-main branch]
2023-08-15 19:00:48 -04:00
semion piskarev
e5ed38cb9e DynamicMesh: Fix overlay elements not being freed and prevent changing some overlay values arbitrarily when the collapsed triangles were unset.
#rb
#jira UE-192831

[CL 27093233 by semion piskarev in ue5-main branch]
2023-08-14 19:43:18 -04:00
ryan schmidt
65908bc2d4 DynamicMesh: trivial conversion of Async/TFuture usage to new UE::Tasks
#rb tyson.brochu, jimmy.andrews
#rnx

[CL 27093045 by ryan schmidt in ue5-main branch]
2023-08-14 19:35:15 -04:00