Commit Graph

65 Commits

Author SHA1 Message Date
jimmy andrews
ddcc86e070 fix bug in convex decomposition proximity graph updates on split
#rb David.Hill

[CL 31032909 by jimmy andrews in ue5-main branch]
2024-01-30 20:00:30 -05:00
steve robb
f029468598 Fixed up a lot of bool-taking container resize functions to take EAllowShrinking instead.
[CL 30729174 by steve robb in ue5-main branch]
2024-01-19 16:41:35 -05:00
jimmy andrews
1fb821235a make negative space sampling default to 'deterministic' mode, and make that mode sort the vertices after marching cubes has run rather than disabling parallelism during marching cubes.
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]
2023-12-06 17:30:20 -05:00
jimmy andrews
d0ca302cab in convex decomposition helper function, fix mismatch between parameters listed in comment and actual parameters in method
#rb matija.kecman

[CL 29521381 by jimmy andrews in ue5-main branch]
2023-11-07 10:54:19 -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
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
2b6859997b Add geometry script collision functions for converting sphere coverings to/from sphere arrays, to support manually creating/adjusting negative space
#rb david.hill

[CL 28680876 by jimmy andrews in ue5-main branch]
2023-10-11 16:27:36 -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
b8887e57ed Add a new polygon-based simplification method to ConvexHull3, and a tolerance for the initial hull build, to support use cases where we do not need an exact hull and can prioritize using fewer plane + avoiding near-degenerate planes in the output. This simplification is especially effective for cases where a large number of near-coplanar faces would exist in the exact-hull output.
#rb rinat.abdrashitov

[CL 26683043 by jimmy andrews in ue5-main branch]
2023-07-28 15:02:49 -04:00
jimmy andrews
874bb70ad5 Add option to drive adding more negative space samples when the current samples don't cover the space identified by Voxel Search (and are farther apart than the target Sample Spacing), to make the negative space coverage algorithm better able to protect space in challenging cases where a smaller fixed number of samples would fail.
#rb rinat.abdrashitov

[CL 26314665 by jimmy andrews in ue5-main branch]
2023-06-29 11:28:58 -04:00
jimmy andrews
ee45f975f2 add a 'per bone' negative space compute option to the merge hulls dataflow node, which can more reasonably target negative space for small leaf bones
#rb rinat.abdrashitov

[CL 26251571 by jimmy andrews in ue5-main branch]
2023-06-26 22:35:03 -04:00
jimmy andrews
f70dd3a744 Add a convex decomposition sphere covering mode that uses vox-solidify/difference/offset operations to better place the negative space sphere sampling
[CL 26154533 by jimmy andrews in ue5-main branch]
2023-06-21 13:34:37 -04:00
henrik karlsson
5db685f97d [Engine]
* Moved dllexport from type to methods/staticvar in all Engine runtime code. This improves compile times, memory and performance in dll builds

[CL 26082269 by henrik karlsson in ue5-main branch]
2023-06-17 18:13:06 -04:00
henrik karlsson
b8482b44dd [Engine]
* Changed type dllexport to method/staticvar dll export. Various changes for code that upgrade script get wrong

[CL 26082043 by henrik karlsson in ue5-main branch]
2023-06-17 16:57:38 -04:00
jimmy andrews
7ca84cf8c5 Add a new hull merge node for reducing the hulls used on convex decompositions
+ minor cleanup/fixes of hull merging algorithms
(v2 with compile/link fixes)

[CL 25964124 by jimmy andrews in ue5-main branch]
2023-06-13 17:18:13 -04:00
jimmy andrews
98cc9bc6be [Backout] - CL25959112
[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]
2023-06-13 15:37:18 -04:00
jimmy andrews
59daad6f82 Add a new hull merge node for reducing the hulls used on convex decompositions
+ minor cleanup/fixes of hull merging algorithms

[CL 25959212 by jimmy andrews in ue5-main branch]
2023-06-13 14:52:04 -04:00
jimmy andrews
a88d570315 add convex decomposition options to leaf node convex hull dataflow node
+ 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]
2023-05-23 18:33:43 -04:00