Commit Graph

4629 Commits

Author SHA1 Message Date
Hans Goudey
d260ba0cdb Cleanup: Use C++ random number generator 2024-12-04 11:29:28 -05:00
Hans Goudey
4ded260cf3 UI: Allow setting active modifier on linked object
The poll function doesn't apply here because it just checks for object
editability and edit mode, object types, and modifier types. We shouldn't
have a poll function at all because the hovered modifier might not be
part of the context.

Resolves #90008.

Pull Request: https://projects.blender.org/blender/blender/pulls/131384
2024-12-04 16:43:13 +01:00
Campbell Barton
ababc2e01b Fix #120778: depth navigation ignores camera & light objects
Restore overlay depth drawing which was removed in [0].
For viewport navigation this is useful. Disable overlays
for other operations such as painting & object placement.

Also disable color drawing in the overlay_next engine drawing
when drawing depth, since it caused the viewport to show a
checkered backdrop.

Details:

A boolean argument has been added to ED_view3d_depth_override instead
of new enums in eV3DDepthOverrideMode since mixing object-filtering
and draw-type in the one enum gets verbose & awkward, where most
existing enums would have needed to include NO_OVERLAY in their name.

V3D_DEPTH_NO_OVERLAYS has been renamed to V3D_DEPTH_ALL,
the caller must pass in use_overlay as false.

[0]: 5fea1eda36
2024-12-03 11:00:27 +11:00
Philipp Oeser
a0c0eefd5d Fix #106849: Sculpt Edit Voxel Size text too big (applies UI scale twice)
There has already been some work on the placement/size of the text
displayed by the Edit Voxel Size operator (see b65ab29310 &
0c98bb75cb), so it already sets up a suiting matrix in
`VoxelSizeEditCustomData` > `text_mat`. This includes having called
`ED_view3d_pixel_size` and this takes into account the UI resolution
scale already afaict.

So in order to resolve, just remove the multiplication by UI_SCALE_FAC.

Fixes #106849

Pull Request: https://projects.blender.org/blender/blender/pulls/131093
2024-12-02 20:04:03 +01:00
Hans Goudey
953c4f1599 Cleanup: Remove references to legacy Grease Pencil object
These are converted on startup to the new type. There are still
some references left, mostly where it looked like there still needs
to be changes to properly deal with the new object type.
2024-11-27 09:17:16 -05:00
Philipp Oeser
1448967287 Fix #130748: selection of bones in grease pencil weightpaint mode fails
Two places that were not ready for GPv3:
- armatures were not set to posemode when entering weightpaint
- armatures were not in the object list when OpenGL selecting (thus
their bones were missing)

Both of them because existing code only respected
`eModifierType_Armature` (and not `eModifierType_GreasePencilArmature`
as well).

This is now corrected.

Similar to bdfb3ea6e7

Pull Request: https://projects.blender.org/blender/blender/pulls/130908
2024-11-27 14:44:26 +01:00
Campbell Barton
b9f055459a Cleanup: ensure trailing space around comment blocks 2024-11-27 19:01:00 +11:00
Hans Goudey
421e1a0c24 Cleanup: Replace some uses of GSet and GHash with C++ classes
For type safety and potentially improved performance.

Pull Request: https://projects.blender.org/blender/blender/pulls/130796
2024-11-23 17:00:21 +01:00
Hans Goudey
129a2aa0f4 Refactor: Move region runtime data out of DNA
Pull Request: https://projects.blender.org/blender/blender/pulls/130303
2024-11-21 19:34:53 +01:00
Harley Acheson
7c81ec922c UI: Calm Warning in #130617 About Variable Mismatch
Fix compiler warning about variable mismatch (int versus uint) in
commit bc5fcbe1c3.

Pull Request: https://projects.blender.org/blender/blender/pulls/130633
2024-11-20 22:58:43 +01:00
Harley Acheson
bc5fcbe1c3 UI: Notification When Hiding Objects
This shows a "2 object(s) hidden" notification on the status bar when
hiding objects, the same as we do when deleting objects.  Pressing "H"
can be done accidentally so this is at least some indication of what
happened, both on the status bar in Info Editor. Obviously does nothing
if nothing is selected when you press "H"

Pull Request: https://projects.blender.org/blender/blender/pulls/130617
2024-11-20 20:10:51 +01:00
Bastien Montagne
c51615923b Fix #130420: Undo/Redo broken when using Transfer Mode operator.
Regression from 9e0b673467.

Not sure why the extra undo step is required after changing active object
(maybe because the mode switching to Sculpt mode of the new object
generates a 'Sculpt' undo step and not a 'Global' one?).

Pull Request: https://projects.blender.org/blender/blender/pulls/130472
2024-11-20 12:43:12 +01:00
Jacques Lucke
e62aa986b2 Format: use fmt::format correctly with runtime format strings
The `fmt::format` can process the format string at compile time. Currently, we
don't seem to be using that as we don't use `FMT_STRING`. Starting with C++20,
that will be the default though, and one has to explicitly opt out in places
where the string is not known at compile time using `fmt::runtime(...)`.
Currently, our code does not compile as C++20 because of that. Unfortunately, we
have many places with runtime format strings, because of i18n.

Pull Request: https://projects.blender.org/blender/blender/pulls/130392
2024-11-20 10:41:29 +01:00
Sean Kim
c88c2bfda9 Cleanup: Convert BKE_multires.hh enum to enum class
Pull Request: https://projects.blender.org/blender/blender/pulls/130363
2024-11-16 23:16:37 +01:00
Christoph Lendenfeld
b38d8ecb86 Refactor: move keyingsets to animrig
No functional changes intended.

This patch moves the relevant keying set code from editors to animrig.
All functions are in the animrig namespace, and as such have lost their
`ANIM_` prefix.
Other than that, the code has been moved as is into `animrig/intern/keyingsets.cc`

Note that I also had to move `id_frame_has_keyframe` and `fcurve_frame_has_keyframe`.
I moved that into `ANIM_keyframing.hh` and `ANIM_fcurve.hh` since I found that more fitting.

Due to Windows defining `DELETE` as macro I had to rename `ModifyKeyMode::DELETE`
to `ModifyKeyMode::DELETE_KEY`

As a result of this two includes from animrig to editors were removed.

This is part of #121336

Pull Request: https://projects.blender.org/blender/blender/pulls/129980
2024-11-15 10:51:41 +01:00
Hans Goudey
0684639e1b Cleanup: Grease Pencil: Remove indirect includes from headers
To avoid unnecessary header parsing during compilation.

Pull Request: https://projects.blender.org/blender/blender/pulls/130285
2024-11-14 22:07:19 +01:00
Hans Goudey
cb62d74658 Merge branch 'blender-v4.3-release' 2024-11-14 11:26:37 -05:00
Hans Goudey
a9209f10a6 Fix #130250: Modifier copy to selected crash using quick favorites
The rest of this function has null checks for the modifier because it
might not be part of the context and retrieved during invocation later.

Pull Request: https://projects.blender.org/blender/blender/pulls/130272
2024-11-14 16:04:19 +01:00
Sean Kim
6b7ba4c726 Refactor: Sculpt: Avoid storing extra undo data on geometry_push
Currently, Sculpt Mode's UndoStep stores two main categories of data,
the first category is valid for undo pushes where individual nodes of a
mesh are modified, the second category is when the entire mesh is
changed.

To avoid extra processing of data and move towards reducing and
simplifying the amount of data each of these types of undo operations
need, this commit strips down the data stored when a geometry_push step
is called.

Additionally, there are some areas in the code which called
`BKE_sculpt_update_object_for_edit` as a requirement for the undo step
data, these calls have been removed.

---

Testing:
* Undo / Redo on mesh with color attributes and performing remesh operations
* Undo / Redo with shape key data
* Undo / Redo with trim tools
  * Base Mesh
  * Deform Modifier

Pull Request: https://projects.blender.org/blender/blender/pulls/129828
2024-11-14 02:07:38 +01:00
Bastien Montagne
2d6fdb8d01 Merge branch 'blender-v4.3-release' 2024-11-13 16:33:58 +01:00
Bastien Montagne
a090ae3318 Fix #125787: Textures don't load for brushes when using "Use Relative Paths" option.
Use new `_in_lib` BKE_image API to re-use or load an image from/in the
expected library, including using the library path as root path for
relative file paths handling.

Using the new `BKE_image..._in_lib` API also allows to get rid of the
`check_exists` 'hack' introduced in `image_open_exec` (when support to
edit some linked data was added, in 5f9f3116db) to avoid re-using local
Image IDs for editable linked data (brush assets), since
`BKE_image_load_exists_in_lib` will now ensure to only re-use an Image
ID if it matches the target library.

This commit also simplifies/makes `ED_image_filesel_detect_sequences`
signature more to the point. It replaces the `Main` parameter by a mere
`root_path` string. The given `bmain` was indeed only used to extract
(again) a base for relative paths.

NOTE: The general idea of this fix is the same as in PR !130058, thanks
to Sean Kim for the investigation and initial fix.

Pull Request: https://projects.blender.org/blender/blender/pulls/130197
2024-11-13 16:32:33 +01:00
Bastien Montagne
b325142d17 Merge branch 'blender-v4.3-release' 2024-11-12 16:55:40 +01:00
Bastien Montagne
0b3a7cbe69 Cleanup: Move BKE_image.h and related headers to C++.
NOTE: This also required some changes to Cycles code itself, who is now
directly including `BKE_image.hh` instead of declaring a few prototypes
of these functions in its `blender/utils.h` header (due to C++ functions
names mangling, this was not working anymore).

Pull Request: https://projects.blender.org/blender/blender/pulls/130174
2024-11-12 16:53:54 +01:00
Falk David
0e37d6fd3d Merge branch 'blender-v4.3-release' 2024-11-12 11:57:45 +01:00
Falk David
32c76ee768 Fix: GPv3: Unused parameter in remove_from_vertex_group
Caused by 5585d29d30.
Forgot to remove the parameter.
2024-11-12 11:56:59 +01:00
Pratik Borhade
5585d29d30 Fix: GPv3: Vertex group functions edit all keyframes
Instead of looping through all drawings in the vertex group kernel
function, loop through all/visible drawings in the operators and
pass a single drawing to `remove_from_vertex_group`.

Continuing !129789.

Co-authored-by: Falk David <falk@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/129890
2024-11-12 10:44:59 +01:00
Hans Goudey
312052112a Cleanup: Remove references to legacy Grease Pencil type
See #123468.

Pull Request: https://projects.blender.org/blender/blender/pulls/130151
2024-11-11 19:11:03 +01:00
Falk David
4b1d542363 Merge branch 'blender-v4.3-release' 2024-11-08 13:14:49 +01:00
Falk David
f0614a4a3f Fix: GPv3: Regression when applying modifiers after recent commit
This was caused by 9a03f283e8.

The change disregarded the `orig_layers_to_apply` mask and
introduced some issues regarding clearing keyframes of deleted layers.

The fix does two things:
 * Add a `orig_layers_to_apply` set that contains the pointers of the
   original layers that we want to apply.
* Add a `orig_layers_to_clear` set that contains the pointers of original
  layers that need their keyframe cleared.

When a layer is removed during modifier execution, we don't want
the layer to be deleted in the original geometry. Instead we clear
the keyframes by deleting all the curves geometry. A layer
can be removed by e.g. using the  `Grease Pencil to Curves` node to
get curve instances, then the `Delete Geometry` node to delete
some instances, and finally `Curves to Grease Pencil` to convert back
to Grease Pencil.

Pull Request: https://projects.blender.org/blender/blender/pulls/130028
2024-11-08 13:08:58 +01:00
Lukas Tönne
021e010a07 Merge branch 'blender-v4.3-release' 2024-11-08 10:22:58 +01:00
Lukas Tönne
9a03f283e8 Fix #129346: GPv3: Merge layers into correct groups when applying modifier
Applying a modifier on Grease Pencil objects tries to maintain the
original layer order by inserting each layer after the previous. This
ignores layer groups and all layers get move to the root group.
This patch replaces the simple `previous_node` with a per-group pointer
map, which maintains order within each group only.

The code is also creating new layers when the original node of the same
name is a group. This was creating duplicate names which are not allowed
and break various things (layer editing buttons, panel open/close
toggles, etc.). Now these new layer names are made unique to avoid a
name conflict.

One remaining issue is that mixed layer/group ordering is lost: All the
layers get pushed to the bottom of the stack, due to the way
`geometry::merge_layers` ignores layer groups. The existing groups in
the orig data are not sorted along with the evaluated layers, so they
move to the top of the stack. This requires changes to `merge_layers`
and should be handled separately.

Pull Request: https://projects.blender.org/blender/blender/pulls/129943
2024-11-08 08:28:06 +01:00
Jacques Lucke
fee02cc224 Fix #129871: converting linked text to mesh results in empty mesh
Similar to other bugs caused by ada367a0e9 (e.g.
ff9de2f7da9dcec96692355a67a7e7e280c223a7), the issue is that the object is
tagged for changes before retrieving its evaluated state.

I can't say I fully understand the all the code path for the object conversion
already. However, the change seems to make sense based on the `/* other users
*/` comment right above the change.  Also, the selected object is tagged again
further down in my test anyway.

Pull Request: https://projects.blender.org/blender/blender/pulls/129948
2024-11-07 14:00:21 +01:00
Jacques Lucke
a7d689f831 Fix #129871: converting linked text to mesh results in empty mesh
Similar to other bugs caused by ada367a0e9 (e.g.
ff9de2f7da9dcec96692355a67a7e7e280c223a7), the issue is that the object is
tagged for changes before retrieving its evaluated state.

I can't say I fully understand the all the code path for the object conversion
already. However, the change seems to make sense based on the `/* other users
*/` comment right above the change.  Also, the selected object is tagged again
further down in my test anyway.

Pull Request: https://projects.blender.org/blender/blender/pulls/129948
2024-11-07 13:59:02 +01:00
Pratik Borhade
2d37a3a1a7 Merge branch 'blender-v4.3-release' 2024-11-06 20:28:26 +05:30
Pratik Borhade
496023691c Fix: Unused parameter warning
Caused by 40162873e0

Pull Request: https://projects.blender.org/blender/blender/pulls/129910
2024-11-06 15:54:42 +01:00
Richard Antalik
f27220f6b6 Merge branch 'blender-v4.3-release' 2024-11-06 05:44:11 +01:00
Pratik Borhade
40162873e0 Fix #129632: GPv3: Vgroup operation edits drawings from all keyframes
Verge groups operations such as assign/remove/select/deselect from data
properties tab edits all drawings instead of visible drawings at current
frame. Now fixed with `retrieve_editable_drawings`.
For remove/remove_from operator, separate PR is created: !129890

Pull Request: https://projects.blender.org/blender/blender/pulls/129789
2024-11-06 04:16:48 +01:00
Sean Kim
9ceb33fedb Merge branch 'blender-v4.3-release' 2024-11-04 10:52:19 -08:00
Sean Kim
426ed8c61e Fix #129425: Using Voxel Remesh in sculpt mode can crash
When using the Voxel Remesh operator, there are two possible sources of
crashes currently:
* TBB task stealing in nested parallel loops with thread local data
* Null dereference of PBVH data when pushing sculpt undo steps

To fix the former issue, this commit guards the
`threading::parallel_for` internal function with
`threading::isolate_task` to prevent possible task stealing and
corruption of the thread local data.

Additionally, it has the effect of fixing debug asserts inside
`array_utils::gather` due to the this task stealing.

To fix the latter issue, this commit adds a call to
`BKE_sculpt_update_object_for_edit` to ensure that this data is
populated.

Pull Request: https://projects.blender.org/blender/blender/pulls/129704
2024-11-04 19:50:34 +01:00
Xavier Hallade
57a7a940e1 Merge branch 'blender-v4.3-release' 2024-11-04 11:34:05 +01:00
Marco Rotili
b6481372b9 Fix #129629: Crash when applying Geometry Nodes modifier on all keyframes on a Grease Pencil object
The input `md_eval` is invalidated when calling `BKE_scene_graph_update_for_newframe`.

The fix uses `BKE_modifier_get_original` to pass the original modifier
to `apply_grease_pencil_for_modifier_all_keyframes` then calls `BKE_modifier_get_evaluated`
after `BKE_scene_graph_update_for_newframe` to ensure the `md_eval` pointer is valid.

Pull Request: https://projects.blender.org/blender/blender/pulls/129732
2024-11-04 10:38:46 +01:00
Hans Goudey
a804320138 Cleanup: Remove unused grease pencil legacy handling in some operators
See #123468.
2024-11-02 23:14:41 +01:00
Hans Goudey
a8f41a618c Cleanup: Remove unused GP V2 transform, curve edit code
See #123468.

Pull Request: https://projects.blender.org/blender/blender/pulls/129731
2024-11-02 22:24:59 +01:00
Campbell Barton
77a4954b68 Merge branch 'blender-v4.3-release' 2024-10-31 18:52:19 +11:00
Campbell Barton
5b53ff078d Fix "Apply Modifier as Shape" ignoring Alt to apply to selected
The property was set & checked but the operator didn't define it.
2024-10-31 18:45:46 +11:00
Campbell Barton
1d1da80c08 Merge branch 'blender-v4.3-release' 2024-10-23 12:29:55 +11:00
Philipp Oeser
ef6a035884 Fix #129200: Transfer Mode operator can be used on already active object
If source and destination objecs are the same, we can just early out
(dont even need a report message for this I think).

Pull Request: https://projects.blender.org/blender/blender/pulls/129208
2024-10-22 21:03:30 +02:00
Bastien Montagne
0c6f0aa07b Merge branch 'blender-v4.3-release' 2024-10-16 17:32:32 +02:00
Bastien Montagne
a153809829 Fix #128704: Make liboverride keeps linked object in 'main' Scene collection.
Scene itself (and therefore its main collection) was not remapped from
linked objects to the newly created liboverrid ones.
2024-10-16 17:32:04 +02:00
Jesse Yurkovich
619a295922 Merge branch 'blender-v4.3-release' 2024-10-15 11:25:42 -07:00