- Move ToolTarget implementations, DynamicMeshToVolume to ModelingComponentsEditorOnly module
- move VolumeToDynamicMesh, DynamicMeshProvider/Commiter interfaces to ModelingComponents module
- Add UCreateMeshObjectTypeProperties property set to expose mesh/volume options
- Add FCreateMeshObjectParams::TypeHintClass to allow AVolume type (or other UClass hints) to be passed to creation APIs
- Add UE::ToolTarget::ConfigureCreateMeshObjectParams() util function in ModelingToolTargetUtil, tries to determine output type in a FCreateMeshObjectParams based on input ToolTarget
- Add UEditorModelingObjectsCreationAPI::CreateVolume() implementation
- Add UEditorModelingObjectsCreationAPI::FilterMaterials() that strips out any internal materials and replaces with WorldGridMaterial. This occurs when (eg) subtracting a Volume from a StaticMesh, because the temporary volume mesh gets assigned internal materials, but the Tools don't know this. Use in EditorModelingObjectsCreationAPI when creating new objects. UStaticMeshComponentToolTarget also does this filtering in ::CommitMaterialSetUpdate().
- Add ::ComponentTypeSupportsCollision() function to ComponentCollisionUtil, use to avoid checks/ensures for Volume targets
- Add support for automatic mesh simplification in DynamicMeshToVolume. Add CVar to VolumeDynamicMeshToolTarget.h to control max triangle count (default 500). Apply auto-simplify when creating or updating an AVolume. This prevents the Editor from blocking for long periods on meshes that are too high-res for volumes (even 500 is quite high).
- DynamicMeshToVolume now emits polygroup-faces that contain holes (ie multiple boundary loops) as a set of triangles, rather than emitting separate overlapping faces for each boundary loop
#rb none
#rnx
#jira none
#preflight 60ba50632c42ea0001cb54c5
[CL 16561742 by Ryan Schmidt in ue5-main branch]
Most of the code moved to /Private/Solvers/Internal, except:
- MeshElementLinearization.h split into /GeometricObjects/Util/ElementLinearization.h (not mesh-specific) and /DynamicMesh/Solvers/MeshLinearization.h for vtx/tri subclasses
- ELaplacianWeightScheme and a few util functions moved to /DynamicMesh/Solvers/MeshLaplacian.h
- IConstrainedMeshOperator renamed to IConstrainedMeshSolver and moved to /DynamicMesh/Solvers/
- MeshSolverUtilities.h API functions moved to /DynamicMesh/Solvers/MeshSmoothing.h, ConstrainedMeshDeformer.h, ConstrainedMeshSmoother.h
- Laplacian matrix assembly refactored out of LaplacianOperators.cpp and moved to /DynamicMesh/Solvers/LaplacianMatrixAssembly. LaplacianOperator functions are now wrappers around those functions.
- most of FSOAPositions refactored into TVector3Arrays<T>, which it now subclasses. The arrays are now TArray<T> and Eigen::Map is used to pass them to/from Eigen code. Moved to FSparseMatrixD.h
#rb none
#rnx
#ROBOMERGE-SOURCE: CL 13045456 via CL 13045457 via CL 13045458
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v686-13045012)
[CL 13048356 by ryan schmidt in Main branch]