Commit Graph

46 Commits

Author SHA1 Message Date
semion piskarev
2bc05afe97 MeshModelingTools: Move and rename UMeshSelectionMechanic, since it is currently UV Editor specific. Move and rename FDynamicMeshSelection since it is only used in UV Editor. Make the mechanic use FUVEditorUXSettings directly.
#rb Ryan.Schmidt
#rnx
#jira none
#preflight 61eae31dc557ec20018242f6

#ROBOMERGE-AUTHOR: semion.piskarev
#ROBOMERGE-SOURCE: CL 18693459 in //UE5/Release-5.0/... via CL 18693623 via CL 18693716
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)

[CL 18693769 by semion piskarev in ue5-main branch]
2022-01-21 14:31:16 -05:00
semion piskarev
0128d4c695 MeshModelingTools: Make CollectSurfacePathMechanic remove preview vertex if there isn't currently a valid one.
#rb Rinat.Abdrashitov
#rnx
#jira UE-118031
#preflight 61e0a3c5797757aace8bd7ff

#ROBOMERGE-AUTHOR: semion.piskarev
#ROBOMERGE-SOURCE: CL 18621566 in //UE5/Release-5.0/... via CL 18621612 via CL 18621664
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18621720 by semion piskarev in ue5-main branch]
2022-01-14 14:28:47 -05:00
michael balzer
0d3cc77878 MeshModelingToolset: Minor change to tooltip in PolyGroup layer properties
#rb trivial
#preflight trivial

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 18620870 in //UE5/Release-5.0/... via CL 18621114 via CL 18621262
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18621332 by michael balzer in ue5-main branch]
2022-01-14 14:14:20 -05:00
nathan mitchell
d817f21d71 Modeling Tools: Provide support for the IMeshDescriptionProvider to provide "empty" MeshDescriptions, for cases where such instances are desired such as changing topology. This change creates extendable infrastructure parallel to the existing MeshDescription provider implementations so clients of the empty MeshDescription instances do not need localized specialization based on ToolTarget subclasses.
This change addresses the errors found with applying certain modeling tools to skeletal meshes due to the old code not using the appropriately setup MeshDescription for skeletal meshes.

#rb Ryan.Schmidt
#rnx
#jira UE-138420
#preflight 61d8dbc4430de36baa5fd904

#ROBOMERGE-AUTHOR: nathan.mitchell
#ROBOMERGE-SOURCE: CL 18588220 in //UE5/Release-5.0/... via CL 18588227 via CL 18588243
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Test -> Main) (v899-18417669)

[CL 18588249 by nathan mitchell in ue5-main branch]
2022-01-12 14:53:07 -05:00
michael balzer
574e2479aa MeshModelingToolset: Fix Non-Unity build issues
#jira UE-138058, UE-138126
#preflight trivial
#rb trivial

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 18511647 in //UE5/Release-5.0/... via CL 18511723
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18511762 by michael balzer in ue5-release-engine-test branch]
2022-01-04 14:50:17 -05:00
semion piskarev
32e87ed9d4 MeshModelingTools: Add ability to avoid hitting back faces in selection in PolyEdit, to make it easier to work with inside-out meshes. Also save settings for PolyEdit and TriEdit separately.
#rb Jimmy.Andrews
#rnx
#jira none
#preflight 61d37a131f62d3ad4d4a8616

#ROBOMERGE-AUTHOR: semion.piskarev
#ROBOMERGE-SOURCE: CL 18508336 in //UE5/Release-5.0/... via CL 18508346
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18508367 by semion piskarev in ue5-release-engine-test branch]
2022-01-04 11:23:06 -05:00
ryan schmidt
36cf6a396d ModelingComponents: add AssetUtils/StaticMeshMaterialUtil.* with various utility functions for working with StaticMesh materials
#rb none
#rnx
#preflight 61bb8cffca02f71eb5afa57d

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18478579 in //UE5/Release-5.0/... via CL 18481519
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18481794 by ryan schmidt in ue5-release-engine-test branch]
2021-12-16 19:54:23 -05:00
jimmy andrews
3816f344cf Interactive selection tool for fracture mode -- allows a rectangle selection + a filter-by-volume selection
#rb matija.kecman
#preflight 61bb674edc58e54b333bb8a9

#ROBOMERGE-AUTHOR: jimmy.andrews
#ROBOMERGE-SOURCE: CL 18476457 in //UE5/Release-5.0/... via CL 18481355
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18481446 by jimmy andrews in ue5-release-engine-test branch]
2021-12-16 19:28:19 -05:00
jimmy andrews
95e44b12b1 add missing UPROPERTY() to lattice control point mechanic class
#rb lonnie.li
#preflight 61b9ec916b4beca2cc84ce89

#ROBOMERGE-AUTHOR: jimmy.andrews
#ROBOMERGE-SOURCE: CL 18471022 in //UE5/Release-5.0/... via CL 18471031
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18471040 by jimmy andrews in ue5-release-engine-test branch]
2021-12-15 16:16:12 -05:00
ryan schmidt
27ba71e214 ModelingTools: Add support for reading and writing to a specific LOD via IMeshDescriptionProvider/Committer. Refactor various other aspects of MeshDescription access. Update MeshTransferTool to be able to transfer from and to specific LODs.
Add new MeshTargetInterfaceTypes.h file, move EStaticMeshEditingLOD there and rename to EMeshLODIdentifier. Add FGetMeshParameters and FCommitMeshParameters types.

IMeshDescriptionProvider::GetMeshDescription() now takes FGetMeshParameters to optionally specify LOD.
Added IMeshDescriptionProvider::GetMeshDescriptionCopy() function, to handle copy-case.
removed IMeshDescriptionProvider::CalculateAutoGeneratedAttributes(). This was only being used to force Tangents computation, which can now be done via GetMeshDescriptionCopy() and FGetMeshParameters.bWantMeshTangents option

IMeshDescriptionCommitter commit functions now take a FCommitMeshParameters to optionally specify target LOD.

StaticMeshComponentToolTarget::GetMeshDescriptionCopy() added, optionally computes auto-generated MeshDescription attributes on the copy

StaticMesh(Component)ToolTarget updated to support FCommitMeshParameters target-LOD.

SkeletalMesh, Volume, and DynamicMesh ToolTargets updated for new APIs but do not currently support any of the new LOD parameters. These should never be called w/ LOD parameters in the current codebase, ensures added to catch any errors (they would be non-fatal).

UE::ToolTarget::GetMeshDescription() and GetMeshDescriptionCopy() in now take FGetMeshParameters argument.
Removed bWantMeshTangents param to GetMeshDescriptionCopy(), now done via FGetMeshParameters. Updated call sites.

TransferMeshesTool now supports specifying read and write LOD (numbered or HiRes) for StaticMeshComponent source/target, via above functions.
TransferMeshesTool can now also target a new LOD in a StaticMeshComponent, index is 1 larger than current maximum source LOD.

#rb lonnie.li, rinat.abdrashitov
#rnx
#jira none
#preflight 61b8d56b2e65a1df046aa5e1

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18461686 in //UE5/Release-5.0/... via CL 18461725
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18461778 by ryan schmidt in ue5-release-engine-test branch]
2021-12-14 18:40:01 -05:00
matija kecman
21059d3604 UV Editor: Add some analytics to UV Editor tools
#rb lonnie.li, michael.balzer
#rnx
#jira none
#preflight 61b7ce47fc5708913396b563

#ROBOMERGE-AUTHOR: matija.kecman
#ROBOMERGE-SOURCE: CL 18453391 in //UE5/Release-5.0/... via CL 18453397
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v898-18417669)

[CL 18453406 by matija kecman in ue5-release-engine-test branch]
2021-12-14 06:39:08 -05:00
ryan schmidt
db857d56b6 ModelingTools: convert various tools/mechanics/etc to use new SnappingManager functionality for scene hit-tests and snapping
#rb david.hill
#rnx
#jira none
#preflight 61b21920d308710b0c513796

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18419130 in //UE5/Release-5.0/... via CL 18422407
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18422664 by ryan schmidt in ue5-release-engine-test branch]
2021-12-09 14:46:09 -05:00
matija kecman
6aa97489d6 UV Editor: Move the checkbox to enable/disable rendering of hovered elements into the main details panel
#rb michael.balzer
#rnx
#preflight

#ROBOMERGE-AUTHOR: matija.kecman
#ROBOMERGE-SOURCE: CL 18410486 in //UE5/Release-5.0/... via CL 18410509
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18410527 by matija kecman in ue5-release-engine-test branch]
2021-12-08 15:04:38 -05:00
matija kecman
d9625a7f87 UV Editor: Add hover preview to Edit mode
#rb semion.piskarev
#rnx
#jira none
#preflight 61af9fc90e59fd0ab0fa5409

#ROBOMERGE-AUTHOR: matija.kecman
#ROBOMERGE-SOURCE: CL 18404342 in //UE5/Release-5.0/... via CL 18404343
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v896-18170469)

[CL 18404348 by matija kecman in ue5-release-engine-test branch]
2021-12-08 05:54:10 -05:00
ryan schmidt
2d9c7f5e27 Add missing predeclaration
#rb none
#rnx

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18389760 in //UE5/Release-5.0/... via CL 18389769
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v896-18170469)

[CL 18389784 by ryan schmidt in ue5-release-engine-test branch]
2021-12-06 18:12:59 -05:00
semion piskarev
0dcb7c00f0 UVEditor: Highlight edge and vertex selections in the live preview.
#rb Nathan.Mitchell
#rnx
#jira none
#preflight 61a8f6d4a7179bfa5503f3fc

#ROBOMERGE-AUTHOR: semion.piskarev
#ROBOMERGE-SOURCE: CL 18388864 in //UE5/Release-5.0/... via CL 18388925
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v896-18170469)

[CL 18388944 by semion piskarev in ue5-release-engine-test branch]
2021-12-06 17:25:26 -05:00
ryan schmidt
22c851a546 ModelingTools: add alpha mask visualization to brush stamp indicator in VertexSculptTool
#rb none
#rnx
#preflight 61ae4b412b3384289ad2048b

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18387240 in //UE5/Release-5.0/... via CL 18387277
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v896-18170469)

[CL 18387286 by ryan schmidt in ue5-release-engine-test branch]
2021-12-06 15:44:16 -05:00
ryan schmidt
17cefb1dd1 ModelingTools:
Reduce surface area of MeshDescriptionProvider/Committer, replace with UE::ToolTarget:: calls where possible.

Add new UE::ToolTarget::CommitMeshDescriptionUpdateViaDynamicMesh() function. This is being used for now to avoid potential regressions as UE::ToolTarget::CommitDynamicMeshUpdate will preferentially use DynamicMeshCommitter, and I am not certain it is functionally equivalent in all cases.
Add new UE::ToolTarget::CommitDynamicMeshNormalsUpdate(), similar to existing UV version
Add new Move-variant of UE::ToolTarget::CommitMeshDescriptionUpdate(), uses new Move-variant of IMeshDescriptionCommitter::CommitMeshDescription.
Make existing IMeshDescriptionCommitter::CommitMeshDescription callback interface protected, to prevent usage of this function at public API level (will be removed in future).

Tool updates should not change, just using cleaner APIs.
EditNormalsTool now uses CommitDynamicMeshNormalsUpdate(), which does go via DynamicMeshCommitter preferentially, where it previously went via MeshDescriptionCommitter. In light testing the results appear equivalent.
AttributeEditorTool now operates on MeshDescription copies in various update functions. These are not performance-critical.

#rb rinat.abdrashitov
#rnx
#preflight 61ae45998358693a22c28d1b

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18384350 in //UE5/Release-5.0/... via CL 18384361
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v896-18170469)

[CL 18384373 by ryan schmidt in ue5-release-engine-test branch]
2021-12-06 12:42:19 -05:00
michael balzer
4a4e360ab1 MeshModelingToolset: Cleanup UV Unwrap tool
#rb ryan.schmidt
#preflight 61a6d63b6c7d8a7295f405a2, 61a92f32fc3f6823e8d2bac7

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 18357442 in //UE5/Release-5.0/... via CL 18357499
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18357514 by michael balzer in ue5-release-engine-test branch]
2021-12-02 15:47:10 -05:00
semion piskarev
40a7e56ec1 UVEditor: add ability to split bowtie verts. Fix some edge splits occasionally creating a bowtie vert on adjacent non-selected edge. Also fix some undo/redo issues especially regarding sew edges preview. Made all undo/redo selection change events broadcast for now.
#rb Nathan.Mitchell, Jimmy.Andrews
#rnx
#jira UE-133108
#preflight 61a8e8b3e01f3610f5307b4e

#ROBOMERGE-AUTHOR: semion.piskarev
#ROBOMERGE-SOURCE: CL 18355648 in //UE5/Release-5.0/... via CL 18355681
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18355709 by semion piskarev in ue5-release-engine-test branch]
2021-12-02 14:42:09 -05:00
nathan mitchell
e6edcc2f84 ModelingTools: Change PointSetComponent to match LineSetComponent to use per element (point) percentage-based DepthBias support. Updates users of PointSetComponent to reflect this change.
#rb semion.piskarev
#rnx
#preflight 61a7f7f6a7179bfa55f4deb2

#ROBOMERGE-AUTHOR: nathan.mitchell
#ROBOMERGE-SOURCE: CL 18346932 in //UE5/Release-5.0/... via CL 18346952
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18346963 by nathan mitchell in ue5-release-engine-test branch]
2021-12-01 18:15:38 -05:00
ryan schmidt
48e1cabf77 Added support for world-space hit-testing and snapping to Volume and DynamicMeshComponent mesh vertices/edges/faces, by having Modeling Mode maintain a persistent set of spatial data structures for these scene meshes. With this change, new ToolSceneQueriesUtil functions can be used to provide more general scene mesh-element hit-testing/snapping via ModelingSceneSnappingManager. Updates to existing Tools/Mechanics to use these new query functions will be done in later CLs.
ToolsFramework:
- added new USceneSnappingManager::ExecuteSceneHitQuery API function, as well as accompanying FSceneHitQueryRequest/FSceneHitQueryResult structs
- added FSceneQueryVisibilityFilter struct which contains ComponentsToIgnore/InvisibleComponentsToInclude lists for snapping queries and provides shared IsVisible() implementation

ModelingComponents:
- add FLevelObjectsObserver, tracks Actors added/removed to a Level via various editor events
- add FSceneGeometrySpatialCache, maintains spatial data structures for known types of mesh-backed PrimitiveComponents, an octree based on their world-space bounding-boxes, and provides various spatial-query functions
- ModelingSceneSnappingManager now maintains a FSceneGeometrySpatialCache for a set of Actors/Components it is notified about, and updates the spatial cache if those components are modified or translated. Currently supports Volumes and DynamicMeshComponents.
- add ModelingSceneSnappingManager::ExecuteSceneHitQuery implementation, does raycasts into the world (for static mesh components) and FSceneGeometrySpatialCache for Volumes/DMCs
- modified ModelingSceneSnappingManager::ExecuteSceneSnapQuery to also do combined query against StaticMeshComponents via world-linetrace, and FSceneGeometrySpatialCache for Volumes/DMCs
- add ToolSceneQueriesUtil::FindNearestVisibleObjectHit variants that take a USceneSnappingManager or UInteractiveTool, and do queries via the SceneSnappingManger, instead of directly linetracing into a UWorld

ModleingToolsEditorMode:
- add FLevelObjectsObserver instance and use it to drive updates to active ModelingSceneSnappingManager

#rnx
#jira none
#preflight 61a664a09a226d9e823ad4c1

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18339853 in //UE5/Release-5.0/... via CL 18339869
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18339891 by ryan schmidt in ue5-release-engine-test branch]
2021-12-01 11:15:01 -05:00
nathan mitchell
88954e6d09 UVEditor: Move visual and style settings (color, depth offsets, etc) to a new style container class, keeping everything in one place for ease of modification in the future. Also adjusts the grid axis lines to not scale up when zooming out in the 2D viewport
#rb semion.piskarev
#rnx
#preflight 61a56498801b36197837b0c4

#ROBOMERGE-AUTHOR: nathan.mitchell
#ROBOMERGE-SOURCE: CL 18319017 in //UE5/Release-5.0/... via CL 18319325
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18319503 by nathan mitchell in ue5-release-engine-test branch]
2021-11-29 20:09:00 -05:00
ryan schmidt
f0828c943b Expose component/asset physics data via a ToolTarget interface
ToolsFramework:
- add PhysicsDataSource ToolTarget Interface, that exposes UBodySetup and CollisionDataProvider interfaces
ModelingComponents:
- Add tooltarget accessor/utility functions in UE::ToolTarget namespace.
- Implement PhysicsDataSource for StaticMeshComponentToolTarget and DynamicMeshCompnentToolTarget.
- Update FPhysicsDataCollection::InitializeFromComponent() to support DynamicMeshComponent and BrushComponent.
ModelingTools:
- update ExtractCollisionGeometryTool and PhysicsInspectorTool

#rb lonnie.li
#rnx
#jira none
#preflight 61a150004803629015d5a09b

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18302043 in //UE5/Release-5.0/... via CL 18302049
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18302051 by ryan schmidt in ue5-release-engine-test branch]
2021-11-26 16:37:25 -05:00
ryan schmidt
f47bb8f710 GeometryScripting: add support for reading from Volumes in SceneUtilityFunctions::CopyMeshFromComponent()
#rb lonnie.li
#rnx
#jira none
#preflight 61a149bef70a9e92dba305e4

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 18302005 in //UE5/Release-5.0/... via CL 18302009
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18302010 by ryan schmidt in ue5-release-engine-test branch]
2021-11-26 16:20:30 -05:00