Commit Graph

39 Commits

Author SHA1 Message Date
2bb9a465e6 Fix T76498: Refactoring - Rename BKE modifiers funtions 2020-05-08 10:34:35 +02:00
aa2544793d Various typos fixes in UI messages. 2020-04-20 15:27:01 +02:00
600a627f6e Cleanup: use abbreviated names for unsigned types in editors 2020-04-03 16:21:24 +11:00
d52326bab3 Cleanup: spelling 2020-04-03 12:38:04 +11:00
9b0d72aa3d Cleanup: use sections for object_remesh.c
Add missing sections.
2020-04-01 11:29:45 +11:00
f9f0f44be8 Cleanup: quiet discarded-qualifiers, unused warnings 2020-04-01 10:50:21 +11:00
1c1a14dcdf Voxel Remesh: Edit Voxel Size operator
This operator lets the user control the voxel/detail size of the voxel remesher directly from the 3D view in a similar way the Brush radius and strength are controlled.  The shorcut from sculpt mode is Shift + R (similar to Shift + F for brush strength).
It shows a grid that represents the real voxel size of the object. The grid and the text are automatically aligned to the view to avoid rendering all voxels with thousands of lines.

It also has a slow mode when pressing shift that works like the slow mode of the brush radius control.

This operator controls the value changes sensitivity automatically to avoid jumping to extremelly high resolutions and run out of memory.
This way, adjusments done in lower voxel sizes are more precise. Pressing Ctrl disables this functionality and allows changing the voxel size directly in a linear way.

Reviewed By: jbakker, #user_interface, billreynish

Differential Revision: https://developer.blender.org/D6449
2020-03-31 17:31:13 +02:00
2d1cce8331 Cleanup: make format after SortedIncludes change 2020-03-19 09:33:58 +01:00
110a35ef5a Fix T74397: Crash after undoing quadriflow remesh on duplicate with armature deform
The issue was that we were creating temporary mesh copies and storing
them in bmain and then later using BKE_mesh_nomain_to_mesh which would
add them to bmain once more (duplicates).

This would lead to crashes later as the custom data of the mesh could be
trashed quite easily.
2020-03-13 16:29:30 +01:00
38d6533f21 Sculpt Face Sets
Face Sets are the new system to control the visibility state of the mesh in sculpt and paint modes. They are designed to work in modes where brushes are the primary way of interaction and they provide much more control when working with meshes with complex shapes and overlapping surfaces.

This initial commit includes:
- Sculpt Face Sets data structures and PBVH rendering.
- Face Set overlay and opacity controls.
- Sculpt Undo support.
- Remesher reprojection support. The visibility state of the mesh is also preserved when remeshing.
- Automasking and Mesh filter support.
- Mask expand operator mode to expand Face Sets (Shift + W) and flood fill areas by connectivity (press Ctrl while expanding).
- Sculpt Mode Face Sets and Visibility API.
- Sculpt Face Sets creation and visibility management operators.
- Operator to randomize the Face Sets colors.
- Draw Face Sets brush tool to create and edit the Face Sets. Drawing on the mesh creates a new Face Set. Pressing Ctrl before drawing modifies the Face Set under the brush at the beginning of the stroke.
- Updated keymap and menu to work with Face Sets from Sculpt Mode (H to toggle visibility, Alt + H to show all, Shit + H to hide).
- Pie menu on the W key with Face common Sets operations.

Know limitations:
- Multires support. The Face Sets and Visibility API needs to be implemented for Multires.

Reviewed By: jbakker, #user_interface, Severin

Differential Revision: https://developer.blender.org/D6070
2020-03-05 21:07:20 +01:00
a37dceb139 Cleanup: replace commented code with define check
Avoids duplicated comments,
also quiet warning accessing non-existing variable.
2020-03-04 11:05:08 +11:00
594945eb01 Fix T71871: Quadriflow remesh operator don't stack operations
Made an explicit call to the exec function be a blocking call and a call
from invoke (or otherwise) be nonblocking.

Reviewed By: Bastien

Differential Revision: http://developer.blender.org/D7006
2020-03-03 15:30:29 +01:00
1ba4aa37c9 Remove the "use mesh curvature" option from quadriflow
It sometimes caused the solver to get into an seemingly unrecoverable
state and crash. Therefore I will disable this feature for now.
2020-03-03 15:30:29 +01:00
d119e163d0 Fix many typos and other issues in UI messages. 2020-02-17 13:01:07 +01:00
56116bbdf4 Cleanup/refactor: Rename BKE_library files to BKE_lib.
Note that `BKE_library.h`/`library.c` were renamed to
`BKE_lib_id.h`/`lib_id.c` to avoid having a too generic name here.

Part of T72604.
2020-02-10 13:00:42 +01:00
3788901107 Cleanup: fix compiler warnings 2020-01-27 12:19:49 +01:00
693d891703 Cleanup: used BKE_mesh_ prefix
Missed in recent BKE_remesh renaming.
2019-11-25 15:49:25 +11:00
2ecb664520 Cleanup: rename mirror -> mesh_mirror
The term mirror on it's own is too ambiguous, use BKE_mesh prefix.
2019-11-22 13:15:04 +11:00
858bd1d4d0 Fix assert running remesh with OpenVDB disabled 2019-11-20 14:54:50 +11:00
d124545013 Fix wrong name for QuadriFlow undo step 2019-11-18 22:43:30 +11:00
9b6aa740be Cleanup: remove redundant NULL checks 2019-10-28 00:40:51 +11:00
abc36cad83 Sculpt: Fix projection artifacts by changing the voxel remesh isovalue
This should fix most of the shrinkwrap artifacts when the preserve volume option is active. After this commit the default voxel remehser settings should not fail in the default cube.

Reviewed By: zeddb

Differential Revision: https://developer.blender.org/D6010
2019-10-08 15:58:16 +02:00
fc9e921495 Simplify the quadriflow manifold mesh function for loops
No need to iterate over all polygons if we just want to iterate over all
face loops anyways.
2019-10-07 18:14:30 +02:00
f025b625f4 Fix T70095: Quadriflow crash running on a messy mesh
Quadriflow does not support non manifold meshes. (Edges with > 3
connected faces and discontinuous face normal directions)

While it does sometimes "work" in these configurations, the results are
not good and in most cases it just flat out will crash.

Added a sanity check to make sure that the input mesh is manifold.

Reviewed By: Brecht

Differential Revision: http://developer.blender.org/D5877
2019-10-04 14:25:34 +02:00
6db6267d85 Sculpt: Disable remesh operators with Multires
Reviewed By: brecht

Differential Revision: https://developer.blender.org/D5964
2019-10-03 15:28:35 +02:00
3052229264 Fix T70358: Use face count in Quadriflow by default
Reviewed By: brecht

Maniphest Tasks: T70358

Differential Revision: https://developer.blender.org/D5958
2019-10-02 16:04:48 +02:00
c372318165 Voxel remesh: Enable adaptivity
This commit enables OpenVDB adaptivity in the voxel remesher. It can be useful to reduce the polygon count if you want to switch to dyntopo after using the voxel remesher workflow.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D5918
2019-09-27 19:12:51 +02:00
7ae549448e Fix T70291: Sculpt remesh inverts normal when fix poles is activated
Reviewed By: brecht

Maniphest Tasks: T70291

Differential Revision: https://developer.blender.org/D5916
2019-09-27 17:50:12 +02:00
97f4d4c66e Fix T70280: QuadriFlow remesh with "Use Paint Symmetry" and "Smooth Normals" may give wrong normals
Reviewed By: jbakker

Maniphest Tasks: T70280

Differential Revision: https://developer.blender.org/D5904
2019-09-27 17:46:56 +02:00
e5c9bf3aa2 Quadriflow: Symmetry support
This patch adds paint symmetry support to Quadriflow. It bisects and mirrors the input and the output from the remesher to build the final mesh using the preserve boundary option.
This is also an important performance improvement in Quadriflow because it only needs to process half of the mesh with half the resolution.

Reviewed By: jbakker

Differential Revision: https://developer.blender.org/D5855
2019-09-26 16:43:35 +02:00
454c1a5de4 Voxel Remesh: Fix poles and preserve volume
This commit fixes most of the issues we currently have in the voxel remesher. Mesh volume is preserved when doing multiple iterations, so the sculpt won't shrink and smooth each time you run the remesher. Mesh topology is much better, fixing most issues related to mask extraction and other topology based operations.

Reviewed By: jbakker

Differential Revision: https://developer.blender.org/D5863
2019-09-26 16:30:25 +02:00
85acd72c9b Fix remesher operator poll function
This commit also removes the name "voxel" from the messages because this function
is now used for the voxel remesher and quadriflow.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D5842
2019-09-18 19:45:58 +02:00
8c0dea72b6 Fix segfault when polling OBJECT_OT_voxel_remesh without active object
The active object can be `NULL`, which causes a segfault in
`BKE_object_is_in_editmode(NULL)` (and if that were made NULL-safe, the
segfault would happen further down in `object_remesh_poll()`).
2019-09-18 10:23:42 +02:00
57e55906f0 Add QuadriFlow remesher 2019-09-13 10:36:05 +02:00
d42a23b31a Cleanup: remove tessface loop from set-smooth function 2019-08-25 12:08:18 +10:00
f8920bd8c7 Cleanup: fix compiler warnings 2019-08-16 12:44:06 +02:00
655f5818a5 Cleanup: use BKE_mesh_ prefix for the remesh API
These functions deal with voxel remeshing of Mesh data,
and aren't related to MOD_remesh.c for e.g.

Name so other kinds of remeshing wont cause confusion.
2019-08-15 04:46:51 +10:00
76e5b4bee4 Fix T68657: Voxel remesh crash
Mesh was being double freed.
2019-08-15 03:51:06 +10:00
45a45f7d66 OpenVDB: Voxel Remesher
The voxel remesher introduces a new workflow for sculpting without any of the limitations of Dyntopo (no geometry errors or performance penalty when blocking shapes). It is also useful for simulations and 3D printing.

This commit includes:
- Voxel remesh operator, voxel size mesh property and general remesh flags.
- Paint mask reprojection.
- Geometry undo/redo for sculpt mode. This should support remesh operations as well as future tools that modify the topology of the sculpt in a single step, like trimming tools or mesh insert brushes.
- UI changes in the sculpt topbar and the mesh properties pannel.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D5407
2019-08-14 18:58:19 +02:00