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]
#jira UE-91276
#rb none
#rnx
#ROBOMERGE-SOURCE: CL 12480856 in //UE4/Release-4.25/... via CL 12480860 via CL 12480865
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v673-12478461)
[CL 12487324 by jimmy andrews in Main branch]
#rb none
#rnx
#jira UE-90205
#ROBOMERGE-SOURCE: CL 11968217 in //UE4/Release-4.25/... via CL 11968232
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v656-11643781)
[CL 11968271 by ryan schmidt in Main branch]
#rb none
#rnx
#jira none
#ROBOMERGE-SOURCE: CL 11887940 in //UE4/Release-4.25/... via CL 11888007
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v656-11643781)
[CL 11888081 by ryan schmidt in Main branch]
#jira UE-83393
#rb ryan.schmidt
#rnx
#ROBOMERGE-SOURCE: CL 10088110 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v574-10069753)
[CL 10088113 by jimmy andrews in Main branch]
ModelingTools: handle scaling (uniform and non-uniform) in Sculpt tool. This is done by transforming mesh to world space for sculpting, and transforming back on Bake. Not an ideal solution, but usable numeric range in the World is bounded by float precision and we are working in doubles.
Added functions to TTransform3 to clamp scale to valid range and transform Normals.
Added MeshTransforms, has functions to transform and inverse-transform a mesh.
Added OctreeDynamicMeshComponent::ApplyTransform() to apply these functions to internal mesh.
#jira UE-80548
#rb jimmy.andrews
#rnx
#ROBOMERGE-SOURCE: CL 9692427 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v538-9681622)
[CL 9692436 by ryan schmidt in Main branch]
Added functions to TTransform3 to clamp scale to valid range and transform Normals.
Added MeshTransforms, has functions to transform and inverse-transform a mesh.
Added OctreeDynamicMeshComponent::ApplyTransform() to apply these functions to internal mesh.
#jira UE-80548
#rb jimmy.andrews
#rnx
[CL 9552130 by Ryan Schmidt in Dev-Editor branch]
Provided a path for building MeshDescriptions for static meshes at runtime, and supporting API.
Clarified use of attributes for static meshes; now some attributes may be considered optional.
Added FStaticMeshAttributes, used for fetching and registering all the attributes required by a static mesh.
Added Blueprint interface for building meshes.
Deprecated a number of existing APIs:
- FMeshDescription methods which referred explicitly to static mesh specific attributes
- StaticMesh attribute registration has been moved to FStaticMeshAttributes
#rb none
[CL 9123037 by Richard TalbotWatkin in Dev-Editor branch]