Commit Graph

10 Commits

Author SHA1 Message Date
ryan schmidt
1048b93f9c GeometryProcessing updates
- 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]
2021-07-23 14:32:16 -04:00
jimmy andrews
d7f1d27402 fix issues w/ overlay that can leave ref counts and indices in invalid state
#rb ryan.schmidt
#rnx

#ROBOMERGE-SOURCE: CL 16864593 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)

[CL 16864605 by jimmy andrews in ue5-release-engine-test branch]
2021-07-15 13:40:34 -04:00
ryan schmidt
00689f50e0 ModelingTools: Fix various issues related to Tangents. FDynamicMeshEditor was using hardcoded 0 index instead of loop-variable NormalLayerIndex in several places. FDynamicMeshTangents did not handle invalid overlay triangles. UEditorModelingObjectsCreationAPI::CreateDynamicMeshActor() was not enabling Tangents on new DynamicMeshComponents. UDynamicMeshComponentToolTarget was not transferring tangents between FDynamicMesh3 and FMeshDescription when converting.
#rb none
#rnx
#jira none
preflight 60d25e9678c3b000012438cc

#ROBOMERGE-SOURCE: CL 16751529 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)

[CL 16751548 by ryan schmidt in ue5-release-engine-test branch]
2021-06-22 19:35:30 -04:00
ryan schmidt
c8aea03869 GeometryProcessing: Move FDynamicMesh3 serialization to a separate file and add local versioning so we can iterate without having to bump stream version
#rb lonnie.li
#rnx
#jira none
#preflight 60d0f16671002f000192e9c9

#ROBOMERGE-SOURCE: CL 16734659 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)

[CL 16734669 by ryan schmidt in ue5-release-engine-test branch]
2021-06-21 17:45:14 -04:00
michael balzer
8b90814403 GeometryProcessing: Reset existing UVs before Unwrap
#jira UE-116883
#rb ryan.schimdt
#rnx

#ROBOMERGE-SOURCE: CL 16710839 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)

[CL 16710868 by michael balzer in ue5-release-engine-test branch]
2021-06-17 16:27:45 -04:00
ryan schmidt
5c473b623b GeometryProcessing: add FDynamicMeshTangents helper class to simplify access to FDynamicMesh3 tangent attribute overlays. Add functions to FMeshTangents and TDynamicMeshVectorOverlay to simplify getting a single triangle-vertex tangent/bitangent. Fix paste-o in FDynamicMeshAttributeSet::SetNumNormalLayers()
#rb none
#rnx
#jira none
#preflight 60c3b0bf8d00b80001b85366

#ROBOMERGE-SOURCE: CL 16647280 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v833-16641396)

[CL 16647296 by ryan schmidt in ue5-release-engine-test branch]
2021-06-11 17:11:55 -04:00
semion piskarev
e1f8fe3b93 MeshModelingTools: Tweaked tool target requirements object storage default and added a convenience function to add requirements. Also added several comments in places.
#rb Lonnie.Li, Tyson.Brochu
#rnx
#jira none

#ROBOMERGE-SOURCE: CL 16606399 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v828-16531559)

[CL 16606408 by semion piskarev in ue5-release-engine-test branch]
2021-06-09 11:51:04 -04:00
Ryan Schmidt
8fd2394228 GeometryProcessing:
- 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]
2021-05-25 12:13:39 -04:00
Ryan Schmidt
fdb2bab149 GeometryProcessing: Move MeshConversion module from GeometryProcessing plugin to Runtime. Transfer necessary additional files from DynamicMesh to GeometryCore. Move functions from MeshIndexUtil and MeshAdapterUtil namespaces to UE::Geometry namespace.
#rb none
#rnx
#jira none
#preflight 60a7e75e7d6b060001c61f47

[CL 16428413 by Ryan Schmidt in ue5-main branch]
2021-05-22 01:32:46 -04:00
Ryan Schmidt
623e4f96fe GeometryCore: create new GeometryCore Module. Move GeometricObjects code from GeometryProcessing plugin to this new module, as well as core FDynamicMesh3 classes (attributes, aabbtree/octree, change tracking). Update module Build.cs files that reference GeometricObjects.
#rb none
#rnx
#jira none
#preflight 60a713700569f300014a064a

[CL 16415082 by Ryan Schmidt in ue5-main branch]
2021-05-21 01:04:38 -04:00