Commit Graph

432 Commits

Author SHA1 Message Date
ryan schmidt
d205e117bb GeometryProcessing: various utility functions to assist with rounded bevels implementation
- add 2D version of VectorTanHalfAngle to VectorUtil.h
- add FDynamicMeshUVEditor::SetToPerVertexUVs, initializes overlay to have a single UV for each vertex
- add FQuadGridPatch::InitializeFromQuadPatch(), initializes the quad grid from external rows of quads and associated vertices
- add FQuadGridPatch::GetVertexColumn(), returns the list of vertices in a specific grid column
- add FQuadGridPatch::FindColumnIndex(), finds the index of the grid column that contains a specific Vertex ID
#rb rinat.abdrashitov

[CL 30166232 by ryan schmidt in ue5-main branch]
2023-12-06 15:32:17 -05:00
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
jimmy andrews
b2f3167702 put the exact triangle intersection find-segments branch in an 'else' to prevent the compiler from complaining about unreachable code when it takes the other constexpr if branch
#rb rinat.abdrashitov

[CL 29966777 by jimmy andrews in ue5-main branch]
2023-11-28 14:36:08 -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
bf3ae9cbd2 better simple collision level set visualization: add optional marching-cubes-based level set triangulation to the simple-collision->mesh utility functions and use the new marching cubes triangulation in tools + optionally in geometry script's append simple collision function.
also do some cleanup / generalization of the utility functions and change geometry script's append simple collision function to use them.

#rb David.Hill

[CL 29763193 by jimmy andrews in ue5-main branch]
2023-11-15 18:04:18 -05:00
charles bloom
108b030948 Texture preventative fixes; clarify some mip locking code and fix 64 bit issues
#rb fabian.giesen
#rnx

[CL 29759416 by charles bloom in ue5-main branch]
2023-11-15 16:30:26 -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
don boogert
b9b8d95175 Landscape: Use PointHashGrid2 to weld coincident points
* Removed old ExportToRawMesh function and CVar `landscape.Nanite.MarchingSquaresVisibility`
* Make Landscape Nanite build less noisey in the logs
* GeometryCore - Added Reserve to TPointHashGrid2 (to match TPointHashGrid3)

#jira UE-194086
#rb jonathan.bard

[CL 29025960 by don boogert in ue5-main branch]
2023-10-23 21:04:53 -04:00
jimmy andrews
4990e4f977 fix geometrycore Polygon2::Simplify's handling of case when initial close-point-removal reduces polygon to two points
#rb rinat.abdrashitov

[CL 28879780 by jimmy andrews in ue5-main branch]
2023-10-18 12:05:48 -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
dfb07a973a Add geometry script 'approximate convex hulls with simpler collision shapes' function, to optionally replace convex hulls with spheres or boxes
#rb david.hill

[CL 28687462 by jimmy andrews in ue5-main branch]
2023-10-11 18:25:00 -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
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
6688c1703d add cbrt (cube root) function to mathutil
#rb matija.kecman

[CL 28386084 by jimmy andrews in ue5-main branch]
2023-10-02 14:06:11 -04:00