Commit Graph

32 Commits

Author SHA1 Message Date
ryan schmidt
cd0d01cd68 GeometryCore: handle case where a mesh overlay has serialized unreferenced elements, ie that have no parent vertex. Existing code will try to look up the remapping w/ a parent ID of -1, causing a crash.
#rb michael.balzer
#rnx
#jira none

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 17698542 in //UE5/Release-5.0/... via CL 17698543
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v875-17642767)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17698545 by ryan schmidt in ue5-release-engine-test branch]
2021-10-01 19:06:02 -04:00
jimmy andrews
84ecdee219 fix crash on trying to sculpt after clicking 'discard attributes' in dynamic mesh sculpt tool
#jira UE-118864
#rb ryan.schmidt
#rnx
#preflight 6156f3074751730001819312

#ROBOMERGE-AUTHOR: jimmy.andrews
#ROBOMERGE-SOURCE: CL 17690602 in //UE5/Release-5.0/... via CL 17690603
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v875-17642767)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17690605 by jimmy andrews in ue5-release-engine-test branch]
2021-10-01 08:21:22 -04:00
ryan schmidt
6437ecc4a1 GeometryCore: replace all usage of GeometryCore FVector3<T> with TVector<T>, remove FVector3<T> and GVector4<T>
#rb none
#rnx
#jira none
#preflight 614ce33574f7e70001ea822b

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 17617027 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)
#ROBOMERGE[STARSHIP]: UE5-Release-Engine-Staging Release-5.0

[CL 17617043 by ryan schmidt in ue5-release-engine-test branch]
2021-09-23 19:38:55 -04:00
michael balzer
03c8199135 GeometryCore: Fix Non-Unity build error in dynamic mesh serialization
#rb trivial
#rnx

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 17565335 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17565340 by michael balzer in ue5-release-engine-test branch]
2021-09-18 23:43:16 -04:00
michael balzer
9179d00f86 GeometryCore: Improved serialization for dynamic mesh data
This CL adds improved serialization for FDynamicMesh3 and its data structures:
- FDynamicMesh3, TDynamicVector, FRefCountVector, FSmallListSet, TDynamicMeshOverlay, ...
- Versioning using the UE5Main stream version
- Discarding redundant data
- Oodle compression
- Serialization of vertex skin weights
- Additional unit tests and benchmark

#jira UETOOL-3821
#preflight 6145b802c2c19000017e2f6f, 6145b81ea7246e00017b1a43

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 17563009 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17563024 by michael balzer in ue5-release-engine-test branch]
2021-09-18 06:30:57 -04:00
jimmy andrews
7226231677 Fixes to CompactInPlace: keep ElementTriangles 1:1 with ParentMesh triangles, don't try to copy when there's no mapping, but copy back InvalidID when the (mapped) element tri is unset
#rb semion.piskarev, michael.balzer
#rnx
#preflight 6143dee9b5a4fa00017b43bb

#ROBOMERGE-AUTHOR: jimmy.andrews
#ROBOMERGE-SOURCE: CL 17552321 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17552338 by jimmy andrews in ue5-release-engine-test branch]
2021-09-17 10:55:35 -04:00
michael balzer
de95b90b29 GeometryCore: Fix TDynamicMeshOverlay<>::CompactInPlace() not compacting ElementTriangles vector
#preflight 6141714f599fd80001483188, 6141713b3c7c6700017f4923
#rnx

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 17520863 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17520877 by michael balzer in ue5-release-engine-test branch]
2021-09-15 11:40:42 -04:00
ryan schmidt
fdf28f3d36 GeometryCore: make DynamicMesh::IsSameAs function const
#rb none
#rnx
#jira none
#preflight 6140d28630c00d0001dd6a6a

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 17507424 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17507437 by ryan schmidt in ue5-release-engine-test branch]
2021-09-14 14:20:07 -04:00
michael balzer
22b1e5b8e1 GeometryCore: Fix over-allocating triangles in FDynamicMesh3::CompactInPlace()
This CL fixes an issue where we accidentally allocate three times the amount of necessary triangles during `CompactInPlace()`. I also added a test during `CheckValidity()` to make sure that if we have dense ref counts the size of the vertex/triangle vectors is identical to the number of ref counts.

#rb jimmy.andrews
#preflight 61401b977dae460001e27ebe, 61401bbc878eef000160df3d

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 17500874 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17500882 by michael balzer in ue5-release-engine-test branch]
2021-09-14 01:21:36 -04:00
ryan schmidt
2261125642 GeometryProcessing: force UV/normal overlays to be initialized on creation inside a DynamicMeshAttributeSet.
#rb michael.balzer
#rnx
#jira none
#preflight 6138f6289c40ec00012a7289

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 17463301 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17463750 by ryan schmidt in ue5-release-engine-test branch]
2021-09-08 16:59:20 -04:00
ryan schmidt
f6c51e0c61 GeometryCore: minor DynamicMesh fixes. Change ensure to a checkSlow in DynamicMesh3::AppendTriangle. Add FDynamicMeshOverlay::GetTriangleIfValid(). Handle unset triangles in CountVertexElements().
#rb tyson.brochu
#rnx
#jira none
#preflight 612fa9a575bca200010b8148

#ROBOMERGE-SOURCE: CL 17393286 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17393312 by ryan schmidt in ue5-release-engine-test branch]
2021-09-01 18:01:47 -04:00
nathan mitchell
0fc29c3cfb UVEditor: Add support for sew action as part of the Select/Transform tool
Additionally adds a new parameter to the DynamicMesh MergeEdge method to ignore orientation discrepancies, useful in 2D mesh manipulation, and fixes a bug in the SetTriangle method where a variable was being left uninitialized.

#rb semion.piskarev
#rnx
#jira UETOOL-3112

#ROBOMERGE-SOURCE: CL 17328444 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17328460 by nathan mitchell in ue5-release-engine-test branch]
2021-08-26 19:53:44 -04:00
ryan schmidt
e3183cb1e7 GeometryProcessing: clean up mesh timestamps.
- remove FDynamicMesh3::Timestamp (unused), rename Shape/Topology Timestamps to Shape/TopologyChangeStamp, change to atomic<uint32>
- add FDynamicMesh3::bEnableShapeChangeStamp, default to false, to disable ShapeChange tracking. Add ::SetShapeChangeStampEnabled() and ::HasShapeChangeStampEnabled() to configure.
- replace FDynamicMesh3::UpdateTimestamps() with UpdateChangeStamps()
- add bTrackChange param to FDynamicMesh3::SetVertex(), optionally updates ShapeChangeStamp (if enabled). Default true. Remove SetVertex_NoTimeStampUpdate(), update call sites.
- add FDynamicMesh3::GetChangeStamp(), returns combination of Shape and Topology stamps as uint64
- rename TTriangleMeshAdapter::GetTimestamp() to GetChangeStamp(), update usages
- remove TPointSetAdapter::Timestamp()   (was not used in code)
- update TMeshAABBTree3 to use GetChangeStamp(), update internal checks to call IsValid() instead
- update TFastWindingTree w/ similar changes
- update calls in UVEditor, may require further updates
#rb semion.piskarev
#rnx
#jira none
#preflight 6126904c72e9eb00011434fe

#ROBOMERGE-SOURCE: CL 17310271 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17315112 by ryan schmidt in ue5-release-engine-test branch]
2021-08-26 06:57:55 -04:00
michael balzer
b0035b9921 GeometryCore: Add unit test for loading all serialization versions of FDynamicMesh3
This CL adds a unit test and some related basic infrastructure for testing the backwards compatibility of our FDynamicMesh3 serialization. This is in anticipation of the incoming serialization changes.

#jira UETOOL-3821
#rb lonnie.li david.hill
#preflight 6125e930af9a8f0001691400, 6125e96a72e9eb0001f69cd3
#rnx

#ROBOMERGE-SOURCE: CL 17310112 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17315105 by michael balzer in ue5-release-engine-test branch]
2021-08-26 06:57:09 -04:00
michael balzer
58f950d182 GeometryCore: Refactor FCompactMap
#rb ryan.schmidt
#preflight 61242d242c1f1c0001ab244f
#rnx

#ROBOMERGE-SOURCE: CL 17297241 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17297258 by michael balzer in ue5-release-engine-test branch]
2021-08-24 21:40:58 -04:00
ryan schmidt
08cb1b68cf GeometryProcessing: remove unused cached bounding-box support in FDynamicMesh3
#rb none
#rnx
#jira none
#preflight 61245788008be90001a5e767

#ROBOMERGE-SOURCE: CL 17286687 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v861-17282326)

[CL 17286706 by ryan schmidt in ue5-release-engine-test branch]
2021-08-24 10:16:20 -04:00
ryan schmidt
3e9494d723 GeometryProcessing: remove most calls to FDynamicMesh3::GetCachedBounds()
#rb jimmy.andrews
#rnx
#jira none
#preflight 612436ea8ff55400012a182c

#ROBOMERGE-SOURCE: CL 17280425 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v858-17259218)

[CL 17280439 by ryan schmidt in ue5-release-engine-test branch]
2021-08-23 22:08:34 -04:00
ryan schmidt
befd9ab05e GeometryProcessing: remove FDynamicMesh3::CachedIsClosed()
#rb jimmy.andrews
#rnx
#jira none
#preflight 6123fed7864948000170d754

#ROBOMERGE-SOURCE: CL 17279375 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v858-17259218)

[CL 17279378 by ryan schmidt in ue5-release-engine-test branch]
2021-08-23 20:01:35 -04:00
jimmy andrews
ec491379cc Remove duplicate FDynamicMesh vertex triangle one ring function, optimize the remaining function some, and remove bool that doesn't change result.
#rb ryan.schmidt
#rnx

#ROBOMERGE-SOURCE: CL 17251072 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17251085 by jimmy andrews in ue5-release-engine-test branch]
2021-08-20 14:54:52 -04:00
jimmy andrews
09b2e36929 change dmesh GetVtxContiguousTriangles to always reset input arrays before returning, so behavior is more reliable
#rnx

#ROBOMERGE-SOURCE: CL 17235461 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17235483 by jimmy andrews in ue5-release-engine-test branch]
2021-08-19 12:24:24 -04:00
ryan schmidt
809b400f39 GeometryProcessing: add compact check in FindPoloygonsAlgorithm, normalize average normal in MeshNormals
#rb none
#rnx
#jira none
[FYI] semion.piskarev

#ROBOMERGE-SOURCE: CL 17234371 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17234377 by ryan schmidt in ue5-release-engine-test branch]
2021-08-19 11:06:11 -04:00
semion piskarev
6c28f43106 MeshModelingTools: Fixing mesh overlay ref count issues when setting an island triangle, when retriangulating elements without wanting them to be freed, and when doing a check for overlay validity.
#rb Jimmy.Andrews
#rnx
#jira none

#ROBOMERGE-SOURCE: CL 17121232 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17121261 by semion piskarev in ue5-release-engine-test branch]
2021-08-10 14:41:16 -04:00
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