Commit Graph

82 Commits

Author SHA1 Message Date
tyson brochu
1afdece4bc Fix crash when setting subdivision level too high. Cap the subdivision level in SubdividePolyTool.
Also fix a bug applying Loop subdivision to a non-compact mesh.

#jira UE-104210
#rnx
#rb david.hill

[CL 15068325 by tyson brochu in ue5-main branch]
2021-01-13 12:43:27 -04:00
Ryan Schmidt
d9074a55e2 ModelingTools: add target component as invisible hit-test target in PolyCut, so that ctrl-click-to-set-plane mechanic works on selected object
#rb none
#rnx
#jira UE-104123

[CL 15001131 by Ryan Schmidt in ue5-main branch]
2021-01-06 14:39:38 -04:00
Jimmy Andrews
014eba1201 boolean option for polycut
+ also improves texturing options for generalized cylinder (needed b/c that's what we use to make the cutting geometry)
 + also separates the "embedded edges" concept from the "error / problem" edges, and always visualizes the embedded edges (for the boolean, these are different edges; also visualizing the embedded edges makes it a lot easier to understand what the "Insert Polygon" option is doing)

#rb david.hill

[CL 14872192 by Jimmy Andrews in ue5-main branch]
2020-12-07 15:18:20 -04:00
Ryan Schmidt
38099b02b7 ModelingComponents: don't try to fast update if a MeshPostProcessor is enabled on SimpleDynamicMeshComponent
#rb tyson.brochu
#rnx
#jira none

[CL 14850007 by Ryan Schmidt in ue5-main branch]
2020-12-03 17:40:22 -04:00
semion piskarev
180ab5a9ef Made Interactive Tools Framework capable of operating on arbitrary tool targets that implement the proper interfaces. Made MeshToVolume tool use this system.
#rb Ryan.Schmidt
#rnx
#jira none

[CL 14843335 by semion piskarev in ue5-main branch]
2020-12-03 09:48:56 -04:00
tyson brochu
f383fcf753 Subdivide tool: If the mesh to be subdivided doesn't have polygroup topology suitable for Catmull-Clark, display a warning and allow the user to only use Loop subdivision. (Previous to this change, the tool would just display a warning and fail to initialize.)
#rb ryan.schmidt

[CL 14835882 by tyson brochu in ue5-main branch]
2020-12-02 12:25:59 -04:00
Ryan Schmidt
58ce644f06 GeometryProcessing: add support for additional Polygroup layers in DynamicMeshAttributeSet.
- add Name FName to TDynamicAttributeBase, update Copy functions in various subclasses to copy this name
- add PolygroupLayers array to FDynamicMeshAttributeSet, add code get/set, call update functions where necessary. Also move some existing function implementations to cpp file
- update TDynamicMeshAttributeChange, DynamicMeshEditor to handle these new attributes
- AttributeEditorTool now creates polygroup layers as Triangle attributes
- MeshDescriptionToDynamicMesh now creates PolygroupLayer attributes from any non-reserved Triangle int32 attributes
- DynamicMeshToMeshDescription now syncs PolygroupLayer attributes with MeshDescription in new ConvertPolygonGroupLayers() function
- add TSet variant of FMeshConnectedComponents::GrowToConnectedTriangles

#rb jimmy.andrews
#rnx
#jira none

[CL 14816587 by Ryan Schmidt in ue5-main branch]
2020-11-26 20:12:25 -04:00
Marc Audy
a7f9391231 Merge UE5/Release-Engine-Staging @ 14811410 to UE5/Main
This represents UE4/Main @ 14768117

For ReleaseObjectVersion.h
#lockdown Marcus.Wassmer

[CL 14811440 by Marc Audy in ue5-main branch]
2020-11-24 18:42:39 -04:00
tyson brochu
f53d8bd3c1 Add bilinear and Loop subdivision options to subdivide poly tool.
Add option to toggle cage rendering.

#jira UETOOL-2771
#rb jimmy.andrews

[CL 14810748 by tyson brochu in ue5-main branch]
2020-11-24 16:01:01 -04:00
semion piskarev
dfb60a6f4d MeshModelingTools: Split VolumeDynamicMeshConversion into runtime and editor-only parts. Also moved VolumeToMeshTool to not be editor-only now that it is safe to do so, and moved the PlanarFlipsOptimization function into an accessible file.
#rb Jimmy.Andrews
#jira none
#rnx

[CL 14782737 by semion piskarev in ue5-main branch]
2020-11-18 17:44:22 -04:00
tyson brochu
b798060859 Replace DynamicMeshComponent and PreviewMeshActor with a UPreviewMesh.
#rnx
#rb jimmy.andrews
#jira none

[CL 14765525 by tyson brochu in ue5-main branch]
2020-11-17 15:49:38 -04:00
semion piskarev
ddeea7059e MeshModelingTools: Added marquee select of vertices and edges in PolyEdit tool. Also refactored the selection mechanic to handle its own behaviors and adusted the using tools.
#rb Jimmy.Andrews, Tyson.Brochu
#jira UETOOL-2393
#rnx

[CL 14744531 by semion piskarev in ue5-main branch]
2020-11-13 12:09:55 -04:00
tyson brochu
d9a5d9f702 Fix possible dereferencing a nullptr
#jira UE-103026
#rb ryan.schmidt

[CL 14742899 by tyson brochu in ue5-main branch]
2020-11-12 23:01:08 -04:00
tyson brochu
f615af570a Add a prototype Subdivide tool that converts a Group Topology into a smooth mesh.
#jira UETOOL-2408
#rb jimmy.andrews ryan.schmidt
#rnx

[CL 14720377 by tyson brochu in ue5-main branch]
2020-11-11 12:24:31 -04:00
Marc Audy
68150e0be7 Merge UE5/Release-Engine-Staging to UE5/Main @ 14611496
This represents UE4/Main @ 14594913

[CL 14612291 by Marc Audy in ue5-main branch]
2020-10-29 13:38:15 -04:00
Marc Audy
4c1bb11c29 Merge UE5/Release-Engine-Staging to UE5/Main @ 14548662
This represents UE4/Main @ 14525125 + cherrypicked fixes
#skipundocheck

[CL 14551026 by Marc Audy in ue5-main branch]
2020-10-22 19:19:16 -04:00
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
semion piskarev
6675f71238 MeshModelingTools: Added a ComponentTarget that allows our tools to operate on volumes.
#rb Ryan.Schmidt
#rnx
#jira none

[CL 14312138 by semion piskarev in ue5-main branch]
2020-09-14 15:58:34 -04:00
brooke hubert
e85ae49f14 The EditorToolsContext is now owned by the mode manager.
Updated Mesh Paint, geometry, arch gen, hair lab, and sample editor modes to reflect changes to the tools context ownership.

#Jira UE-96448
#rb lauren.barnes michael.daum
#fyi ryan.schmidt simon.barsky jack.greasley
#review-14189762
#review-14189796
#review-14189767
#review-14189774
#review-14189785

[CL 14247116 by brooke hubert in ue5-main branch]
2020-09-02 15:43:58 -04:00
Marc Audy
7379fa99c5 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14229157
[CL 14233282 by Marc Audy in ue5-main branch]
2020-09-01 14:07:48 -04:00
brooke hubert
48113fc77e Adding EditorFramework to build.cs files
#rnx
#Jira UE-96448
#rb chris.gagnon

[CL 14114839 by brooke hubert in ue5-main branch]
2020-08-14 13:24:16 -04:00
Marc Audy
a7c9001a94 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14075166
#rb
#rnx

[CL 14075271 by Marc Audy in ue5-main branch]
2020-08-11 01:36:57 -04:00
Richard TalbotWatkin
51d4cb3f66 Fully deprecated old MeshDescription APIs.
Prepared direct attribute access for deprecation, preferring use of APIs to access static mesh attributes.
Fixed recently merged Enterprise code to comply with new APIs.
Changed all tools to use triangle-centric iteration where possible.
Added new MeshAttributeArray APIs for querying attribute flags, and added a new Mandatory flag.
Various bug fixes.
#rb Alexis.Matte

[CL 13873755 by Richard TalbotWatkin in ue5-main branch]
2020-07-16 08:23:15 -04:00
Marc Audy
11f5b21210 Merging //UE5/Release-Engine-Staging @ 13752110 to Main (//UE5/Main)
#rnx

[CL 13753156 by Marc Audy in ue5-main branch]
2020-06-23 18:40:00 -04:00
Richard TalbotWatkin
4884bf9d9a First pass of MeshDescription API and format refactor.
- Removed hardcoded element type arrays (Vertices, Edges, Triangles etc.). Mesh element types can now be arbitrarily added, with any number of channels.
- Mesh element containers have a much leaner format; instead of sparse arrays, they are now represented by a simple bitarray, determining whether an index is used or not. Consequently, mesh topology is now entirely described with the attribute system, e.g. edge start and end vertices, triangle vertices, etc.
- Support added for attributes of arbitrary dimensions, e.g. float[4] or int[2].
- Support added for attributes which index into another mesh element container.
- Added FMeshElementIndexer: this is an efficient container for maintaining backward references from one element type to another; for example, edges have an attribute specifying which vertices are at each end (an attribute of type FVertexID[2]). With an indexer, it is possible to look up which edges contain a given vertex, even though this is not explicitly stored. Indexers are designed to do minimal allocations and update lazily and in batch when necessary.
- Added support for preserving UV topology in static meshes. UVs are now a first-class element type which may be indexed directly from triangles.
- Added the facility to access the underlying array in an attribute array directly.
- Triangles now directly reference their vertex, edge and UV IDs. Vertex instances are to be deprecated.
- Changed various systems to be triangle-centric rather than polygon-centric, as this is faster. Triangles are presumed to be the elementary face type in a MeshDescription, even if polygons are still supported. The concept of polygons will be somewhat shifted to mean a group of triangles which should be treated collectively for editing purposes.
- Optimised normal/tangent generation and FBX import.
- Deprecated EditableMesh, MeshEditor and StaticMeshEditorExtension plugins - these are to be removed, but they still have certain hooks in place which need removing.
#rb

[CL 13568702 by Richard TalbotWatkin in ue5-main branch]
2020-05-28 10:56:57 -04:00