Convert the code in `scripts/modules/animsys_refactor.py` from the
legacy Actions API to the current API.
The code was made for very old rigs (2.70 and older, last updated for
Caminandes in 2014). The updated code seems to work on a Caminandes test
file, and produces the same logging on the terminal as in Blender 4.3
(before slotted Actions).
No functional changes.
This is part of #146586
Pull Request: https://projects.blender.org/blender/blender/pulls/147060
Remove the use of `action.fcurves` in the Bake Action operator, replacing
it with the current API (introduced for slotted Actions in Blender 4.4).
No functional changes.
This is part of #146586
Pull Request: https://projects.blender.org/blender/blender/pulls/147060
Adjust various unit tests so that they no longer use the legacy Action
API (which was deprecated in Blender 4.4 and will be removed in 5.0).
No functional changes.
This is part of #146586
Pull Request: https://projects.blender.org/blender/blender/pulls/147060
Regression in e65524382, where what should have been essentially
(window_width / text_width) became (window_width + 1/text_width)
which is not the same at all! What the code was trying to do is
((window_width + 1) / text_width)
Most easily visible in VSE template because it defaults to
MM:SS+FRAME display format, but could be seen in other
animation related windows.
Pull Request: https://projects.blender.org/blender/blender/pulls/147198
This fixes a memory leak that could occur with the
Grease Pencil Pen Tool. If the Pen Tool exited during
the initialization the `GreasePencilPenToolOperation`
object would not be deleted. The Pen Tool could end
in initialization if the `Selection Mode` was not `Points`
This problem only effected Grease Pencil, because
the `Curves` Object code properly exited.
Pull Request: https://projects.blender.org/blender/blender/pulls/147170
This adds support for showing various stats of volume grids in the spreadsheet:
* Extent: Number of voxels in each direction of the bounding box of the grid.
* Voxels: Total number of active voxels in the grid. This includes all voxels
which are stored in tiles (e.g. one leaf tile contains 512 voxels).
* Leaf Voxels: Number of active voxels stored in leaf nodes. This does not
contain any voxels that are part of tiles.
* Tiles: Number of active tiles in the grid.
* Size: Estimated size of the volume grid in memory.
All these stats are cached on the volume grid now. A new `tag_tree_changed`
method has been added to invalidate the cache. Computing these stats is not
cheap (but not more than a few ms even for large grids). That mainly means that
we can't do it for socket inspection because that would cause too much overhead.
However, doing it just for the grids that are currently visible in the
spreadsheet seems fine and useful.
This also adds some general improvements to the spreadsheet:
* Support `int64_t` and `int3` columns.
* Draw ints with thousand separators.
* Support showing ints as number of bytes such as `23 MB`.
Pull Request: https://projects.blender.org/blender/blender/pulls/147191
Very similar to the layer name search added somewhat recently.
This just displays the names of existing grids in the "Name"
inputs to the Store and Get Named Grid nodes.
Pull Request: https://projects.blender.org/blender/blender/pulls/147163
`append and reuse` is chosen as default in DNA but this enumpropertyitem
isn't added to the array when `Non data block packing` is disabled in
Developer tools (see `rna_preference_asset_libray_import_method_itemf`).
To fix this, change default in DNA to `ASSET_IMPORT_PACK`. In case of
"non packing", change import_method inside `asset_library_add()`
function. Also introduce `rna_preference_asset_libray_import_method_default`
so that "reset to default value" operator works correctly.
Pull Request: https://projects.blender.org/blender/blender/pulls/147104
!146956 introduced buffer streaming and is used to improve the
performance of text rendering. However the solution didn't check the
minimum allowed offset for storage buffers.
This PR will use the correct offset. This was only visible on Qualcomm
devices as other systems don't limit this offset.
Detected when looking into: #147023
Pull Request: https://projects.blender.org/blender/blender/pulls/147192
Where possible, inline sockets when the input and output are both the
image or the same value just transformed.
Even though it may make sense, do not apply this change in cases where
the image is the same when a factor is set to "0". For example the
Alpha Over node, where the "Background" matches the "Image" output if
factor is 0. Or the Mix node's "A" and "Image".
Also hide the value (usually a full white color input widget).
It makes for a more compact UI, less noise, and it matches a similar
layout in Geometry Nodes.
See PR for screenshots.
Pull Request: https://projects.blender.org/blender/blender/pulls/147143
The general idea is to order all menus as:
```
Common categories
(e.g. Input/output)
---
Specific categories
---
Assets
--
Common categories
(e.g. Group/Layout)
```
## Changes:
### Compositor
- Removed Color/Mix submenu
- Moved Vector to Utilities
- New Category: "Creative". This is where most new assets will fit in.
- Moved to Creative:
- Kuwahara
- Pixelate
- Posterize
### Geo Nodes
- Moved 'Vector' to 'Utilities'
- Moved 'Attribute' before 'Geometry'
- Moved 'Material' to 'Geometry'
- Moved 'Color' to top level, grouped with Utilities
### Shader
- Moved 'Vector' to 'Utilities'
- Deleted 'Converter'
- New 'Displacement' menu
- Grouped 'Color' with Utilities (remains top level)
Ref: https://devtalk.blender.org/t/2025-09-05-design-session-node-groups-different-editors/42244
Pull Request: https://projects.blender.org/blender/blender/pulls/146806
Use the current Action API (i.e. move away from the to-be-deleted-in-5.0
one) to import and export F-Curves from/to FBX files.
There is a slight difference in functionality for the exporter, in the
selection of which Actions to export for the "All Actions" option. This
is just a minimal change to ensure the legacy API is no longer used.
Old: `action.fcurves` was iterated, and if all FCurves could resolve to
existing properties, the Action was exported. This would only work
reliably for single-slotted Actions, due to the use of the deprecated
`action.fcurves` property.
New: the above check is done for each Channelbag in the Action. The
first Channelbag that match the above check is exported. This does _not_
export all suitable channelbags; it merely improves on the old behaviour
slightly.
This is part of #146586
Pull Request: https://projects.blender.org/blender/blender/pulls/146980
This adds versioning code that replaces any timeline with a
dopesheet where the footer is shown, AND it removes the
timeline from the menu options.
If the area is too small to show both, the footer and the
header then only the footer is shown.
This assumes that users created the small timeline
just for the playback controls
Any uses of `SACTCONT_TIMELINE` (except for versioning) have been removed.
part of #145577
Pull Request: https://projects.blender.org/blender/blender/pulls/147058
`ui_numedit_but_NUM` only uses the "reduced" `fac` from `ui_do_but_NUM`
in case the button is a float button.
So to clarify that in the UI, dont display the "Precision" in the
Statusbar for Interger buttons.
Pull Request: https://projects.blender.org/blender/blender/pulls/147125
Part of a fix for #145877 which exposed multiple crashes in the
outliner.
Hide depsgraph collections that are dynamically allocated,
causing access to freed memory form the outliner.
Ref !145955
The SVG icon outline could be over 1.0 when hovering over icons in the
outliner. This was converted to bytes and set FontBLF::shadow_color[3]
which overflowed the byte range.
Clamp the alpha before passing to BLF SVG drawing.
This is because `snap_obj_fn` checks `SnapObjectParams` `edit_mode_type`
for not being `SNAP_GEOM_FINAL` even if the curve is not in editmode.
Probably an oversight in [0] which changed this for
`nearest_world_object_fn` and `raycast_obj_fn` (but not `snap_obj_fn`).
The reason it worked in non-XRay-shading mode is that another codepath
is taken then (`raycastObjects` instead of `snapObjectsRay` where this
is not an issue -- the then used `raycast_obj_fn` had the correct check
already, see above).
[0]: ab3e470b35
Ref 147121
Includes the following changes to the existing Locomotion system for VR Scene Inspection:
* new VR Navigation Preferences and VR Session Settings
* changes to XR raycast logic and its visualization
* new XR vignette that appears when moving
* snap turning
Pull Request: https://projects.blender.org/blender/blender/pulls/144241
The check to draw transform constraints was returning too early and
skipping the later check for the `V3D_HIDE_OVERLAYS` flag.
This meant that transform constraints (e.g. when moving over X axis)
were always shown even when all overlays were turned off, which can
be very distracting.
Fix it by switching the check, so it returns false if the region is
not the same, but continues happily if it is.
See PR for details and screenshots.
Pull Request: https://projects.blender.org/blender/blender/pulls/147132
For a period of time during 4.2~4.3, the `UvSculpt` settings could have
been in an invalid state. This commit reapplies the same versioning to
prevent odd behavior and removes the old versioning code.
Pull Request: https://projects.blender.org/blender/blender/pulls/147075
The purpose of this node is to create a grid with new voxel values on
the same grid topology as an existing grid. The new values are the
result of field evaluation. Multiple grids can be created at the same
time, so that intermediate results used for multiple grids can be
efficiently reused during evaluation. This is more efficient than the
"Volume Cube" node, for instance, because the output grid shares the
sparseness of the input topology grid.
Pull Request: https://projects.blender.org/blender/blender/pulls/147074
Collection side is trivial, Object one is a bit more intricate, as
its LightLinking data behave similar to AnimData of IDs, which requires
a custom liboverride `apply` callback.
Pull Request: https://projects.blender.org/blender/blender/pulls/147039