This CL adds improved serialization for FDynamicMesh3 and its data structures:
- FDynamicMesh3, TDynamicVector, FRefCountVector, FSmallListSet, TDynamicMeshOverlay, ...
- Versioning using the UE5Main stream version
- Discarding redundant data
- Oodle compression
- Serialization of vertex skin weights
- Additional unit tests and benchmark
#jira UETOOL-3821
#preflight 6145b802c2c19000017e2f6f, 6145b81ea7246e00017b1a43
[CL 17563009 by michael balzer in ue5-main branch]
GeometryCore: add RevolveGenerator, generates surface-of-revolution meshes for open and closed profiles, the latter w/ spirals. Port of more general code in CurveSweepOp/RevolveProperties to expose at lower levels (needs further code cleanup)
#rb none
#rnx
#jira none
#preflight 6144ca01c2c19000014c9463
[CL 17555809 by Ryan Schmidt in ue5-main branch]
This CL fixes an issue where we accidentally allocate three times the amount of necessary triangles during `CompactInPlace()`. I also added a test during `CheckValidity()` to make sure that if we have dense ref counts the size of the vertex/triangle vectors is identical to the number of ref counts.
#rb jimmy.andrews
#preflight 61401b977dae460001e27ebe, 61401bbc878eef000160df3d
[CL 17500874 by michael balzer in ue5-main branch]
- Added new FindNearestHitTriangle overload with bary coords.
- Refactored BakeMeshAttributeMapsTool into common base class with new MultiMesh (N-to-1) variant.
- Extended MeshDescriptionAdapter to support UVs.
- Added new queries on IMeshSpatialWrapper for mesh attributes.
#rb ryan.schmidt
#rnx
#jira UETOOL-3395
#preflight 613fb4c3a70fa0000131ff77
[CL 17497155 by lonnie li in ue5-main branch]
- handle undefined normal attributes in Simplifier ComputeFaceQuadric()
- Add separate SetGridCellSize() / SetMeshCellSize() functions to TImplicitMorphology
- define explicit enum values in RemoveOccludedTriangles
- Add support for linear scaling along path in FGeneralizedCylinderGenerator
#rb none
#rnx
#jira none
#preflight 613e1b0705632d0001ee8e2f
[CL 17488607 by Ryan Schmidt in ue5-main branch]
MeshGeodesicSurfaceTracer.{h,cpp} - Add embedded path tracing.
GeodesicSurfaceTracerTests.cpp - unit tests for embedded path tracing
IntrinsicTriangulationMesh.{h, cpp} - Adds two Intrinsic Triangulation mesh types (the more sophisticaed requires embedded path tracing)
IntrinsicMeshTests.cpp - unit tests for Intrinsic mesh types.
MeshLaplacian.{h,cpp} - Adds new enum types for Intrinsic Delaunay Triangulation (IDT) Laplacians
LaplacianOperators.{h,cpp} - Adds wrappers and allow enum switches to build IDT Laplacians if requested
LaplacianMatrixAssembly.h - Actually construction of IDT Laplacian.
Laplacian.cpp - Added trivial unit test for construction of IDT Laplacian
#rb jimmy.andrews
#preflight 6138bca42d09b9000158c95a
[CL 17458853 by David Hill in ue5-main branch]
- add support for a Settings Preset, as an explicit Asset type. UStaticMeshLODGenerationSettings contains a copy of the GenerateProcess Settings, UStaticMeshLODGenerationSettingsFactory allows this UObject to be used as an Asset in the Editor. UGenerateStaticMeshLODAssetTool now has a Preset slot, and action buttons to Read/Write to the currently-selected Settings Asset. New Settings Asset can be created via the Asset Picker popup in the Tool, currently creating via the New Asset menu is disabled via UStaticMeshLODGenerationSettingsFactory::GetMenuCategories()
- UGenerateStaticMeshLODProcess now automatically ignores input textures that have a constant value
- UGenerateStaticMeshLODProcess now skips writing output NormalMap and MultiTexture if they are not referenced by any output Materials
- UGenerateStaticMeshLODProcess now supports configuring whether a Texture or Material will be considered for Baking. If disabled, then the source Texture/Material is used (currently the Textures are still baked, they are just ignored while configuring/writing the outputs).
- UGenerateStaticMeshLODAssetTool now exposes lists of source Texture and Materials with option to skip baking (used to configure the above options)
- wrote header comments for UGenerateStaticMeshLODProcess
- overall cleanup in UGenerateStaticMeshLODAssetTool, ie category names, organization, etc
- add TImageBuilder::IsConstantValue(), checks if all pixels of image are the same value
#rb tyson.brochu
#rnx
#jira none
#preflight 6137ae4fd9c85a00013838c1
[CL 17449788 by Ryan Schmidt in ue5-main branch]
Also make all other direct buffer access methods that return const references, const methods
#preflight 6130f096e7eda30001750def
#rb Michael.Balzer
[CL 17407688 by David Hill in ue5-main branch]
Additionally adds a new parameter to the DynamicMesh MergeEdge method to ignore orientation discrepancies, useful in 2D mesh manipulation, and fixes a bug in the SetTriangle method where a variable was being left uninitialized.
#rb semion.piskarev
#rnx
#jira UETOOL-3112
[CL 17328444 by nathan mitchell in ue5-main branch]