ANIMATION improvements! 💃 Blender Today LIVE #286
Blender Today LIVE #286
Announcements
What's new in Blender?
July 09-21, 2026, at 12:00 Amsterdam CEST+0200 258 commits in total, of which 116 are fixes, 30 cleanup, and 50 refactors.
Animation
- 🔸 Anim: Replace with duplicate Action operator - Christoph Lendenfeld
- 🔸 Anim: Convert animation between rotation modes - Christoph Lendenfeld
- 🔸 Anim: Improved AnimData rename API - Christoph Lendenfeld
- 🔸 Anim: Pause playback on scrub - Bar Borer
Assets
- 🔸 Assets: Delay import of listing_downloader on startup - Sergey Sharybin
Audio
- Audaspace: porting changes from upstream. - Jörg Müller
Build
- Build: Replace deprecated usage of CMake -H by -S in GNUmakefile - Jonas Holzman
Cleanup
- Cleanup: Use int2 instead of std::pair for Delaunay Triangulation - Hans Goudey
-
Cleanup: move
shutilimport in asset library listing downloader code - Sybren A. Stüvel - Cleanup: Fix typos - Sean Kim
- Cleanup: Texture Paint: Comment out debug print - Brecht Van Lommel
- Cleanup: Texture Paint: Remove some dead code from pixel setup - Brecht Van Lommel
- Cleanup: Texture Paint: Update pixel compression stats debug code - Brecht Van Lommel
- Cleanup: Remove mpq headers from BLI_delaunay_2d.hh - Hans Goudey
- Cleanup: deduplicate domain enum definitions - Jacques Lucke
- Cleanup: Move function definition within file - Hans Goudey
- Cleanup: Remove unused UVIsland function - Hans Goudey
- Cleanup: Remove unnessary bitwise OR - Sean Kim
- Cleanup: Improve types used for sculpt undo attribute reference - Hans Goudey
-
Cleanup: fix warning regarding
std::char_traits<const char>. - Bastien Montagne - Cleanup: quiet GCC's enumerated and non-enumerated type warning - Campbell Barton
- Cleanup: remove unused variables, wrap long lines - Campbell Barton
- Cleanup: spelling in comments (make check_spelling_*) - Campbell Barton
- Cleanup: Cycles: Use utility function to copy mesh vert triangles - Hans Goudey
- Cleanup: Texture Paint: Canonical variable names for vert & corner - Hans Goudey
- Cleanup: clarify naming for line height and character width - Campbell Barton
- Cleanup: de-duplicate sequencer text insertion - Campbell Barton
- Cleanup: remove unused PyC_Object_GetAttrStringArgs - Campbell Barton
- Cleanup: BLI: Remove commented out code - Falk David
-
Cleanup: Fix docstring for
corner_tri_get_real_edges- Sean Kim - Cleanup: annotate cryptic format string for Python's argument parsing - Campbell Barton
- Cleanup: include functions names in Python argument parsing strings - Campbell Barton
- Make format. - Howard Trickey
- Cleanup: Improve comment in creator crash handling call once logic - Jonas Holzman
- Cleanup: string formatting warning on Linux - Campbell Barton
- Cleanup: update GCC version check for warning suppression - Campbell Barton
- Cleanup: spelling in comments (make check_spelling_*), variable names - Campbell Barton
Compositor
- Compositor: Add ID_RECALC_COMPOSITOR for scene IDs - Omar Emara
- 🔸 Compositor: Default to a Group Input node instead of Render Layers - Omar Emara
Core
- RNA: add unit test for RNA_generate_keys_for_path_rename() - Sybren A. Stüvel
- BLI: Add tracy markers in Delaunay Triangulation code - Falk David
Curves
- 🔸 Curves: new sculpt Cut brush - RedMser
Cycles
- Cycles: HIP-RT: Skip visibility check for primitives - Sergey Sharybin
- Cycles: HIP-RT: Remove primitive bounds valid check - Sergey Sharybin
- Cycles: HIP-RT: Remove BVH steps - Sergey Sharybin
- Cycles: HIP-RT: Reduce indirections in the BVH traversal - Sergey Sharybin
- Cycles: HIP-RT: Remove custom arrays for primitive indices - Sergey Sharybin
- Cycles: HIP-RT: Always use balanced build for BLAS - Sergey Sharybin
- Cycles: HIP-RT: Use Balanced for Hair and Quality for triangles - Sergey Sharybin
- Cycles: HIP-RT: Use Balanced BVH for pointcloud primitive - Sergey Sharybin
- Cycles: Use minimum 64x64 tile size for texture cache load - Brecht Van Lommel
EEVEE
- 🔸 EEVEE: Add denoising render passes - Christoph Neuhauser
Fixes
- Fix #158830: Missing data-block defaults for modifier inputs - Hans Goudey
- Fix: VSE: Cannot prefetch sequencer-input scene strips - John Kiril Swenson
- Fix: VSE: Clear cache of seq-input scene strips when modifying their contents - John Kiril Swenson
- Fix: use of undefined variable listing_downloader.py - Campbell Barton
- Fix #137232: KDE+Wayland+Vulkan failure to restore cursor grab position - Campbell Barton
- Fix #161257: Camera background Movie Clip missing update on reload - Philipp Oeser
- Fix #157591: Grease Pencil UV attributes missing viewport update... - Philipp Oeser
- Fix #161185: USD export of a rigged nurbs surface is empty - Philipp Oeser
- Fix #160076: GP: New Deselect Linked missing from the menus - Pratik Borhade
- Fix: Regression: Wrong annotation layer icon in outliner - Pratik Borhade
- Fix #62258: UI: Prevent overlap of Adjust Last Operation panel - Pratik Borhade
- Fix: Nodes: Various Add/Swap menu entries not in alphabetical order - quackarooni
- Fix: clarify Grease Pencil layer/material "pass_index" tooltips - Philipp Oeser
- Fix #161263: Handle empty bundle lists in Geometry Nodes - Tibo Stans
- Fix #160310: VSE: Strip animations don't play in sequencer-type scene strips - John Kiril Swenson
- Fix: Geometry Nodes: Inconsistent style for drag-search label for Repeat zones' Iteration input - quackarooni
- Fix #159075: UV tool settings reset on operator redo in mesh edit-mode - Campbell Barton
- Fix: Preferences: "Global" keymap items not aligned with other keymap items - quackarooni
- Fix #161299: GPU: Crash using certain custom Python shaders - Clément Foucault
- Fix #161338: Crash rendering empty subdivided mesh in Cycles - JustSamPai
- Fix several potential errors when reading corrupted DNA data. - Bastien Montagne
- Fix: Outliner scroll to new collection fails when active object exists - Pratik Borhade
- Fix #160952: Grease Pencil: Hiding material causes visual error - Casey Bianco-Davis
- Fix #160815: Core: Saving creates excessive threads - Le Gia Bao
- Fix #159727: Muted nodes prevent color change - Amine Bensalem
- Fix #158108: Clear stale liquid mesh after failed cache load - Tibo Stans
- Fix #161299: GPU: Crash using certain custom Python shaders - Clément Foucault
- Fix: Texture paint issues in recent optimizations - Brecht Van Lommel
- Fix #161243: use-after-free in handling of link/append/pack data during packing. - Bastien Montagne
- Fix: Images: Excessive texture and mipmap updates - Brecht Van Lommel
- Fix: Images: Missing partial update path for grayscale buffers - Brecht Van Lommel
- Fix: Cycles: Build failure when transparent shadows are disabled in kernel - Brecht Van Lommel
- Fix #161196: Modifier edit and cage visibility issues - Campbell Barton
- Fix #159634: EEVEE: Adapt hit delta epsilon to accept negative values - Christoph Neuhauser
- Fix: Curves: Sculpt brush assert for 2-point curve - RedMser
- Fix: partial data used when a data-block fails to read - Campbell Barton
- Fix: out-of-bounds struct reconstruction with inconsistent DNA sizes - Campbell Barton
- Fix: out-of-bounds struct reconstruction with an invalid block count - Campbell Barton
- Fix: out-of-bounds read from an invalid block struct index - Campbell Barton
- Fix: null dereference reading a corrupt global or user-prefs block - Campbell Barton
- Fix: null dereference freeing a partially-read window - Campbell Barton
- Fix: null dereference linking a data-block that fails to read - Campbell Barton
- Fix potential null access in bpy code. - Bastien Montagne
- Fix: Use-after-free in link/append code. - Bastien Montagne
- Fix #161363: Crash switching to Weight Paint with Geometry Nodes - Tariq-Sulley
- Fix: Nodes: Wrong option in drag and drop search menu - илья _
- Fix #161071: UI: Shape Key ctrl-select breaks with two properties - Ahmed Nassar
- Fix: Potential crash with "Replace with Duplicate Action" operator - Christoph Lendenfeld
- Fix: Missing break - Pratik Borhade
- Fix: Heap-use-after-free renaming DNA struct member - Bastien Montagne
- Fix BLI scoped timer with window, add invalid window/sampling values asserts. - Bastien Montagne
- Fix: Cycles crash after recent commit - Hans Goudey
- Fix #161352: EEVEE: Avoid resetting sampling every frame - Le Gia Bao
- Fix: Images: Thread sanitizer warnings in partial update - Brecht Van Lommel
- Fix: Images: Memory leak in GPU upload on failed allocation - Brecht Van Lommel
- Fix: Images: Excessive threading overhead in GPU partial update - Brecht Van Lommel
- Fix: overlay engine test failure caused by change to final/cage mesh equality - Campbell Barton
- Fix: Sculpt: Use correct quaternion identity value for pivot rotation - Sean Kim
- Fix: cursor offset error inserting multiple characters at once - Campbell Barton
- Fix: crash in Armature Edit mode after duplicating animated bone - Sybren A. Stüvel
- Fix #161362: Prevent regular properties to access meta-data PointerRNA. - Bastien Montagne
- Fix: File Browser draws empty-list message in wrong color - Pablo Vazquez
- Fix #161369: Vulkan: Ray Query tests fail on MSVC Release builds - Miguel Pozo
- Fix #161450: Use after free crash in edge loop relax - Tariq-Sulley
- Fix #161194: Restore implicit UV map selection for legacy textures - Tibo Stans
- Fix #161468: Color strip dimensions aren't set when calling #new_effect - il4n
- Fix #161434: Cycles: Transmission passes missing with thin glass - Weizhen Huang
- Fix: corrupt linked block silently treated as missing - Bastien Montagne
- Fix: Grease Penci: Regression: Drawing fills with strokes become cyclic - Falk David
- Fix: Creating new collection crashes in outliner in absense of active element - Pratik Borhade
- Fix: resource leak in bpy.app.timers return value - Campbell Barton
- Fix: resource leak accessing BMesh MLoop Color - Campbell Barton
- Fix: resource leak from missing PyBuffer_Release in gpu.shader - Campbell Barton
- Fix: resource leak when an imbuf image could not be written - Campbell Barton
- Fix: memory leak assigning the target property functions - Campbell Barton
- Fix: libraries.load swapped "set_fake" & "recursive" arguments - Campbell Barton
- Fix: memory corruption passing "options" to keyframe_delete - Campbell Barton
- Fix: memory leak looking up collections with an allocated key - Campbell Barton
- Fix: error over-decrementing PyC_DefaultNameSpace - Campbell Barton
- Fix: crash using the temp_data() target after the context exits - Campbell Barton
- Fix: bmesh layer copy_from & remove ran with invalid arguments - Campbell Barton
- Fix: memory leaks setting invalid ID property UI data - Campbell Barton
- Fix: reference leak calling GPUOffScreen.bind() - Campbell Barton
- Fix: crash discarding bpy.data.temp_data() without entering it - Campbell Barton
- Fix: use-after-free evaluating a driver after renaming variables - Campbell Barton
- Fix: out-of-bounds read passing "name" keywords to GPUShaderCreateInfo - Campbell Barton
- Fix: potential use-after-free calling bmesh.ops looked up via getattr - Campbell Barton
- Fix #151054: hidden datablocks visible in prop() search results - Kévin Dietrich
- Fix #161335: Vulkan: Crash in --gpu-device help - Le Gia Bao
- Fix: Only invoke the crash handler once - Jesse Yurkovich
- Fix: VSE: Incorrect text selection/cursor draw and interaction when mirrored - John Kiril Swenson
- Fix #161421: VSE: Off-center origins offset rendered result for reduced output resolutions - John Kiril Swenson
- Fix: Cycles: Hydra add-on missing panels - Brecht Van Lommel
- Fix: Cycles: Hydra render delegate broken by ray visibility refactor - Brecht Van Lommel
- Fix: Cycles: Hydra use-after-free deleting light and geometry - Brecht Van Lommel
- Fix: Cycles: Hydra uses unsupported GPU when driver is outdated - Brecht Van Lommel
- Fix: Cycles: Poor texture cache initialization time with many tiles - Alex Fuller
- Fix: out-of-bounds read in mathutils.geometry.delaunay_2d_cdt - Campbell Barton
-
Fix:
retiming_transition_add durationproperty description - Bart Nagel - Fix: exception changing a Python custom property to data-block type - Campbell Barton
- Fix #161438: Exception thrown in custom property type change - David Xchel Morales Hurtado
- Fix: delaunay tests broken in #ifdef'd out code. - Howard Trickey
- Fix: Overlay: Clamp axis aligned ortho view grid to lowest level - Alex Hetherington
- Fix #161530 glTF: Fix exporting multiple material with vertex color - Julien Duroure
- Fix: Nodes - remove undo flag from copy clipboard operator - RedMser
- Fix #161407: Cycles texture cache HDRI broken with CPU + GPU render - Brecht Van Lommel
- Fix & Improve threaded zstd blendfile compression code. - Bastien Montagne
- Fix #161668: UI: Change in default direction for expanded enum buttons - Guillermo Venegas
- Fix #161637: Crash when accessing Brush direction enum without context - Sean Kim
- Fix #161550: Crash displaying file info with an incorrect modified date - Jesse Yurkovich
- Fix: Silent compiler warning - Pratik Borhade
- Fix: string formatting & correction to BMesh operator exceptions - Campbell Barton
- Fix #161595: Console paste crashes when commands change the context - Campbell Barton
- Fix #161013: Outliner "Scroll to Active" uncollapses items undesirably - Pratik Borhade
- Fix #161515: EEVEE: SubSurface Scattering: Uninitialized loads - Clément Foucault
- Fix: Composite node has no width when opened in Blender 4.5 - Habib Gahbiche
Geometry Nodes
- 🔸 Geometry Nodes: Add "Miter Scale" option to curve to mesh node - Hans Goudey
Git
- Tools: fix KeyError in weekly report script - Sybren A. Stüvel
GPU
- GPU: Initialize Vulkan on demand in background mode - Brecht Van Lommel
-
GPU: Pass
gpu_backendtoget_gpu_device_vendorin render tests - Mark van de Ruit - GPU: Shader Tool: Series of cleanup/fixes/refactor - Clément Foucault
- GPU: Shader Tool: Add WIP BSL parser and split shader tool tests - Clément Foucault
- GPU: Support integer and boolean types in GPU Material - Cristian Ivana
i suffix
- i suffix - Hans Goudey
Keymap
- 🔸 Keymap: Nodes: Shift+X for dissolve and Ctrl+X for Cut - Habib Gahbiche
Modeling
Nodes
- 🔸 Nodes: Convert Grease Pencil node enums to menu sockets - quackarooni
- 🔸 Nodes: Properly name node after link-drag-search - Brady Johnston
Outliner
- 🔸 Outliner: Use active element for creating new collection - Pratik Borhade
- 🔸 UI: Outliner Scroll view to the recently created collection - Pratik Borhade
Paint
- Texture Paint: Remove boolean "tag" from UVBorderEdge struct - Hans Goudey
- Texture Paint: Slightly improve UV island construction - Hans Goudey
- 🔸 Texture Paint: Store UV border edge primitive index as index - Hans Goudey
- Texture Paint: Reference UVEdge by index - Hans Goudey
- Texture Paint: Reference UVVert by index - Hans Goudey
- Texture Paint: Slightly optimize triangle edges creation - Hans Goudey
Python
- PyAPI: resolve technical resource leaks with PyType_Ready - Campbell Barton
- PyAPI: resolve technical resource leak accessing bpy_wm_capabilities - Campbell Barton
-
PyAPI: resolve technical resource leak in Blender's
atexitcallback - Campbell Barton - PyAPI: resolve technical reference counting error in bpy.app.handlers - Campbell Barton
- PyAPI: resolve technical resource leak in PyC_RunQuicky - Campbell Barton
- PyAPI: note that it's expected PyCapsule_New is valid - Campbell Barton
- PyDoc: Document the undo argument when calling operators - Olayinka Vaughan
Refactor
- Refactor: Adjust Sculpt Mode flushing for render - Matej Kotas
- Refactor: EEVEE: LTC matrix packing and translucent BxDF changes - Mark van de Ruit
- Refactor: Images: Apply partial GPU texture updates on acquire - Brecht Van Lommel
- Refactor: Images: Compute partial update regions on demand - Brecht Van Lommel
- Refactor: Images: Deduplicate and improve GPU upload - Brecht Van Lommel
- Refactor: Images: Improve ImBuf update marking - Brecht Van Lommel
- Refactor: Images: Make partial update marking thread safe - Brecht Van Lommel
- Refactor: Images: Move GPU texture partial update to ImBuf - Brecht Van Lommel
- Refactor: Images: Move partial update tracking from Image to ImBuf - Brecht Van Lommel
- Refactor: Images: Reduce number of GPU texture sub update calls - Brecht Van Lommel
- Refactor: Images: Remove IB_RECT_INVALID and IB_DISPLAY_BUFFER_INVALID - Brecht Van Lommel
- Refactor: Make RNA struct/function/property use typed enums for flags. - Bastien Montagne
- Refactor: pose paste code - Christoph Lendenfeld
- Refactor: Texture Paint: Avoid many small allocs for UV primitive lookup - Brecht Van Lommel
- Refactor: Texture Paint: Avoid many small allocs for vert/edge/prim maps - Brecht Van Lommel
- Refactor: Texture Paint: Avoid UDIM tile loops per pixel - Brecht Van Lommel
- Refactor: Texture Paint: Avoid unneeded zero initialize for undo tiles - Brecht Van Lommel
- Refactor: Texture Paint: Copy undo tiles outside the global lock - Brecht Van Lommel
- Refactor: Texture Paint: Do seam copy serial, multi-threading makes it worse - Brecht Van Lommel
- Refactor: Texture Paint: Don't build edge list and edge maps - Brecht Van Lommel
- Refactor: Texture Paint: Don't store primitive data for all UDIM tiles - Brecht Van Lommel
- Refactor: Texture Paint: Fast sRGB conversion path for byte buffers - Brecht Van Lommel
- Refactor: Texture Paint: Fix O(n^2) complexity on long UV island borders - Brecht Van Lommel
- Refactor: Texture Paint: Fix poor time complexity in island construction - Brecht Van Lommel
- Refactor: Texture Paint: Fuse image read, write and blend loops - Brecht Van Lommel
- Refactor: Texture Paint: Only build UV island data structures near borders - Brecht Van Lommel
- Refactor: Texture Paint: Only do seam copy for affected image tiles - Brecht Van Lommel
- Refactor: Texture Paint: Optimize triangle inside test for rasterization - Brecht Van Lommel
- Refactor: Texture Paint: Optimize undo tile detection while painting - Brecht Van Lommel
- Refactor: Texture Paint: Optimize with contiguous pixel row runs - Brecht Van Lommel
- Refactor: Texture Paint: Parallelize border extension and extraction - Brecht Van Lommel
- Refactor: Texture Paint: Parallelize image undo encode over tiles - Brecht Van Lommel
- Refactor: Texture Paint: Parallelize mask dilation over UDIM tiles - Brecht Van Lommel
- Refactor: Texture Paint: Parallelize mask rasterization over UDIM tiles - Brecht Van Lommel
- Refactor: Texture Paint: Parallelize UV island detection - Brecht Van Lommel
- Refactor: Texture Paint: Parallelize UV island mask dilation - Brecht Van Lommel
- Refactor: Texture Paint: Remove UVIslands struct - Hans Goudey
- Refactor: Texture Paint: Remove vert_tris from persistent pixel data - Brecht Van Lommel
- Refactor: Texture Paint: SIMD optimize sRGB conversion - Brecht Van Lommel
- Refactor: Texture Paint: Split seam copy per pixel data structure - Brecht Van Lommel
- Refactor: Texture Paint: Steal paint tile buffer for image undo encode - Brecht Van Lommel
- Refactor: Texture Paint: Store per-primitive pixel data in tight Array - Brecht Van Lommel
- Refactor: Texture Paint: Store pixel start coord per run - Brecht Van Lommel
- Refactor: Texture Paint: Store pixel to 3D position per primitive - Brecht Van Lommel
- Refactor: Texture Paint: Use TriRasterizer for mask rasterization - Brecht Van Lommel
- Refactor: Texture Paint: Watertight rasterization - Brecht Van Lommel
- Refactor: Use BM_mesh_edgeloops_find for Circularize - Tariq-Sulley
- Refactor: Use BM_mesh_edgeloops_find for Space Edge Loops Evenly - Tariq-Sulley
- Refactor: Use FunctionRef for BM_mesh_edgeloops functions - Tariq-Sulley
Sculpt
Tests
- Tests: Add many lights render test - Miguel Pozo
- Tests: add corrupt .blend reader files - Campbell Barton
Translations
- I18N: Updated UI translations from git/weblater repository (4d34bbee606410). - Bastien Montagne
- I18N: Updated UI translations from git/weblate repository (c916188216fbc6). - Bastien Montagne
User Interface
- UI: Add tests for pie menus - phantomsoldierking
- 🔸 UI: Improved IME Support - Campbell Barton
- 🔸 UI: Multi-line labels - Guillermo Venegas
- 🔸 Theme: Cleanup: Remove Theme Space Title setting - Pablo Vazquez
- 🔸 UI: Anim: Unify Keying options in Playback Controls - Pablo Vazquez
Utilities
Video Sequencer
- 🔸 VSE: Improve meta strip selection logic - il4n
- 🔸 VSE: Update scene strip content length when scene changes length - Falk David
XR
- 🔸 XR: Add Vive Tracker interaction profile extension - Ethan Porcaro
8 Comments
Oi, Pablo!
as always I'm asking about physics nodes, but now that I've been making physics sims... I'm curious at what level a redundant node is wanted. We could do collision detection with raycasts, SDF's, and proximity math, etc... but it's also pretty clear we also need a distinct collision detection node too.
also, someone in chat was asking about ragdolls! I think they're a long time coming, I think it would be fitting as one of the original tests of rig nodes + geometry/physics nodes assets!
Hey Pablo, are there any plans to improve Undos in Blender? Things like having more of them instead of capped at 256, diagnostics etc.
Heya Pablo glad to catch you live again, hope you and everyone are doing great. Question do you guys plan on more big animation changes or updates?
For example you guys are working on Animation layer which will be continuing in August, are their plans for updating Rigging to be done with nodes? faster viewport playback for rigs? this one i saw a while back, showing a lot of rigs playing fast in the viewport as a test. Not sure if it's still being worked on. Love what you guys are doing, will always keep supporting you guys and spread the word Thanks!
Hi Pablo, I appreciate your comments and engagement on RCS. does anyone else from the Blender Team ever look at right click select? there are so many good requests/ideas made but it feels like were all just talking to clouds sometimes... For example my super genius more boolean nodes suggestion blender.community/c/rightclickselect/Qjm5/
oi, cheeky
Hi Pablo!! I was wondering if there are any plans to allow users to move the asset shelf (perhaps vertical, or to the top, etc); I would love to move my brushes around; lol Thank you guys for all that you do!
Hola Pablo! Greetings from Breda, again :)
You suggested to me on Twitter proposing my Fracturing system for Blender Essentials. I would love to! I also messaged you about this on Blender Chat.
How can I go about this? Who should I talk to?
If there is no path towards proposals, maybe don't suggest it yet. I got my hopes up about contributing and now I feel disappointed if it's not possible.
Hello Pablo! Greetings from Mid-America
Are there any plans for a way (like on extensions.blender.org ) for folks to get their asset library url's out to the community?
I've started a project until something official happens: johnnygizmo.github.io/blender-asset-phonebook/ but didn't want to put too much into it if this was already in the cards.