Commit Graph

160 Commits

Author SHA1 Message Date
Jimmy Andrews
ea5e78a8e0 fix exact predicate test failures -- use volatile for INEXACT to force rounding
#preflight 622fce37ce577e3ab2e0b680

[CL 19380794 by Jimmy Andrews in ue5-main branch]
2022-03-14 20:24:15 -04:00
jimmy andrews
6b870db4fe Fix convex hull crashes (due to zero points and due to exact predicate failure)
add geometry processing low level test coverage for both cases

#jira UE-145703
#preflight 622fa7be306f46da14592f0b
#rb tyson.brochu
#lockdown simon.tourangeau

#ROBOMERGE-OWNER: jimmy.andrews
#ROBOMERGE-AUTHOR: jimmy.andrews
#ROBOMERGE-SOURCE: CL 19378695 in //UE5/Release-5.0/... via CL 19380177
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884)

[CL 19380762 by jimmy andrews in ue5-main branch]
2022-03-14 20:15:28 -04:00
Jimmy Andrews
b885b54c1d new Delaunay triangulation code using robust predicates
Much faster and usable from non-plugin code

#rb rinat.abdrashitov
#rb tyson.brochu
#preflight 622a6e9632749f363c5a22ba

[CL 19341780 by Jimmy Andrews in ue5-main branch]
2022-03-10 16:41:30 -05:00
Jimmy Andrews
7c0aec7d1e Add a 'contain(other interval)' function to TInterval1
#rb semion.piskarev
#preflight 62291fd66360b4051cc5e9b1

[CL 19326407 by Jimmy Andrews in ue5-main branch]
2022-03-09 17:10:08 -05:00
Jimmy Andrews
46ea937c73 make convex hull code work directly with floats if the input is in floats, rather than converting everything to doubles
#rb tyson.brochu
#preflight 622905196e026fc824ab3a4e

[CL 19326164 by Jimmy Andrews in ue5-main branch]
2022-03-09 16:45:56 -05:00
Jimmy Andrews
a624095d22 Add a ZOrderCurve class to order points such that adjacent points in the ordering are likely to be close in space, to be used for incremental Delaunay construction (but can be useful in other algorithms too)
#rb rinat.abdrashitov
#preflight 6227b36d7934051162f05962

[CL 19309261 by Jimmy Andrews in ue5-main branch]
2022-03-08 15:08:31 -05:00
Jimmy Andrews
4b4a4c2d3c Exact Predicates improvements:
- Support InCircle
 - Support float as well as double
 - Add safer, templated versions that specify whether float or double is to be used (for TVector/TVector2)

#rb rinat.abdrashitov
#preflight 62277e1e7077eb04cf6db63d

[CL 19309153 by Jimmy Andrews in ue5-main branch]
2022-03-08 15:01:31 -05:00
ryan schmidt
7c983b8d45 GeometryCore: clean up issues that block non-LWC builds
#rb david.hill
#preflight 620ff48d53204823ae859ccb

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 19064974 via CL 19076437 via CL 19077315 via CL 19078956
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19122734 by ryan schmidt in ue5-main branch]
2022-02-24 15:01:41 -05:00
semion piskarev
75e604f6a8 MeshModelingTools: Added comments clarifying things related to FDynamicMesh3, particularly role of per-vertex attributes.
#rb Ryan.Schmidt, Jimmy.Andrews
#jira none
#preflight 62164be40f71e491ccfc2d3c

[CL 19091339 by semion piskarev in ue5-main branch]
2022-02-23 10:09:22 -05:00
ryan schmidt
d948840611 GeometryCore: improve thread utililization in parallel continuation Marching Cubes
#rb david.hill, jimmy.andrews
#jira UE-142582
#preflight 620bd75e615db7478d33eaf1
#rnx
#lockdown aurel.cordonnier

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 19058443 in //UE5/Release-5.0/... via CL 19074160
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19076422 by ryan schmidt in ue5-main branch]
2022-02-22 13:45:48 -05:00
steve robb
1cdce38e89 Fix for mismatched deprecation macros.
#rb julien.marchand
#jira UE-140368
#preflight 620bd18c475fb819ddc57c82
#lockdown julien.marchand

#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 18999801 in //UE5/Release-5.0/... via CL 19000202 via CL 19000472
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v917-18934589)

[CL 19001966 by steve robb in ue5-main branch]
2022-02-15 15:11:48 -05:00
steve robb
a8c1e02c4e Use a union-based representation for types which want to treat its members as both individual named fields and as an array, to avoid strict aliasing issues.
#jira UE-140368
#preflight 6201d6b1e9567e66732291b2
#rb jeff.newquist
#lockdown julien.marchand

#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 18995739 in //UE5/Release-5.0/... via CL 18996215 via CL 18996642
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v917-18934589)

[CL 19001153 by steve robb in ue5-main branch]
2022-02-15 14:42:20 -05:00
ryan schmidt
b4814d732d ApproximateActors: reduce memory footprint by using compressed or lower-resolution LOD0 meshes
- add FStaticMeshLODResourcesAdapter in MeshConversions module, wrapper that presents StaticMesh LODResources mesh (ie Section buffers) with an API compatible with GeometryCore mesh templates
- add TMeshWrapperAdapterd in GeometryCore, this is a shim for getting any template-API-compatible mesh into a FTriangleMeshAdapterd specifically (required to call some non-template mesh processing functions)

- add support for using StaticMesh LODResources meshes in FMeshSceneAdapter instead of source meshes, controlled by build options flag
- add FMeshSceneAdapter build options flags specifying whether UV/Normal queries are required (default true)
  - when not required, the loaded MeshDescriptions and created DynamicMeshes are packed into FColliderMesh which has a smaller memory footprint, allowing the larger meshes to be freed

- to support above, the SpatialWrappers in MeshSceneAdapter.cpp have been refactored extensively
  - added FCompressedMeshSpatialWrapper which Builds from a temporary FDynamicMesh3 into a FColliderMesh, supports all the same options as FDynamicMeshSpatialWrapper (so a drop-in replacement with less memory usage, but no UV/Normal queries)
  - added FBaseMeshSpatialWrapper, base class for existing FDynamicMeshSpatialWrapper and new FCompressedMeshSpatialWrapper that has shared config settings (can more more here in the future)
  - added FStaticMeshLODResourcesMeshSurfaceAdapter, similar toFMeshDescriptionTriangleMeshSurfaceAdapter, a mesh adapter that filters out any geo that doesn't have a Surface-domain material
  - refactored TStaticMeshSpatialWrapper into TStaticMeshSpatialWrapperBase and subclasses FStaticMeshSourceDataSpatialWrapper and FStaticMeshRenderDataSpatialWrapper, for source mesh vs render mesh
  - added FCompressedStaticMeshSpatialWrapper, variant of FStaticMeshSourceDataSpatialWrapper that stores to a FColliderMesh and releases the source MeshDescription
  - SpatialWrapperFactory() now has logic to build from render mesh vs source mesh vs compressed source mesh
  - moved initial SpatialWrapper construction from AddActors() phase to Build() phase, because now it depends on build settings

- add EMeshDataSourceLODPolicy to IGeometryProcessing::FOptions, with LOD0 Source and LOD0 RenderMesh options
- ApproximateActorsImpl now provides/handles this policy setting, and configures FMeshSceneAdapter to not need UV/Normal queries (not required in this context)
- add bUseRenderLODMeshes option in FMeshApproximationSettings to expose render vs source mesh control at user level

#rb sebastien.lussier, rinat.abdrashitov
#jira UE-141256
#preflight 6206db44054c2e38c473be5d
#rnx

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18963126 in //UE5/Release-5.0/... via CL 18963829 via CL 18964587
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v917-18934589)

[CL 18964607 by ryan schmidt in ue5-main branch]
2022-02-11 18:11:49 -05:00
ryan schmidt
d70294ddfa GeometryCore: do not hold onto intermediate grid in two-pass computations in TImplicitMorphology. The first-pass grid is not used in the second pass, and having both grids allocated simultaneously results in significantly more peak memory allocated during large-grid computations (possibly resulting in OOMs)
#rb david.hill
#rnx
#jira UE-141256
#preflight 62015087384d6a94e8d1f1d4
#lockdown aurel.cordonnier

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18887855 in //UE5/Release-5.0/... via CL 18887872 via CL 18887998
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)

[CL 18888039 by ryan schmidt in ue5-main branch]
2022-02-07 13:03:15 -05:00
michael balzer
826fff9aa7 GeometryCore: Fix compilation error in TDynamicVector
#jira UE-141559
#preflight 61fdb3c9e65336d14554a6d4, 61fdb595cc13ffbd10f484c1
#rb trivial
#lockdown aurel.cordonnier

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 18879758 in //UE5/Release-5.0/... via CL 18879764 via CL 18879799
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)

[CL 18884827 by michael balzer in ue5-main branch]
2022-02-07 09:07:19 -05:00
michael balzer
e8c5a8d3b0 GeometryCore: Fix legacy serialization of TDynamicVector<> for LWC data types using double and bulk serialization
#jira UE-141220
#preflight 61fc73c2af01d3caef2aecf8, 61fc73ee5e1fd46228526912
#lockdown aurel.cordonnier
#rb lonnie.li

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 18866726 in //UE5/Release-5.0/... via CL 18866736 via CL 18869232
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)

[CL 18869339 by michael balzer in ue5-main branch]
2022-02-04 14:10:42 -05:00
tyson brochu
746ba571d7 Change inequality direction in a check. VertexBoneWeights should have size equal to the number of vertices in the parent mesh *after* compacting, so this will be less than or equal to the size of the compact map, not geq. Includes a unit test for verification.
#jira none
#rnx
#rb rinat.abdrashitov
#preflight 61fd7583b145346c9e8adc2a

[CL 18869206 by tyson brochu in ue5-main branch]
2022-02-04 14:07:49 -05:00
ryan schmidt
1c3ffffff7 Add missing include
#rb aurel.cordonnier
#rnx
#jira UE-141140
#preflight 61fc26b00a50c2606f244b15
#lockdown aurel.cordonnier

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18849508 in //UE5/Release-5.0/... via CL 18849607 via CL 18849970
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)

[CL 18850017 by ryan schmidt in ue5-main branch]
2022-02-03 15:47:19 -05:00
ryan schmidt
172058c824 GeometryCore:
- add FColliderMeshProjectionTarget to allow a FColliderMesh to be used as a projection target
- remove dead code from TDenseGrid3
- add TBlockedDenseGrid3, variant of TDenseGrid3 that lazy-allocates sub-blocks of a dense grid, to reduce memory usage in sparse/narrow-band situations on large uniform grids
- replace usage of TDenseGrid3 in FMarchingCubes with TBlockedDenseGrid3, to reduce memory footprint on large meshing problems
#rb David.Hill, Jimmy.Andrews
#jira UE-141151
#preflight 61fc0007176256ec4f744c4
#lockdown Aurel.Cordonnier

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18846016 in //UE5/Release-5.0/... via CL 18846053 via CL 18846421
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)

[CL 18846468 by ryan schmidt in ue5-main branch]
2022-02-03 13:52:20 -05:00
jimmy andrews
bd5cc87c87 fix crash in sparse octree on growing FDynamicFlagArray by exactly the GrowChunkSize
also fix crash in sparse octree FDynamicFlagArray if Set(Idx, false) where Idx > current Max

#jira UE-141047
#rnx
#preflight 61faf2a0033a864b77dc49a4
#rb rinat.abdrashitov

#ROBOMERGE-AUTHOR: jimmy.andrews
#ROBOMERGE-SOURCE: CL 18842872 in //UE5/Release-5.0/... via CL 18842881 via CL 18843057
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)

[CL 18843069 by jimmy andrews in ue5-main branch]
2022-02-03 10:14:59 -05:00
ryan schmidt
6ad26b69f0 rename UE::Geometry::TTransform3 to TTransformSRT3, update references
#rb none
#rnx
#jira UE-139757
#preflight 61f572d9e52a8a4a910990f1

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18784197 in //UE5/Release-5.0/... via CL 18784203 via CL 18784222
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18784226 by ryan schmidt in ue5-main branch]
2022-01-29 14:37:53 -05:00
jimmy andrews
8cefe39c38 fix crash in trianglemesh.cpp pointordering if there are no points to sort at the end
#rb cedric.caillaud
#rb rinat.abdrashitov
#rnx
#preflight 61f302811f12674afbc14975

#ROBOMERGE-AUTHOR: jimmy.andrews
#ROBOMERGE-SOURCE: CL 18768348 in //UE5/Release-5.0/... via CL 18768349 via CL 18768402
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18768407 by jimmy andrews in ue5-main branch]
2022-01-28 00:27:35 -05:00
michael balzer
5d1b51983b GeometryCore: Fix incorrect fix for mesh validation
#preflight none

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 18737919 in //UE5/Release-5.0/... via CL 18738334 via CL 18739359
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18739956 by michael balzer in ue5-main branch]
2022-01-26 13:54:16 -05:00
michael balzer
258c2c8253 GeometryCore: Disable CheckValidity before/after visualization
#preflight 61f01ee9fd5285142b1a30f2

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 18723574 in //UE5/Release-5.0/... via CL 18723597 via CL 18723720
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18723756 by michael balzer in ue5-main branch]
2022-01-25 11:43:58 -05:00
semion piskarev
80f86dd481 MeshModelingTools: Fix normals not being transferred to overlays in Remesh and Simplify when discarding attributes at start. Fix CompactCopy to properly copy vertex normals/uvs.
#rb Ryan.Schmidt
#rnx
#jira UE-139241
#preflight 61e1eb164b4bd12cbee7bb0a

#ROBOMERGE-AUTHOR: semion.piskarev
#ROBOMERGE-SOURCE: CL 18629628 in //UE5/Release-5.0/... via CL 18629633 via CL 18629637
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18629639 by semion piskarev in ue5-main branch]
2022-01-16 10:42:36 -05:00