Commit Graph

143 Commits

Author SHA1 Message Date
matija kecman
87ee9970e8 Fix GetElapsedComputeTime so that the preview material kicks in after the proper delay
#jira UE-183810
#preflight 644a77c66b589f8b36ee29a9
#rb jimmy.andrews

[CL 25299633 by matija kecman in ue5-main branch]
2023-05-02 07:51:43 -04:00
ryan schmidt
2046684122 ModelingMode: support IGeometrySelector::Sleep() and ::Restore() failing in GeometrySelectionManager. FBaseDynamicMeshSelector will now fail to sleep if TargetMesh is not valid. SupportsSleep() now also checks for valid target mesh.
#rb jimmy.andrews
#jira UE-184089
#preflight 644953476b589f8b367c7f7a

[CL 25204039 by ryan schmidt in ue5-main branch]
2023-04-26 14:35:53 -04:00
matija kecman
7b090b69c0 Add Geometry Selection visualization to Normals tool
#jira UE-183457
#preflight 64492eecb208f61af87912db
#rb ryan.schmidt

[CL 25199891 by matija kecman in ue5-main branch]
2023-04-26 11:54:13 -04:00
tyson brochu
23204d6190 Cloth Paint Tool:
- Add a Gradient Interaction Type. The user selects "high" and "low" vertices and a gradient is automatically computed between them

#jira UE-183874
#rb jimmy.andrews
#preflight 644805ccd07064cbaea8ce5a

[CL 25183697 by tyson brochu in ue5-main branch]
2023-04-25 13:16:11 -04:00
Steve Robb
acfaf95a3f Fixed mismatched copy constructor/assignment operator in FGeometryIdentifier.
#rb none
#jira none
#preflight none

[CL 25177552 by Steve Robb in ue5-main branch]
2023-04-25 05:53:22 -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
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
Steve Robb
5b8c9537f7 Made FMeshBakerDynamicMeshSampler explicitly non-copyable to prevent a bunch of deprecation warnings about FMeshBakerDynamicMeshSampler::DetailNormalMap from their implicit copy constructors.
Made FSceneCapturePhotoSetSampler explicitly non-copyable to prevent its special member functions being DLL-exported.

#rb none
#jira none
#preflight none

[CL 24890436 by Steve Robb in ue5-main branch]
2023-04-03 06:14:42 -04:00
ryan schmidt
c8acfc09b0 ModelingTools: add support for DynamicMeshComponent Simple Collision in Mesh to Collision Tool, Convert Tool, and Transfer Tool.
ModelingComponents: Add ShapeSet member for passing simple collision shapes in FCreateMeshObjectParams, support in relevant functions in UEditorModelingObjectsCreationAPI. Add UE::Geometry::GetCollisionShapes() functions in ComponentCollisionUtil.h, and update various functions to support DynamicMeshComponent

DynamicMeshComponent: change signature of GetSimpleCollisionShapes() to return const ref

#rb david.hill
#preflight 6421ca54973e609670a408c7

[CL 24819452 by ryan schmidt in ue5-main branch]
2023-03-28 11:19:32 -04:00
jimmy andrews
5337719d2e Fix vox offset tool issues:
- Warn about artifacts on meshes with open boundaries
 - Fix some settings not being saved/restored
 - Fix transaction name on undo/redo not matching the tool name

Also: Make the asset warning for base interactive tool only clear the tool's display message if it set a display message when it was last called, so that it is less likely to clear unrelated display messages when called with no warning to display.

#jira UE-180838
#jira UE-180758
#jira UE-180838
#rb rinat.abdrashitov
#preflight 641be32f25389270b7300ae4

[CL 24783364 by jimmy andrews in ue5-main branch]
2023-03-24 14:05:46 -04:00
ryan schmidt
3880554a59 ModelingMode: preliminary support for selection transform visualization for Volumes and Static Meshes, and other minor improvements.
Add IGeometrySelectionTransformer::PreviewRender() API, for rendering info during selection transforms. Currently being called by  UGeometrySelectionManager::DebugRender() for active transforms.
FBasicDynamicMeshSelectionTransformer implements PreviewRender, draws selected mesh edges (tris as edges) and vertices, as well as affected edge ROI.
FDynamicMeshPolygroupTransformer overrides this behavior and draws polygroup edges/verts and edge ROI

FStaticMeshSelector and FVolumeSelector now create FDynamicMeshPolygroupTransformer for polygroup selections

FBasicDynamicMeshSelectionTransformer::bEnableSelectionTransformDrawing flag controls whether this edge drawing is enabled. Disabled on DynamicMeshComponent, enabled on StaticMesh and Volume.

Add Normals recomputation during tri and polygroup transforms in FBasicDynamicMeshSelectionTransformer and FDynamicMeshPolygroupTransformer

Add FGroupTopologyDeformer::EnumerateROIEdges() util function to support above

#rb none
#preflight 641cd27bc44ce895fc62f724

[CL 24780655 by ryan schmidt in ue5-main branch]
2023-03-24 12:08:43 -04:00
jimmy andrews
143d4cd0c4 add generated light map option to the modeling tools mesh creation settings + make the settings more consistently used by default
also, when creating a static mesh with lightmap enabled via modeling components, also set the lightmap channel and resolution to match the build settings values, to better match the importer results

#jira UE-143961
#8929
#rb ryan.schmidt
#preflight 6406adbf0c7df1967f461e2d

[CL 24542092 by jimmy andrews in ue5-main branch]
2023-03-07 12:04:54 -05:00
semion piskarev
6dd5376acb MeshModelingTools: Fix volumes always having per-triangle normals when not going through volume to mesh tool.
#rb Jimmy.Andrews
#jira UE-152032
#preflight 63f78bb0ae54ee4ce9599a84

[CL 24432234 by semion piskarev in ue5-main branch]
2023-02-27 16:25:17 -05:00
semion piskarev
51b9a59a53 MeshModelingTools: Fix depth bias issues that come about from MeshElementsVisualizer adjusting depth bias to be too high due to a setting that works poorly with percentage-wise depth offset. For now, just making it not user-visible and set to false. Will be deprecated and removed more thoroughly in a later CL.
#rb Ryan.Schmidt
#preflight 63f3db3a90198dffbaf83aac

[CL 24329160 by semion piskarev in ue5-main branch]
2023-02-20 17:59:42 -05:00
nathan mitchell
b27788dcea ModelingTools: Replaces the wireframe visuals in the UVLayoutPreview with an instance of MeshElementsVisualizer, instead of the built in wireframe provided by PreviewMesh. This helps address some of the visual z-fighting issues that were being seen and provides more control over the wireframe visuals.
#rb Jimmy.Andrews
#preflight 63f0072561378b7ea04b9209

[CL 24327480 by nathan mitchell in ue5-main branch]
2023-02-20 17:06:25 -05:00
jimmy andrews
d6daff005b Make mesh elements visualizer distinguish between normal and tangent seams like the mesh inspector does
#rb david.hill
#preflight 63ee4e7d500c05a6244b020b

[CL 24270353 by jimmy andrews in ue5-main branch]
2023-02-16 17:39:45 -05:00
nathan mitchell
59d1e663d4 ModelingTools: Adjust the behavior of the Mesh Visualizer settings to properly disable when the Visible property is checked off.
#rb rinat.abdrashitov
#jira UE-176245
#preflight 63e2d59a1466610c64a3a931

[CL 24110660 by nathan mitchell in ue5-main branch]
2023-02-09 19:36:31 -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
matija kecman
f05215f1c5 Render Capture Baking: Fix a crash which occurred because the SceneCapture state was not properly updated when its computation was cancelled
#jira UE-175047
#preflight 63d94591f626715201e45242

[CL 23933594 by matija kecman in ue5-main branch]
2023-01-31 14:12:46 -05:00
matija kecman
dfe144b82b Render Capture Baking: Remove sub-classing of BakeRC from UBakeMeshAttributeMapsToolBase and implement a few fixes
Fixed materials in the BakeRC tool missing UV layer switches or controls for brightness of the Base Color, Subsurface Color or Emissive channels
Removed the unused AO Multiplier setting that appeared in the Preview panel of the tool UI
Improved performance of BakeRC tool baking step by not recomputing the target mesh spatial index and uv charts
Improved the clarity of the analytics code since the sub-classing has enabled us to more easily use custom BakeRC analytics


#rb lonnie.li
#rnx
#preflight 63cfaa1ed83c1837b182104b
#jira none

[CL 23828120 by matija kecman in ue5-main branch]
2023-01-24 05:18:59 -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
9290a31c7e ModelingComponents: add FDynamicMeshPolygroupDeformer, applies GroupTopologyDeformer to a MeshSelection. Use in DynamicMeshSelector when selection has Polygroup topology.
#preflight 63cc5028f2318350a2597338
#rb none

[CL 23805236 by ryan schmidt in ue5-main branch]
2023-01-22 13:04:22 -05:00
ryan schmidt
10924781b2 ModelingMode: add support for Editor Marquee in new Mesh Selection system.
Add IGeometrySelector::UpdateSelectionViaShape() API, takes a FConvexHull to use as selection shape. Implement in DynamicMeshSelector.
Add UGeometrySelectionManager::UpdateSelectionViaConvex() API, calls above
ModelingToolsEditorMode now implements ILegacyEdModeSelectInterface, ::FrustumSelect() implementation calls above w/ frustum convex hull

Hide Marquee drag mode option, set default drag mode to "none"
Add save/restore of selection mode, drag mode, and volume/staticmesh toggles via UModelingToolsModeCustomizationSettings
Remove old selection toggle commands that were replaced w/ combined commands
Call DeleteSelectionCommand in UModelingToolsEditorMode::ProcessEditDelete() if there is an active selection

#preflight 63cac131fa66be4cc33661a9
#rb none

[CL 23796046 by ryan schmidt in ue5-main branch]
2023-01-20 15:30:23 -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
ryan schmidt
46630c002f ModelingMode: Selection system improvements. Add Disconnect command and various new Selection-Edit Commands
Add UInteractiveCommandResult, UInteractiveCommand::ExecuteCommand() now optionally can return a result subclass
Add UGeometrySelectionEditCommandResult, UGeometrySelectionEditCommand now can optionally return an "output" selection via this type
UGeometrySelectionManager::ExecuteSelectionCommand optionally can restore a selection after a command, via UGeometrySelectionEditCommandResult

Add UDisconnectGeometrySelectionCommand, implements disconnection of selected triangles (ie separates but not into a new mesh)
Add UModifyGeometrySelectionCommand, implements various selection edits (select all, expand to connected, invert, invert connected, expand, contract)
Add IGeometrySelector::InitializeSelectionFromPredicate() and ::UpdateSelectionFromSelection(), implement in UDynamicMeshSelector, used to implement selection edit commands
Add UI to enable new commands in Modeling Mode

#rb none
#preflight 63c047f4305002c64170f6a2

[CL 23667880 by ryan schmidt in ue5-main branch]
2023-01-12 14:52:52 -05:00