The `blender-v4.0-release` branch would not build because some parts of grease pencil v3 were still exposed when experimental features are disabled.
This is hiding the relevant parts behind `#ifdef WITH_GREASE_PENCIL_V3` to make sure they are only built when the experimental features is enabled.
Pull Request: https://projects.blender.org/blender/blender/pulls/112953
After changing tools (and possibly other context), the buttons section
background drawing would be broken for one redraw, so the full region
would be drawn with a background, rather than just behind the button
boundaries.
Code has special handling so that only the first of two split regions
needs to be flagged as hidden. If the second one is also flagged that
can have some unwanted side-effects. Code to add the region resizing
edges relied on the region visibility flags though, rather than the
visibility check that respects this handling of split region hiding. So
code would run that is only intended for un-hidden regions.
Search menu (F3) displays character which was pressed to open a context
specific search. This also breaks the old behavior of showing last searched
operator in text field, instead shows the pressed character.
To fix this, first store the `g_search_text/but->poin` string in
temp_buffer (before pressed key char is copied to `g_search_text`).
Later, restore the g_search_text after invoking the search menu.
Pull Request: https://projects.blender.org/blender/blender/pulls/112938
Makes use of the new buttons sections feature used by the asset shelf to
draw a background behind buttons, but the reset of the region fully
transparent. The UI team agreed on this as a way to minimize dead space,
but also as a better way to communicate our click through feature (where
dead space in overlapping regions forwards events to the underlying
region). The region background theme setting only affects the
non-transparent part of the region, the rest is always fully
transparent. With region overlap disabled, the bar is fully opaque still.
Also see #112241.
Only the pose library enables the asset shelf by default, but Blender
doesn't come with pose assets, they have to be created by the user. So
when entering pose mode with factory settings, the asset shelf will
currently be just a big empty bar. Plus, pose mode is used for posing
without pose assets quite a lot. So hide the asset shelf by default. The
pose library already shows a toggle to hide/unhide it where the previous
pose library UI was for discoverability.
The node drawing function currently uses a stack-based traversal of
interface items. This is hard to read and for this purpose a recursive
function is easier to understand.
Pull Request: https://projects.blender.org/blender/blender/pulls/112860
Adds a menu to choose the asset library to use to the asset shelf
catalogs selector popover. This is consistent with the asset browser.
After talking to animators and some artists, this is likely something
they would want to have, since they don't always want all their assets
and catalogs to populate the asset shelf. It's also necessary for the
pose library UI to provide the same features roughly than the old one
(in the sidebar, before the asset shelf was introduced).
This is necessary to let popovers redraw when asynchronously loading
data. For example to display assets or asset catalogs as they get
loaded. Needed for the asset shelf catalog selector popover. Menus
already do the same to allow populating the menu with assets as they get
loaded.
Previously, it was only possible to inspect the data from the first iteration. That
applied to both, the viewer node as well as socket inspection. Now, there is a
new `Inspection Index` setting in the zone properties. It specifies which iteration
should be used by the inspection features.
In theory we could support features like counting the index from the end, but
that can be done separately as well, as it likely requires more UI.
Pull Request: https://projects.blender.org/blender/blender/pulls/112818
This PR adds vertex groups to `CurvesGeometry` as well as an attribute read/write accessor.
This is also in preparation for GPv3. Since the goal is to have full compatibility with the current grease pencil features, vertex groups need to be supported.
Grease Pencil allows filtering by vertex group for modifiers.To support this, it also makes sense to have read/write access for vertex groups in the attributes API.
In the future, vertex groups should be just another custom attribute on meshes/curves/grease pencil. There are some more issues to be solved before that can happen. This step gets us a bit closer since the vertex weight data is stored in `CustomData`.
Pull Request: https://projects.blender.org/blender/blender/pulls/106944
Noticed GRAPH_MT_channel_context_menu is unused (since
DOPESHEET_MT_channel_context_menu is used in both Dopesheet & Graph/
Drivers Editor).
This patch removes GRAPH_MT_channel_context_menu but adds the entries
which were in that menu (but not in DOPESHEET_MT_channel_context_menu)
back to the later.
Namely:
- Hide Selected Curves
- Hide Unselected Curves
- Reveal Curves
- (Delete Invalid Drivers -- if in Drivers Editor)
Pull Request: https://projects.blender.org/blender/blender/pulls/111384
Currently if there is no selection mode enabled the operator is disabled and greyed
out in the menu. The shortcut doesn't do anything, which can be unexpected and jarring.
With this PR the operator will work when no selection mode is enabled and in that case
fill the entire mesh using the Weight from the active tool.
This is then consistent with vertex paint mode and the "Set Vertex Color" operator.
So now remove the overly-strict `mask_paint_poll` poll (and replace with
more appropriate `weight_paint_mode_poll`).
NOTE: `mask_paint_poll` is now unused, could be removed
Pull Request: https://projects.blender.org/blender/blender/pulls/112413
These programs don't run as part of automated tests but can be useful
utilities for developers to expose issues or bisecting
(in the case of event simulation).
Initializing all vertices from the original could allocater vertex
groups into the custom-data which were later overwritten witout freeing.
The leak happened in the test file:
.../lib/tests/modifier_stack/explode_modifier.blend
Currently retiming is quite awkward, when you need to retime multiple
strips strips in sync. It is possible to use meta strips, but this is
still not great. This is resolved by implementing selection.
General changes:
Gizmos are removed, since they are designed to operate only on active
strip and don't support selection.
Transform operator code is implemented for retiming data, which allows
more sophisticated manipulation.
Instead of drawing marker-like symbols, keyframes are drawn to
represent retiming data. Retiming handles are now called keys. To have
consistent names, DNA structures have been renamed.
Retiming data is drawn on strip as overlay.
UI changes:
Retiming tool is removed. To edit retiming data, press Ctrl + R, select
a key and move it. When retiming is edited, retiming menu and
context menu shows more relevant features, like making transitions.
Strip and retiming key selection can not be combined. It is possible to
use box select operator to select keys, if any key is selected.
Otherwise strips are selected.
Adding retiming keys is possible with I shortcut or from menu.
Retiming keys are always drawn at strip left and right boundary. These
keys do not really exist until they are selected. This is to simplify
retiming of strips that are resized. These keys are called "fake keys"
in code.
API changes:
Functions, properties and types related to retiming handles are renamed
to retiming keys:
retiming_handle_add() -> retiming_key_add()
retiming_handle_move() -> retiming_key_move()
retiming_handle_remove() -> retiming_key_remove()
retiming_handles -> retiming_keys
RetimingHandle -> RetimingKey
Retiming editing "mode" is activated by setting `Sequence.show_retiming_keys`.
Pull Request: https://projects.blender.org/blender/blender/pulls/109044
It seems like the cause for the crash was that the maps in
`AnonymousAttributeInferencingResult` use node indices as keys.
However, the order of nodes changes when changing node selection.
Generally, we don't want to trigger a more expensive update just
because we changed the selection, therefore things got out of sync
when building the lazy-function graph.
The solution here is not a full fix. Other things that cause a depsgraph
update but don't cause a tree-update could still cause the same kind
of crash. A better solution would be to address the root cause which
is that trivial operations like selection changes node order which is
used in many places. Also see `BKE_ntree_update_tag_node_reordered`.
Disabling depsgraph updates when changing the active simulation
or repeat item is correct as well though, and it solves this specific crash.
Shadow Map Ray Tracing is a technique that ray cast against the shadow
depth buffer. The technique is described in "Soft Shadows by
Ray Tracing Multilayer Transparent Shadow Maps".
Note that we only implement the single layer approach since storing
multiple depth is prohibitively expensive.
Pull Request: https://projects.blender.org/blender/blender/pulls/111809
The poll made it so the Armature Overlays popover would
appear even in object mode only for this setting. Move
it to the general overlays next to other general/object
mode settings.
Closes#112765
Pull Request: https://projects.blender.org/blender/blender/pulls/112862