Commit Graph

41419 Commits

Author SHA1 Message Date
Campbell Barton
49bf7ebbdd Cleanup: use const args & variables, remove redundant checks
- Declare const variables & arguments.
- Remove redundant null checks.
- Remove break after return.
- Replace suspicious "&" with "&&".
2024-04-15 09:50:47 +10:00
Hans Goudey
740d1fbc4b Geometry Nodes: Log socket values for node tools
To ease the process of debugging a node group while creating
a node tool, while the group is visible in a node editor, log the socket
values from its last execution. The values are only logged for the
active object is nothing selected. The Viewer node is still not supported
because visualization would probably be very tricky.

Pull Request: https://projects.blender.org/blender/blender/pulls/120596
2024-04-14 16:47:46 +02:00
Campbell Barton
c31b4b810c Cleanup: pass by const reference instead of value 2024-04-14 23:09:35 +10:00
Campbell Barton
a70d6d79dd Cleanup: various non-functional C++ changes 2024-04-14 12:24:17 +10:00
Hans Goudey
c91449836a Cleanup: Move BKE_workspace.h to C++ 2024-04-12 17:03:18 -04:00
Hans Goudey
75077a8b0e Refactor: Move node tools OperatorComputeContext to blenkernel
For socket value logging this needs to be used in a couple other places.
Also remove the operator name argument. For the forseable future this
will only be used with the existing node tools operator anyway.
2024-04-12 16:16:55 -04:00
Germano Cavalcante
f38c4d42bd Fix #120244: Snap cursor does not work in some Quad-View regions
The xy coordinates depend on the region, so we need to make sure we
pass the correct region.
2024-04-12 15:01:38 -03:00
Dalai Felinto
3399f75150 Extensions: Rename Update Repository operator
Follow up for: blender/blender-addons-contrib@d5862549d3
2024-04-12 18:20:01 +02:00
Lukas Tönne
77451ea83f Fix #120542: Add a poll function to GPv3 sculpt mode keymap
The sculpt mode keymap needs a poll function to avoid showing tools like
the radial controls in object mode.

Pull Request: https://projects.blender.org/blender/blender/pulls/120588
2024-04-12 17:50:38 +02:00
Germano Cavalcante
c30afb7bf6 Fix #118694: snap cursor sometimes doesn't update when dragging and dropping assets
The problem happens because, on some OSs, `wm->winactive` is `nullptr`.

Another problem is that `wm->winactive->eventstate` sometimes does not
update when the mouse moves. This happens in some OSs when the cursor
is not over the active window. So the snap cursor state doesn't update.

The solution is to use the `eventstate` of the window in the context
(`CTX_wm_window(C)->eventstate`).

This matches other parts where `eventstate` is used.

Pull Request: https://projects.blender.org/blender/blender/pulls/120475
2024-04-12 15:27:05 +02:00
Christoph Lendenfeld
3fda0d5f8f Fix #119909: Unkeyable custom properties receive keyframes
In the case that "Custom Properties" was enabled in the user preferences,
the keyframing code would key all custom properties, regardless of that
property's type.
This can cause issues since it is keying e.g. the custom property that
cycles adds.

With this PR this is now limited to only Boolean, Int, Float, Double and Array.
Custom properties that have been defined via an addon are also not keyed.

Pull Request: https://projects.blender.org/blender/blender/pulls/119914
2024-04-12 14:48:10 +02:00
Christoph Lendenfeld
3eda9619f9 Anim: precalculate bounding indices for key drawing in the Graph Editor
While the drawing code already skipped drawing any key points that are not in view,
it did that with an `if` check within the `for` loop. This can be speed up quite a bit
by calculating the bounding indices beforehand and only iterating that range.

| - | Before | After |
| - | - | - |
| `draw_fcurve_selected_keyframe_vertices` | 44850ns | 3194ns |
| `graph_main_region_draw` | 32ms | 21ms |

Test file used
https://download.blender.org/ftp/sybren/animation-rigging/heavy_mocap_test.blend

Pull Request: https://projects.blender.org/blender/blender/pulls/120521
2024-04-12 12:41:45 +02:00
Christoph Lendenfeld
0157fede80 Anim: don't include handles when calculating FCurve bounds in Graph Editor
On heavy scenes, the function `get_graph_keyframe_extents`
takes up a considerable amount of the time (~50%) it takes to draw the Graph Editor.
This function is called to set the `View2D` extents which makes the scrollbars work properly.
I'd argue that level of precision isn't needed just to display scrollbars.
Passing the flag as `false` speeds up the drawing  code by 22%.

Timings for `graph_main_region_draw`
| Before | After |
| - | - |
| 32ms | 25ms |

Timings for `get_graph_keyframe_extents`

| Before | After |
| - | - |
| ~16ms | ~8ms |

Test file used
https://download.blender.org/ftp/sybren/animation-rigging/heavy_mocap_test.blend

Pull Request: https://projects.blender.org/blender/blender/pulls/120519
2024-04-12 11:27:36 +02:00
Bastien Montagne
b56457aa5e Core: ID Management: Make 'Purge' operation always recursive by default.
Inherited from previous versions of this feature, by default the Purge
operation from the Outliner would remove all unused IDs, recursively.
The same operation invoked from the File -> Clean Up main menu would by
default only delete directly unused IDs.

Now both will by default remove all (directly or indirectly) unused data.
2024-04-12 11:25:00 +02:00
Sybren A. Stüvel
d47e0c8ab9 Refactor: extract common code from make_new_animlistelem()
Replace copy-pasted code with a function call. This will make the intro-
duction of the `Animation` data-block much easier later on.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/120533
2024-04-12 11:17:13 +02:00
Campbell Barton
78413ff4e2 Fix error resetting the theme which would add a new theme
Regression caused by [0], also correct memcpy calls that overwrite
listbase link variables and the theme name, note that this is more a
code-correctness issue as it wouldn't cause user visible bugs.

[0]: adbec9eea9
2024-04-12 16:54:57 +10:00
Hans Goudey
52cff75ce0 Geometry Nodes: Avoid repeated node tools lookup when empty
Currently the node tools asset tree for extending 3D view headers is
rebuilt whenever it's cleared, which is done by clearing the tree's storage.
That means the data is rebuilt on every redraw if there are no node tools
and the tree storage is empty. With larger asset libraries that can be
quite expensive.

Now, instead of clearing the map, use a new dirty tag to store whether
the asset tree is out of date compared to the assets.

This should resolve #120494
2024-04-11 17:26:08 -04:00
Hans Goudey
ed8a97131f Fix: Typo in asset report message 2024-04-11 15:28:40 -04:00
Sean Kim
f7d5ec8661 Refactor: Remove trim variables from SculptSession
This PR moves the three sculpt trim gesture variables from
`SculptSession` into the `TrimOperation` `struct` to reduce
the size of the former and make it less likely that the data
is depended on in other operators.

Pull Request: https://projects.blender.org/blender/blender/pulls/120504
2024-04-11 20:55:11 +02:00
Iliya Katueshenock
0bd6279504 Nodes: Display node label for tooltips on a free reroute
It is not so informative to display `Input` (name of input socket)
tooltip for free reroute node. Instead, use label for this.

Pull Request: https://projects.blender.org/blender/blender/pulls/120534
2024-04-11 19:16:07 +02:00
Sean Kim
2582664f67 Refactor: Organize and fixup functions in sculpt_trim.cc
This PR performs the following refactors in sculpt_trim.cc:

* Remove `depth_front` and `depth_back` as `struct` properties, as they
  are only used for generating the Mesh
* Moves the `calculate_depth` call into the `generate_geometry` step as
  the latter is dependent on data from the former already
* Reorganize the methods so the overall file reads better.
* Minor comment nits and additions

Pull Request: https://projects.blender.org/blender/blender/pulls/120331
2024-04-11 17:53:46 +02:00
Iliya Katueshenock
9f89cc5072 Refactor: Nodes: Generate socket tooltips in more generic way
Split code to separate functions depending on the source of info for
socket inspection. Each function retrieves some optional string.
Collecting of result string is just loop.

Pull Request: https://projects.blender.org/blender/blender/pulls/120496
2024-04-11 17:52:59 +02:00
Jacques Lucke
9a78d523b0 Fix: matrices were printed in transposed order in some tooltips 2024-04-11 17:27:24 +02:00
Jeroen Bakker
9c1cba528b OpenGL: Remove Apple specific workarounds
This PR removes apple specific OpenGL workarounds. OpenGL on Apple isn't supported
so they can be removed.

Pull Request: https://projects.blender.org/blender/blender/pulls/120522
2024-04-11 17:25:21 +02:00
Iliya Katueshenock
4049309071 Fix: Geometry Nodes: GP3 component in tooltip without experimental option ON
Do not display this GP component in tooltip for some nodes which is support this.

Pull Request: https://projects.blender.org/blender/blender/pulls/120525
2024-04-11 15:21:04 +02:00
Jacques Lucke
549d02637a Curves: add menu to add some primitive curves in edit mode
This adds operators to add a bezier and circle primitive in curves
edit mode. The operators support the same settings as in the
legacy curve edit mode. The `shift+A` shortcut is added as well.

Pull Request: https://projects.blender.org/blender/blender/pulls/120513
2024-04-11 15:11:02 +02:00
Iliya Katueshenock
a03c3d16d8 Fix: Ensure null terminator for TIP_ string
Make sure TIP_ function will be called for string with null terminator.

Pull Request: https://projects.blender.org/blender/blender/pulls/120524
2024-04-11 14:59:57 +02:00
Pratik Borhade
341af348d9 Fix #120461: Outliner: Clicking Collection icon does not switch Properties tab
This is due to missing case for layer collection in `outliner_set_properties_tab`

Pull Request: https://projects.blender.org/blender/blender/pulls/120464
2024-04-11 13:00:13 +02:00
Campbell Barton
3a8cceee7d Cleanup: remove redundant checks & assignments 2024-04-11 20:47:07 +10:00
Campbell Barton
271aedffbe Cleanup: quiet missing-declarations warning 2024-04-11 20:19:01 +10:00
Campbell Barton
7e5a6d8dd5 Cleanup: correct argument order & naming
Correct swapped arguments, no functional changes.
2024-04-11 20:19:01 +10:00
Jacques Lucke
183ac7d2a2 Fix: update auto bezier handles after toggling cyclic 2024-04-11 11:50:35 +02:00
Christoph Lendenfeld
fb22ee6f0c Refactor: BeztMap Array to C++ Vector
Instead of using `MEM_callocN` to create an array of `BeztMap`
use a `blender::Vector`. This has the advantage that we don't need to worry about
freeing the memory.
In addition to that it can be passed as a `Span`, removing the need to pass the
length as a separate argument.
Doing that also allows to use the C++ syntax for `for` loops.

This also gives a small performance boost
| Before | After |
| - | - |
| 288ms | 260ms |

Pull Request: https://projects.blender.org/blender/blender/pulls/120507
2024-04-11 11:47:15 +02:00
Campbell Barton
adbec9eea9 Theme: reset the default theme fails & fix invalid ListBase links
If the theme's name was changed, resetting the default theme did
nothing from a user perspective.

Internally it would add the Default theme to the end of the list where
it was ignored, then the default theme overwrote the data including the
next/prev links causing the ListBase to be invalid.

Resolve by ensuring the default theme is always first and use the
MEMCPY_STRUCT_AFTER macro to prevent links being overwritten.
2024-04-11 17:44:27 +10:00
Campbell Barton
09ee8d97e6 Cleanup: use C-style comments for descriptive text 2024-04-11 17:44:27 +10:00
Lukas Tönne
658a9ac3a9 GPv3: Initial sculpt mode
Adds an (empty) sculpt mode for Grease Pencil v3 objects.

The object `SCULPT_GPENCIL` mode is re-used for Grease Pencil object
types. A `SCULPT_GREASE_PENCIL` context mode has been added, which is
specific to grease pencil objects. This is necessary for polling tools
and keymaps.

Pull Request: https://projects.blender.org/blender/blender/pulls/119338
2024-04-11 09:39:48 +02:00
Jesse Yurkovich
88526ab5f4 Collection Export: Don't draw ignored properties for OBJ and USD
When using Collection export skip drawing certain operator properties
which shouldn't apply for this style of export.

These suppressed properties were mentioned a few times while gathering
feedback for the feature and they are ignored internally when using
collection export anyhow.
2024-04-11 07:01:45 +02:00
Iliya Katueshenock
de6834e5c2 Cleanup: Unused argument
`ntree` is unused after 3357658c13

Pull Request: https://projects.blender.org/blender/blender/pulls/120495
2024-04-11 00:36:31 +02:00
Jesse Yurkovich
df4ccf2eed Collection Exporters: Add Alembic support
Enable Alembic support for collection exporters.

Pull Request: https://projects.blender.org/blender/blender/pulls/120493
2024-04-11 00:24:06 +02:00
Iliya Katueshenock
3357658c13 Cleanup: Nodes: Remove unnecessary socket tooltip check
There is no context in which socket can't have data to display in tooltip.
The most basic info is the name of the socket. Such tooltip can be even
for output Shader socket. If is there, socket tooltip can be built from
data of socket declaration. Description, constraints and so. Such as supported
components. At point socket was used in evaluation on CPU, there is value
to display. Any trivial types or statistic about them value. Fields can
have dependencies, which is also can be known from evaluated value.

Pull Request: https://projects.blender.org/blender/blender/pulls/120492
2024-04-11 00:21:34 +02:00
Jacques Lucke
01ee34ebd1 Curves: add operator to set bezier handle types
This adds an operator to set the handle types of bezier curves. It also
adds the same shortcut that is available in the legacy curve edit mode.

Pull Request: https://projects.blender.org/blender/blender/pulls/120426
2024-04-10 13:08:50 +02:00
Pratik Borhade
c8f275b777 GPv3: Deselect everything from all visible drawings when pasting strokes
To match with gpv2 behavior, fill selection attribute of all the visible
drawings with "false" value to deselect them so only the pasted stroke
from the clipboard is selected.

Pull Request: https://projects.blender.org/blender/blender/pulls/120363
2024-04-10 12:31:51 +02:00
Pratik Borhade
d049cd1dbf Fix: GPv3: Clear copy strokes buffer if nothing is selected during copy
If `clipboard.curves` has some curve and the copy operation is called
again when nothing is selected, the buffer is expected to be cleared.
Otherwise the paste operations will paste the previous copied curves.

Pull Request: https://projects.blender.org/blender/blender/pulls/120454
2024-04-10 11:15:47 +02:00
Hans Goudey
256dbce9fa Cleanup: Make format 2024-04-09 21:23:18 -04:00
Hans Goudey
193789f036 Cleanup: Use utility function to sample triangle bary coord
Also move the declaration of the BVH tree closer to its use.
2024-04-09 20:45:55 -04:00
Germano Cavalcante
c9fa73a379 Fix #120443: Knife tool loses precision on edges with high clip distance range
The previous algorithm for interpolating the vertices of an edge using
a lambda in screen space was heavily dependent on the resolution of the
projection matrix, leading to precision loss when the clip distance
range was high.

The updated algorithm now adjusts the lambda according to the
perspective before performing the interpolation, which improves
precision regardless of the clip distance range.
2024-04-09 20:56:02 -03:00
Harley Acheson
7226b52728 UI: Removal of GRAPH_OT_keys_to_samples Confirmation
Removal of the dialog that pops up to confirm this operator. The
Animation & Rigging module feels this isn't needed since this action
is quite visual and hard to miss. This operator is also not often
used and might get removed in future as unnecessary.

Pull Request: https://projects.blender.org/blender/blender/pulls/120074
2024-04-10 00:45:44 +02:00
Falk David
eec9c50580 Fix #120436: "Show Fill Color" setting not working
The flag was completly unused in the code.
Now this flag does what it says: While drawing,
the fill color is (almost) not visible.

Pull Request: https://projects.blender.org/blender/blender/pulls/120438
2024-04-09 17:59:20 +02:00
Amelie Fondevilla
d0d4bf2068 Fix #118509: GPv3: frames disappear during transform in the timeline
While selecting and transforming multiple grease pencil frames in the
timeline, frames would sometimes disappear. This happened when the
transformation overlapped, meaning when a frame replaced another moving
one in the timeline. The frames transformation was happening in place
and in series, and thus leaded to the initial position of the frame to
be removed, even if it was occupied by a freshly transformed framed.

This commit fixes the issue by storing two separate maps in the
transform data structure instead of one, one map to store the static
data, meaning the frames that are not affected by the transform, and
another one for the moving data, meaning the frames that are affected by
the transform.

Some changes were made to account for the potential duplication of the
frames (move + duplicate):
* the map of the duplicated frames was renamed to a more explicit name,
* when a duplication occurs, the original frame is stored in the static
  frames map, and the duplicate is stored in the moving frames map,
* thus the check for the duplicate flag of the operator is now done at
  the init step of the transform, instead of the update step, so that
  the maps are initialized accordingly.

Co-authored-by: Lukas Tönne <lukas@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/119337
2024-04-09 16:44:34 +02:00
Sybren A. Stüvel
bc764072f5 Anim: Avoid loading alpha channel from theme for keyframe drawing
The theme has a color for each keyframe type. This is exposed in RNA and
the preferences UI as an RGB color, so without alpha channel. The code
that loads the color from the theme, however, does include that
unsettable alpha channel, though.

In practice this doesn't cause issues, as the versioning code ensures
that the default colors are stored with `alpha=uint8_t(255)`. While
developing, however, this caused me considerable headscratching, as I
was missing that little bit of versioning code, which means that the
default color was set to all-zeroes, and thus had a zero alpha.

This is now resolved by altering the drawing code to only load the RGB
component from the theme. This way only the user-settable bytes are
loaded, while the alpha component is handled a different way (setting it
to an absolute value, instead of multiplying the theme value).

No user-perceivable changes, just some developer comfort.

Pull Request: https://projects.blender.org/blender/blender/pulls/120311
2024-04-09 16:34:35 +02:00