- add FMeshNormals::SmoothVertexNormals(), does rounds of vertex normal smoothing. Moved from FDynamicMeshUVEditor::SetTriangleUVsFromExpMap().
- add tests to ensure edge iexists in DynamicMeshOverlay::IsSeamEdge() and similar functions, as parent GetEdge() will fail otherwise
- add FMeshRegionGraph, utility class for representing connections between mesh triangle patches, supports merging patches
- FDynamicMeshUVEditor::SetTriangleUVsFromBoxProjection can now optionally use FMeshRegionGraph to cluster small UV-islands into larger ones. Update call sites in UVProjectionOp
#rb none
#rnx
#jira none
#preflight 60f9f6730fc49a0001e32897
#ROBOMERGE-SOURCE: CL 16939804 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)
[CL 16939825 by ryan schmidt in ue5-release-engine-test branch]
- Add MakeBoundsFromIndices() utility functions to TAxisAlignedBox3 to simplify computing bounding-box of point sets
- FDynamicMesh3::GetVertexFrame() can now take an externally-provided normal, and so now can be used without computing VertexNormals attribute
- Add FModuloIteration to IteratorUtil for doing quasi-random-ish iterations over index ranges
- Add CollectVertexPositions() to MeshIndexUtil.h, for creating arrays/sets of vertex positions as a one-liner
- Add FMeshWeights::CotanWeightsBlendSafe() to support cotan-based smoothing of arbitrary properties
- Add TMinVolumeBox3::SolveSubsample() which will (quasi-randomly) subsample a set of the input points to reduce cost of box computation
#rb david.hill
#rnx
#jira none
[CL 16450731 by Ryan Schmidt in ue5-main branch]