43 Commits

Author SHA1 Message Date
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
jimmy andrews
f63cdc13af Update FLocalPlanarSimplify to support simplification along straight creases in a mesh, where the sides of the crease may optionally belong to different PolyGroups
Add an edge simplification operation to the PolyEdit tool

#rb semion.piskarev
#preflight 63ee9a0f3c1eb56f055442ac

[CL 24276322 by jimmy andrews in ue5-main branch]
2023-02-16 21:55:32 -05:00
ryan schmidt
af5699f133 ModelingTools: improve handling of invalid input selections to PolyEd Tool
Add UGeometrySelectionManager::GetActiveSelectionInfo, returns info about current selection w/o having to copy selection
Override UEditMeshPolygonsActionModeToolBuilder::CanBuildTool, use this new function to do specific per-action filtering to limit to supported input selection types
UEditMeshPolygonsSelectionModeToolBuilder::InitializeNewTool() now filters UI panels for current input selection if available, update Selection-palette PolyEd button to use this builder instead
#jira UE-176168
#preflight 63e2c886c2257e56f413b805
#rb david.hill

[CL 24068438 by ryan schmidt in ue5-main branch]
2023-02-08 01:21:37 -05:00
semion piskarev
6a7be69e26 MeshModelingTools: unbind the "toggle gizmo" action in some tools from a default hotkey to prevent users from accidentally pressing it and thinking that the tools are broken. Users can still set their own hotkey if their workflow benefits from it.
#rb Jimmy.Andrews
#jira UE-176343
#preflight 63e2a16e1020773a3f3e3e56

[CL 24062599 by semion piskarev in ue5-main branch]
2023-02-07 18:29:11 -05:00
semion piskarev
f18d6198cc MeshModelingTools: Add gizmo numerical UI.
- Added FTransformGizmoDataBinder which allows for gizmos to be bound to vectors such that the vectors are updated when the gizmo changes, and the gizmo is updated from vectors when asked. This should make it easy-ish to create displays of gizmos.
- Used the data binder in STransformGizmoNumericalUIOverlay, an overlay containing a draggable numerical UI panel for gizmos. Note that currently all changes, including typing, intentionally go down a gizmo drag path, meaning that they trigger the begin/end transform edit sequence calls, to make the tools treat them as a gizmo drag (in part because some tools might otherwise assume that a gizmo update is from an undo transaction or some other path that is special-cased).
- Added some slate things to ModelingEditorUI to support the numerical UI, in particular a viewport draggable box, and a widget that emits a tick delegate.
- Added some delegates to gizmo context object and combined transform gizmos to allow things to bind/unbind to/from them appropriately.

#rb Ryan.Schmidt
#preflight 63ce97ebf2318350a2f3a6c4

[CL 23815889 by semion piskarev in ue5-main branch]
2023-01-23 12:48:47 -05:00
ryan schmidt
70ac55822d ModelingMode: improve interop with new Selection System and existing Tools
Add support for Tools to provide an "output" selection. Add UGeometrySelectionManager::SetSelectionForComponent() which can set an explicit externally-provided selection. FBaseDynamicMeshSelector::UpdateSelectionFromSelection() now supports selection conversion when available and requested (is used to implement SetSelectionForComponent). New GeometrySelectionUtil functions InitializeSelectionFromTriangles() and ConvertSelection() are used to implement this (note: only Triangles->other conversion is currently supported). Add HaveAvailableGeometrySelection() and SetToolOutputGeometrySelectionForTarget() in StoredMeshSelectionUtil.h, this is the top-level function that Tools can use to set an Output selection.

ExtrudeMeshSelectionTool now emits output selection.

Update EditMeshPolygonsTool to use new Selection system and allow individual operations to be utilized as standalone Tools. Convert EditMeshPolygonsTool to be a USingleTargetWithSelectionTool, use FGeometrySelection to initialize selection. Add bTerminateOnPendingActionComplete flag, which is set when Tool is directly initialized to a specific operation, and forces tool to shut down when operation completes. This allows it to be used to more cleanly implement multiple action buttons in Modeling UI. When in this mode, selection panels are not shown. On Shutdown, now emits an "output" selection which GeometrySelectionManager can use to provide new selection to user. Update UPolygonSelectionMechanic Set/Get selection APIs to use FGeometrySelection instead of UPersistentMeshSelection.

port UVProjectionTool to derive from USingleTargetWithSelectionTool, use FGeometrySelection to initialize target ROI

deprecate UPersistentMeshSelection and related functions in StoredMeshSelectionUtil.h. Deprecate Tool Input Selection APIs in USingleSelectionMeshEditingTool and Builder.

Repurpose old ModelingMode-level PolyModel tab operations for new Selection Tools UI, now support Inset, Outset, Cut Faces, Insert Edge Loop, PushPull, and Bevel.

#rb none
#preflight 63c84fa2b065224750b9831f

[CL 23766643 by ryan schmidt in ue5-main branch]
2023-01-18 17:59:31 -05:00
semion piskarev
7bdac96c18 MeshModelingTools: Fix TriEd flip edge operation selecting wrong edges afterward.
#rb Jimmy.Andrews
#preflight 6361f5fd0c2e7c8f916bb1fd

[CL 22937875 by semion piskarev in ue5-main branch]
2022-11-02 23:06:02 -04:00
semion piskarev
e1d6ffd423 MeshModelingTools: Add detail customization for selection filter in PolyEd and TriEd, make loop/ring selection imply edge selection, per discussion with ux team.
#rb Lonnie.Li
#jira none
#preflight 633c994a0e66c104f1d2889e

[CL 22338072 by semion piskarev in ue5-main branch]
2022-10-04 16:48:57 -04:00
bryan sefcik
50d4fac9e0 Updated ../Engine/Plugins/... to inline gen.cpp files
Before:
3548 unity files
Total CPU Time: 47343.578125 s
Total time in Parallel executor: 494.60 seconds

After:
3445 unity files
Total CPU Time: 46044.671875 s
Total time in Parallel executor: 468.51 seconds

#jira
#preflight 63336159b20e73a098b7f24f

[CL 22218213 by bryan sefcik in ue5-main branch]
2022-09-28 01:06:15 -04:00
tyson brochu
9efcc70606 ModelingComponents/Selection:
- create a new MeshTopologySelector base class. The existing GroupTopologySelector class now inherits from it, as does a new BoundarySelector class
- likewise, create a new MeshTopologySelectionMehchanic base class and have (existing) PolygonSelectionMechanic and (new) BoundarySelectionMechanic inherit from it
- the new Boundary classes use FMeshBoundary loops to define selectable loops rather than FGroupTopology

HoleFillTool:
- change to using BoundarySelectionMechanic instead of GroupTopologySelector

Misc:
- allow FMeshBoundaryLoops to fail untangling a loop with bowties but still continue processing other loops


#jira UE-144821
#rb jimmy.andrews
#preflight 63222176e93a80888cb7d3df

[CL 22013854 by tyson brochu in ue5-main branch]
2022-09-14 15:25:19 -04:00
semion piskarev
6cac8b3c12 MeshModelingTools: Fix PolyEd doing full proxy updates while dragging gizmo.
#rb Jimmy.Andrews
#jira UE-156868
#preflight 631bacbad135b61bc57933a5

[CL 21984896 by semion piskarev in ue5-main branch]
2022-09-13 12:19:06 -04:00
Jimmy Andrews
b19a464d51 fix ensure due to out-of-date spatial data after failed bridge in polyedit tool
#jira UE-162905
#rb david.hill
#preflight 63125b44ec45fbf3d76c2c6e

[CL 21768118 by Jimmy Andrews in ue5-main branch]
2022-09-02 17:29:21 -04:00
Jimmy Andrews
3361328ca8 fix issues with scaled input meshes in edit polygons tool by baking the transform
#rb ryan.schmidt
#preflight 630fa483501b64ba336d2c78

[CL 21734180 by Jimmy Andrews in ue5-main branch]
2022-08-31 20:31:58 -04:00
semion piskarev
c17c1bd788 MeshModelingTools: Give ability to add extra corners in PolyEd for manipulation of some common open-boundary cases (like a disconnected rectangle, for instance). Also show selectable corners by default (but smaller).
#rb Matija.Kecman
#jira none
#preflight 6307ab3859064f9d1e43c1fb

[CL 21568934 by semion piskarev in ue5-main branch]
2022-08-25 14:06:37 -04:00
Nickolas Drake
55a66e16e0 Add Group Edge Welding: Add group edge welding by adding extra vertices to edge that doesn't have enough, then welding edge sequences
#rb Semion.Piskarev
#jira none
#preflight 62a8efbadb45e64426a03d12

[CL 20811431 by Nickolas Drake in ue5-main branch]
2022-06-24 12:52:47 -04:00
Nickolas Drake
6f0bb17b5a EditMeshPolygonsTool.cpp warning: Text conflict from LOCTEXT macro for namespace and key
#rb
#jira UE-156322
#preflight 62a36a82fe519cd51262e0fb

[CL 20597562 by Nickolas Drake in ue5-main branch]
2022-06-10 12:20:09 -04:00
Nickolas Drake
afc23bb332 Add Bridge Edges to PolyEd: Add single to single groupedge bridge action to PolyEd, without welding sides
#rb Semion.Piskarev
#jira none
#preflight 6298e35f0360a10c349d35c1

[CL 20582636 by Nickolas Drake in ue5-main branch]
2022-06-09 15:08:03 -04:00
Nickolas Drake
03f1bda050 PolyEd Plane Control Gizmo: Add hotkey R to hide plane control gizmo in PolyEd
#rb Semion.Piskarev
#jira none
#preflight 62a10233232daff7b3026eac

[CL 20563350 by Nickolas Drake in ue5-main branch]
2022-06-08 16:27:18 -04:00
Nickolas Drake
1400b65d56 ModellingComponents: Add optional corner point visualization to PolyEdit
#rb Simeon.Piskarev
#jira none
#preflight 629fc9d185333f26645be644

[CL 20546816 by Nickolas Drake in ue5-main branch]
2022-06-07 18:25:43 -04:00
nathan mitchell
27fb829b8a ModelingTools: Improved handling in UEditMeshPolygonsTool to deal with cases where the TransformGizmo can't be acquired successfully, which was leading to crashes. Now a failed gizmo acquisition simply breaks user interactions, but doesn't crash the editor.
#rb semion.piskarev
#preflight 6298e1f3f269bddede0c5193
#jira UE-153932

#ROBOMERGE-AUTHOR: nathan.mitchell
#ROBOMERGE-SOURCE: CL 20473413 in //UE5/Release-5.0/... via CL 20474330
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v954-20466795)

[CL 20475585 by nathan mitchell in ue5-main branch]
2022-06-02 16:45:08 -04:00
semion piskarev
327f7480d7 MeshModelingTools: Fix selection getting cleared in PolyEd Inset and Disconnect and undo being a little broken for selection after CL 18570424.
#rb Matija.Kecman
#jira none
#preflight 62753035491d570f22430512

[CL 20225114 by semion piskarev in ue5-main branch]
2022-05-16 11:23:56 -04:00
semion piskarev
eb8d9fe187 MeshModelingTools: Fix incorrect ray direction transformation in CubeGrid and PolyEd focus.
#rb Nathan.Mitchell
#jira none
#preflight 62339cfc6666d7e7539ff450

[CL 19434207 by semion piskarev in ue5-main branch]
2022-03-18 08:32:15 -04:00
semion piskarev
8c3bb7ea9a MeshModelingTools: Allow user to set specific extrude distance in PolyEd.
#rb Rinat.Abdrashitov, Jimmy.Andrews
#jira none
#preflight 622b6e420a614dcb0cfb8e0d

[CL 19355551 by semion piskarev in ue5-main branch]
2022-03-11 11:01:04 -05:00
semion piskarev
36e35bdaac MeshModelingTools: Fix crash when hitting delete and marquee selecting at the same time in PolyEdit.
#rb Jimmy.Andrews
#rnx
#jira UE-143243
#preflight 6210193fad11de9431d2afa4


#ROBOMERGE-AUTHOR: semion.piskarev
#ROBOMERGE-SOURCE: CL 19093207 via CL 19093826 via CL 19094601 via CL 19096102 via CL 19105343
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19146652 by semion piskarev in ue5-main branch]
2022-02-25 09:43:15 -05:00
ryan schmidt
7c983b8d45 GeometryCore: clean up issues that block non-LWC builds
#rb david.hill
#preflight 620ff48d53204823ae859ccb

#ROBOMERGE-AUTHOR: ryan.schmidt
#ROBOMERGE-SOURCE: CL 19064974 via CL 19076437 via CL 19077315 via CL 19078956
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19122734 by ryan schmidt in ue5-main branch]
2022-02-24 15:01:41 -05:00