79 Commits

Author SHA1 Message Date
nickolas drake
7f206657f2 EditorModelingObjectsCreationAPI: Fix crash due to nullptr dereference on accepting the Pattern Tool.
#rb lonnie.li
#jira UE-189185

[CL 26587773 by nickolas drake in 5.3 branch]
2023-07-25 16:37:33 -04:00
Jimmy Andrews
3fa5693881 Make the SubdividePoly operation not crash on failures to add triangles to the output mesh (which can happen if the output would be non-manifold).
Make the SubdividePolyTool only consider adding extra corner vertices on polygroup edges when the corner vertex would be on a mesh boundary; otherwise, the subdivision would try to create a non-manifold edge.

#jira UE-190468
#rb tyson.brochu

[CL 26484516 by Jimmy Andrews in 5.3 branch]
2023-07-20 09:37:31 -04:00
rinat abdrashitov
8e6e28690b -GeometryScript: When creating a new SkeletaMesh asset, provide an option to use the bone attributes of the dynamic mesh to set the reference skeleton of the skeletal mesh.
-Added a convenience function for getting an array of bone names from a reference skeleton.
-Added MeshBones.h/cpp that contain utility functions to deal with dynamic mesh bone attributes

#rb halfdan.ingvarsson
#jira none

[CL 26233292 by rinat abdrashitov in 5.3 branch]
2023-06-26 10:10:55 -04:00
ryan schmidt
8d4f038af9 ModelingMode: selection system bugfixes & improvements.
Add DynamicMeshSelector::UpdateAfterGeometryEdit API. StaticMeshSelector implementation updates static mesh after an Edit instead of emitting MeshChange on temporary DynamicMesh.
Delete and Retriangulate Commands now use this API instead of directly emitting transaction, so now these commands work properly on Static Meshes.

FStaticMeshComponentSelectorFactory::CanBuildForTarget now only allows UStaticMeshComponent specifically, filtering out subclasses. This is not ideal but I don't know what else we can do for now, there are many subclasses like ISMC, SplineMeshComponent, etc, that will not work w/ the Selection system. Also now filtering out Engine assets and cooked assets.

ModelingToolsEditorMode now listens for blueprint pre-compiles, and when this occurs, clears the active selection and selection targets. This is necessary because if the selection Component was part of a BP, on recompile it is re-instanced and the old pointer goes stale. Possibly can handle this better or at a more granular level, but clearing the selection is safest. This currently results in things not being undoable because the FChange transactions are on the "old" UDynamicMesh that no longer exists.

UModelingToolsEditorMode::UpdateSelectionManagerOnEditorSelectionChange now does a more thorough job of inspecting the current Actor/Component selection to find Components that could work w/ the selection system.

#rb lonnie.li

[CL 26133442 by ryan schmidt in 5.3 branch]
2023-06-20 16:31:27 -04:00
jimmy andrews
de7ee880bc Update modeling components usage of opensubdiv to allow max/unix targets, since our OpenSubdiv pre-built libraries now also support these targets
#jira UE-186825
#rb ryan.schmidt

[CL 26038429 by jimmy andrews in 5.3 branch]
2023-06-16 02:39:41 -04:00
semion piskarev
8f0627147d MeshModelingTools: Subdivide tool improvements dealing with meshes with open boundaries.
- Factor out "extra corner" finding code from PolyEd and add support for it in subdivide tool.
- Add support for rounded corners for mesh boundaries.
- Override subdivision scheme during tool usage rather than just at tool start, to allow extra corners to fix some issues.
- Add some clarifying comments about schemes.

#rb Jimmy.Andrews
#jira UE-185416

[CL 26036654 by semion piskarev in 5.3 branch]
2023-06-16 01:47:18 -04:00
semion piskarev
c9de10f9cf MeshModelingTools: Various volume conversion fixes:
- Fix conversion sometimes making degenerate tris and firing an ensure.
- Fix volume conversion sometimes creating cracks in volumes when dealing with non-convex faces (by deleting necessary colinear verts)
- Make simplification preserve group boundaries when asked.
- Remove colinear verts along group boundaries without losing boundaries when preserving groups.
- Break up faces that have holes into convexes rather than emitting per-triangle faces.
- Make mesh to volume tool use same path for conversion as tool targets, and add controls for preserving groups and simplifying
- Revert to ear clipping if delaunay triangulation fails in converting back from volume

#rb Jimmy.Andrews
#jira UE-173272, UE-152032
#prelfight 6470ccbf5b1dc793b715d66b

[CL 26002669 by semion piskarev in ue5-main branch]
2023-06-14 23:43:43 -04:00
nickolas drake
a97a2b32d4 ModelingToolset: Make Pattern Tool emit correct actors using a new CreateNewActor function.
Added a CreateNewActor function to EditorModelingObjectsCreationAPI which finds a factory capable of producing actors of the same type as a provided template actor to create the new actor without needing to create entirely new assets as would have been necessary with the existing functions in EditorModelingObjectsCreationAPI.

#rb lonnie.li

[CL 25963642 by nickolas drake in ue5-main branch]
2023-06-13 17:05:45 -04:00
matija kecman
ae026188f8 Render Capture Baking: Make BakeRC tool output a new material configured with the generated textures
This change also extends UModelingObjectsCreationAPI to support materials by duplicating a given material

#rb ryan.schmidt
#jira UE-182349
#preflight 6467649a573c1da15838e005

[CL 25548119 by matija kecman in ue5-main branch]
2023-05-19 13:50:08 -04:00
ryan schmidt
4061f31c7c ModelingTools: Add IMeshDescriptionProvider::GetMeshDescriptionLOD() which returns current LOD for a ToolTarget. Implement in StaticMesh Tool Targets. Add UE::ToolTarget::GetTargetMeshDescriptionLOD() which wraps this function
#rb jimmy.andrews
#preflight 646631103660522200164f0c

[CL 25529470 by ryan schmidt in ue5-main branch]
2023-05-18 13:52:35 -04:00
semion piskarev
582964265a MeshModelingTools: Harden tool targets against underlying objects being replaced via blueprints and/or garbage collected.
#rb Lonnie.Li, Jimmy.Andrews
#jira UE-184401
#preflight 64525c58743c256cd692d59e

[CL 25334286 by semion piskarev in ue5-main branch]
2023-05-04 09:51:24 -04:00
lonnie li
b393b59cd5 GeometryScript: Fixed issue where CreateSkeletalMeshAssetFromMesh was not correctly assigning materials.
#rb none

[CL 25309487 by lonnie li in ue5-main branch]
2023-05-02 18:17:06 -04:00
lonnie li
398b472a8f GeometryScript: Fixed issue where CreateSkeletalMeshAssetFromMesh was not correctly assigning materials.
#rb none

[CL 25304257 by lonnie li in ue5-main branch]
2023-05-02 13:25:29 -04:00
semion piskarev
0c5f39f96a MeshModelingTools: Don't transact static mesh asset creation because we are not able to undo it properly anyway.
#rb Jimmy.Andrews
#jira UE-107276, UE-183012, UE-159769
#preflight 644a8f396b589f8b36f2e171

[CL 25219834 by semion piskarev in ue5-main branch]
2023-04-27 14:06:09 -04:00
ryan schmidt
2f30bc1c16 ModelingMode: updates to selection system.
Selection enable/disable can now be toggled dynamically via mode settings popup, toolbar will hide/show based on current setting state.
GeometrySelectionManager is now always created. New Mode function GetMeshElementSelectionSystemEnabled() indicates whether selection is currently enabled, when disabled active targets will not be tracked.
Selection Toolbar icons now are disabled while in a Tool (as selection system is not active then)
New Static Mesh Assets and Volumes created using Modeling Tools now default to unlocked, via new functions on StaticMeshSelector / Volume Selector.
Unlocked Asset/Volume sets are cleared on level change
Added cvars modeling.Selection.EnableStaticMeshLocking and modeling.Selection.EnableVolumeLocking which can be used to fully disable lock-ability of StaticMesh/Volume (default true)
shortened some names of tool group tabs, as labels are now shown and long names make the bar wider
Added a few toast notifications for when setting state changes require a mode or editor restart.
#rb none
#preflight 64426fabb14f1faacff6921d

[CL 25149511 by ryan schmidt in ue5-main branch]
2023-04-21 14:04:50 -04:00
david hill
1660860437 Mesh Modeling - Static Mesh and Static Mesh Component Tool Targets.
Update Can Build Target to distinguish generated LODs.   Tools shouldn't edit generated LODs.

#jira UE-183213
#preflight 64415b4e9566b614506456f5
#rb Rinat.Abdrashitov

[CL 25132341 by david hill in ue5-main branch]
2023-04-20 14:18:49 -04:00
jimmy andrews
e5b9310407 add support for querying LOD support in a mesh description provider, and use this to add an option to apply Bake Transform and Pivot tools to all LODs
#jira UE-182339
#rb ryan.schmidt
#preflight 6439a35c8e019684483b37dd

[CL 25068419 by jimmy andrews in ue5-main branch]
2023-04-17 11:09:56 -04:00
michael balzer
78239f01ef ModelingMode: Use actor factory when creating volumes
#jira UE-182670
#preflight 642f9cc7df6c5c78fcdf77d1
#rb ryan.schmidt

[CL 24984018 by michael balzer in ue5-main branch]
2023-04-10 17:10:01 -04:00
ryan schmidt
d83ee312b8 ModelingMode: bring back in-viewport selection toolbar. Add concept of Locking to IGeometrySelector, have StaticMeshSelector and VolumeSelector default to locked. Add util functions to check/manipulate locking state to UGeometrySelectionManager. Add locked-state indicator/button to selection toolbar.
#preflight 642df231c6769c608209676a
#rnx

[CL 24979045 by ryan schmidt in ue5-main branch]
2023-04-10 12:36:37 -04:00
nathan mitchell
6eb4eda6a2 ModelingComponents: Restore check for SourceModel existence during CanBuild in static mesh tool targets.
#rb Ryan.Schmidt
#preflight 642dde0f8f078cc7031a149c

[CL 24951829 by nathan mitchell in ue5-main branch]
2023-04-06 14:59:42 -04:00
ryan schmidt
0718e0382f ModelingToolset: rewrite material setup in UE::AssetUtils::CreateStaticMeshAsset to not call UStaticMesh::SetMaterial(), which forces a PostEditChange() on each call. Instead build and set a list of FStaticMaterial, which shouldn't result in spurious ddc builds.
#rb rinat.abdrashitov
#preflight 642dbafe4d26bcd1eb1bae8d

[CL 24938086 by ryan schmidt in ue5-main branch]
2023-04-05 17:59:55 -04:00
alexis matte
3374b5028f [Backout] - CL24910510
[FYI] Alexis.Matte
Original CL Desc
-----------------------------------------------------------------
Reorder the hires mesh to fit the LOD 0 in all workflow

#jira
#rb ryan.schmidt
#rnx
#preflight 642c2665ce01db47ac208f69

[CL 24937402 by alexis matte in ue5-main branch]
2023-04-05 17:36:59 -04:00
alexis matte
36bd338e11 Reorder the hires mesh to fit the LOD 0 in all workflow
#jira
#rb ryan.schmidt
#rnx
#preflight 642c2665ce01db47ac208f69

[CL 24912837 by alexis matte in ue5-main branch]
2023-04-04 12:40:15 -04:00
benoit gadreau
34e7de0680 - added USkeletalMesh::Get/CommitMeshDescription functions to ease skeletal mesh manipulations thru mesh description
- store RefBasesInvMatrix when transacting as the number of bones serialized with the ref skeleton can vary
- fixed transaction issue with Modify not being called on USkeletalMeshEditorData


#jira UE-181601
#rb halfdan.ingvarsson
#preflight 642be5c0f376ab43d25f537f

[CL 24912623 by benoit gadreau in ue5-main branch]
2023-04-04 12:27:04 -04:00
nathan mitchell
0953ef8eda ModelingMode: Adjusted the conditions used for checking if targets can build dynamic meshes for modeling tools to include proper checks for cooked assets in the editor.
#rb halfdan.ingvarsson
#preflight 6424857d974dfaa53c67ee9c

[CL 24851226 by nathan mitchell in ue5-main branch]
2023-03-30 02:26:50 -04:00