Add insights profiling tags to RemeshMeshOp and FRemesher. Small optimizations to FRemesher::ProcessEdge(), which has surprising overhead for no-ops (ie edge is not modified).
Add FUniqueIndexSet, alternative to a TSet for constructing list of unique indices (eg when finding set of one-ring tris of a list of vertices). Generally more efficient, particularly for large sets.
Improve FSubRegionRemesher. Make VertexROI private, provide accessors and update usage sites. Optimize InitializeFromVertexROI(), which is an expensive part of dynamic mesh sculpting. Make FullSmoothPass_Buffer() compute in parallel.
ModelingTools:
Major refactor of DynamicMeshSculptTool to improve performance (2-4x improvement on large brush sizes on 1m triangle mesh). A single FSubRegionRemesher is now created and maintained for entire brush stroke, rather than recreating every stamp. This avoids the high cost of initialzing full-mesh constraint set, and allows re-use of various allocated memory buffers. Reorganize major sub-steps computed in a single brush-stamp tick to allow Async computation where possible. Replace some ROI TSets with FUniqueIndexSet. Instrument for Insights, remove old cycle counting.
#rb none
#rnx
#jira none
[CL 15215321 by Ryan Schmidt in ue5-main branch]
- Rename "offset" to the more accurate "thicken shells"
- More consistent clamp min thickening based on voxel resolution
- Only apply thickening to meshes that are actually shells (i.e. have open boundaries)
- Improve related comments and variable names
#rb david.hill
[CL 15118588 by Jimmy Andrews in ue5-main branch]
fix crash in voxel blend and voxel morphology tools when offset is too small and deletes input mesh
#rb tyson.brochu
#ushell-cherrypick of 15057034 by Jimmy.Andrews
[CL 15104306 by Jimmy Andrews in ue5-main branch]
ModelingTools: Expose Simplify To Minimal Planar simplification mode in Simplify Tool. Add edge filter to this simplification mode in TMeshSimplification. Add support for returning all edges along intersection curves in FMeshBoolean and FMeshSelfUnion. Add option BooleanMeshesOp and SelfUnionMeshesOp to apply minimal-planar simplification along these cut/intersection edges. Expose as toggles in CSGMeshesTool and SelfUnionMeshesTool
#rb jimmy.andrews
#rnx
#jira none
[CL 14890297 by Ryan Schmidt in ue5-main branch]
+ a couple minor helpful additions to DynamicMeshEditor: add a cleanup function for removing unreferenced vertices, and add a parameter for StitchSparselyCorrespondedVertexLoops to optionally reverse its triangle orientations
#rb ryan.schmidt tyson.brochu
#rnx
[CL 14626245 by Jimmy Andrews in ue5-main branch]
Also made a small change to LaplacianOperators.cpp:ConstructScaledCotangentLaplacian(), which had checkSlow() that was failing on zero-elements Area matrix at boundary vertices. Code in this function does not appear to correctly handle boundary vertices (however things work out in the end because matrices are squared later?)
#rb none
#rnx
#ROBOMERGE-SOURCE: CL 13145964 via CL 13145965 via CL 13145966
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v688-13145358)
[CL 13145967 by ryan schmidt in Main branch]