Commit Graph

134 Commits

Author SHA1 Message Date
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
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
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
ryan schmidt
b1793b0c57 GeometryScript: fix issue with CompactMaterialIDs where if material ID set is modified but still compact, compacted material list was incorrect
ModelingComponents: add some more return values to ::CompactAttributeValues() to help to identify above case
#rnx
#jira UE-138808
#preflight 61e083cf797757aace87333e

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18613584 in //UE5/Release-5.0/... via CL 18613615 via CL 18613626
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18613631 by ryan schmidt in ue5-main branch]
2022-01-13 21:33:38 -05:00
michael balzer
905399abd3 GeometryCore: Fix crash in TMeshWindingNumberGrid for zero cell size
#preflight 61de32b86a076ddb53d362b4

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 18588632 in //UE5/Release-5.0/... via CL 18588644 via CL 18588662
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Test -> Main) (v899-18417669)

[CL 18588680 by michael balzer in ue5-main branch]
2022-01-12 15:20:20 -05:00
tyson brochu
967261a396 Path extrude tool: add support for open curves in PolygonEdgeMeshGenerator
#jira UE-138665
#rnx
#rb rinat.abdrashitov semion.piskarev
#preflight 61dc756a676009ad46407407

#ROBOMERGE-AUTHOR: tyson.brochu
#ROBOMERGE-SOURCE: CL 18562400 in //UE5/Release-5.0/... via CL 18562412
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18562432 by tyson brochu in ue5-release-engine-test branch]
2022-01-10 13:21:53 -05:00
matija kecman
88813c4ec3 MeshModelingToolset: Some minor comment/code cleanup
#rnx
#rb rinat.abdrashitov
#jira none
#preflight 61d8770e81634832b01dafad

#ROBOMERGE-AUTHOR: matija.kecman
#ROBOMERGE-SOURCE: CL 18558515 in //UE5/Release-5.0/... via CL 18558517
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18558526 by matija kecman in ue5-release-engine-test branch]
2022-01-10 07:51:15 -05:00
lonnie li
dcbe99a51b ModelingTools: Fix BakeVertex alpha channel preview.
#rb michael.balzer
#rnx
#jira none
#preflight 61d5c21a5d522c9b4090cdb9

#ROBOMERGE-AUTHOR: lonnie.li
#ROBOMERGE-SOURCE: CL 18523161 in //UE5/Release-5.0/... via CL 18523181
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18523207 by lonnie li in ue5-release-engine-test branch]
2022-01-05 14:40:23 -05:00
lonnie li
8e197859df ModelingTools: Fix texture filtering into neighboring charts for tightly packed UV shells.
#rb jimmy.andrews michael.balzer
#rnx
#jira none
#preflight 61bbb2868a62de8385c38473

#ROBOMERGE-AUTHOR: lonnie.li
#ROBOMERGE-SOURCE: CL 18480102 in //UE5/Release-5.0/... via CL 18481553
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18481825 by lonnie li in ue5-release-engine-test branch]
2021-12-16 19:57:29 -05:00