Blender 4.2 ALPHA - Blender Today LIVE #249
Changelog
252 commits in total, of which 47 are fixes and 53 cleanup.
Add runtime field on the Scene
- Add runtime field on the Scene - Sergey Sharybin
Anim
- Anim: Motion Paths in camera space - Christoph Lendenfeld
- Anim: Graph Editor - automatically lock key translation to a single axis - Christoph Lendenfeld
- Anim: Fix animation baking for Armature props creating a group per prop - Sybren A. Stüvel
Assets
- Assets: Use inheritance for asset library class - Julian Eisel
- Assets: Add further dedicated derived classes for asset libraries - Julian Eisel
BKE_idtype
- BKE_idtype: Add access to IDTypeInfo from idtype index. - Bastien Montagne
BLI
- BLI: improve finding elements in IndexMask - Jacques Lucke
- BLI: support content based slicing in IndexMask - Jacques Lucke
- BLI: Bump SSE check from 4.1 to 4.2 - Thomas Dinges
-
BLI: Fix non-square matrix print (
cout<<). - casey bianco-davis - BLI: add comparison operators for IndexMask - Iliya Katueshenock
- BLI: support repeating index masks - Jacques Lucke
Build
- Build: Update 4.1 libraries to fix CVEs - Brecht Van Lommel
- Build: upgrade OIDN to 2.2-rc2 - Xavier Hallade
- Build: unbreak building flex on Rock8 Linux from aclocal-1.16 - Campbell Barton
- Build: unbreak building flex on Rock8 Linux from aclocal-1.16 - Campbell Barton
- Build: add additional packages for Linux (cuda-toolkip & autogen) - Campbell Barton
- Build: document and check GCC/CUDA/HIP compiler version for libraries - Brecht Van Lommel
- Build: Disable TIFF sphinx docs for library dependencies - Brecht Van Lommel
- Build: macOS support for "make source_archive" - Brecht Van Lommel
CMake/MSVC
- CMake/MSVC: deploy cuda support for oidn if available - Ray Molenkamp
Camera
- Camera: Make alpha a factor property - Hans Goudey
Clang-Format
- Clang-Format: Ensure new line at the end of files - Sergey Sharybin
Cleanup
- Cleanup: Store asset shelf types in vector of unique_ptr - Hans Goudey
- Cleanup: Use this keyword to access class methods in UI views - Hans Goudey
- Cleanup: Use references and const in interface_layout.cc - Hans Goudey
- Cleanup: UI Remove more unnecessary a1 and a2 parameters - Hans Goudey
- Cleanup: improve naming consistency, use doxy sections for splash screen - Campbell Barton
- Cleanup: correct variable name - Campbell Barton
-
Cleanup: Make
io/usd/internheaders fully Cpp ones. - Bastien Montagne -
Cleanup: Make
io/usd/hydraandrender/hydraheaders fully Cpp ones. - Bastien Montagne - Cleanup: quiet missing-declarations & unused variable warnings - Campbell Barton
- Cleanup: spelling in comments - Campbell Barton
- Cleanup: correct comment - Jacques Lucke
- Cleanup: Unused variable warnings - Omar Emara
- Cleanup: use ID_IS_LINKED - Jacques Lucke
- Cleanup: Deduplicate operator paths properties reading in io importers - Guillermo Venegas
- Cleanup: Make format - Hans Goudey
- Cleanup: Unused enum value that should not have been in recent commit - Brecht Van Lommel
- Cleanup: Add missing forward declaration - Hans Goudey
-
Cleanup: Curves Selection: Rename
coordsargument tolasso_coords- Falk David - Cleanup: Use std::string for operator props popup arguments - Hans Goudey
- Cleanup: Remove unnecessary .c_str() calls - Hans Goudey
- Cleanup: Make format - Hans Goudey
- Cleanup: Minor improvement to comment in DNA_ID.h - Bastien Montagne
- Cleanup: replace magic numbers with event value, improve function name - Campbell Barton
- Cleanup: fix formatting. - Lukas Tönne
-
Cleanup: Use generic
RNA_MOD_OBJECT_SETfor GP3 modifier RNA setters. - Lukas Tönne - Cleanup: Use StringRef instead of C strings in CustomData API - Hans Goudey
-
Cleanup: run
make format- Sybren A. Stüvel - Cleanup: Fix string format warning after recent commit - Hans Goudey
- Cleanup: Simplify asset metadata copying - Hans Goudey
- Cleanup: Remove unused parameter - Miguel Pozo
- Cleanup: correct misleading name - Campbell Barton
- Cleanup: New line at the end of file - Sergey Sharybin
- Cleanup: Move BLO_readfile.h to C++ - Hans Goudey
- Cleanup: Anim, add explanation to bone collection code - Sybren A. Stüvel
- Cleanup: Update naming in mesh DNA header comments - Hans Goudey
-
Cleanup: Move
BKE_blender.hto CPP header. - Bastien Montagne -
Cleanup: Move
BKE_path.hto CPP header. - Bastien Montagne -
Cleanup: Move
BKE_callbacks.handBKE_cachefile.hto CPP headers. - Bastien Montagne -
Cleanup: Move
BKE_collection.hto CPP header. - Bastien Montagne - Cleanup: make format. - Bastien Montagne
- Cleanup: use "value_or" for optional types instead of ternary operators - Campbell Barton
- Cleanup: use UV instead of Uv in code-comments - Campbell Barton
- Cleanup: spelling in comments - Campbell Barton
- Cleanup: wrap lines for in CMake's build-environment for readability - Campbell Barton
- Cleanup: move convexhull_2d to C++ - Campbell Barton
- Cleanup: minor changes to convexhull_2d - Campbell Barton
-
Cleanup: Make
BKE_global.ha Cpp header. - Bastien Montagne -
Cleanup: Make
BKE_report.ha full Cpp header. - Bastien Montagne -
Cleanup: Make
BKE_scene.ha full Cpp header. - Bastien Montagne - Cleanup: Remove unused internal FFMPEG presets - Thomas Dinges
- Cleanup: comments in convexhull_2d, correct variable name - Campbell Barton
- Cleanup: replace qsort with std::sort - Campbell Barton
- Cleanup: resolve missing declaration warning - Campbell Barton
Clenup
- Clenup: Move BLT headers to Cpp. - Bastien Montagne
Compositor
- Compositor: Port GPU Inpaint node to CPU - Omar Emara
- Compositor: Unify Bokeh Blur between CPU and GPU - Omar Emara
- Compositor: Implement per-node execution time report - Sergey Sharybin
- Compositor: Unify Variable Size Bokeh Blur node - Omar Emara
Correct version bump from 41b63ebda2b264165feee1f7c4c0113eb76c8bd9
- Correct version bump from 41b63ebda2b264165feee1f7c4c0113eb76c8bd9 - Campbell Barton
Curves
- Curves: fix incorrect brackets in assert. - Lukas Tönne
- Curves: Improve copy and move assignment - Hans Goudey
Cycles
- Cycles: Option to disable OpenImageDenoise GPU per scene - Nikita Sirgienko
- Cycles: Gray out hardware raytracing checkboxes when not available - Nikita Sirgienko
- Cycles: Fix Python error in has_oidn_gpu_devices - Nikita Sirgienko
- Cycles: Set quality parameter for OIDN - Nikita Sirgienko
- Cycles: Metal support for OpenImageDenoise - Stefan Werner
- Cycles: Unify logging for devices discovery - Nikita Sirgienko
- Cycles: Log devices that are supported by OIDN - Nikita Sirgienko
- Cycles: Denoise on CPU by default for offline render - Nikita Sirgienko
- Cycles: Fix initial OIDN GPU denoiser quality - Attila Afra
- Cycles: Future-proof ordering of AppleGPUArchitecture enum - Michael Jones
- Cycles: Override World option per View Layer - JonasDichelle
- Cycles: Rename SSE4.1 kernel to SSE4.2 - Thomas Dinges
Disable EEVEE-Next
- Disable EEVEE-Next - Miguel Pozo
Docs
- Docs: Update rna manual references - Thomas Dinges
EEVEE-Next
- EEVEE-Next: Remove Light Probes visibiility options for Lights - Miguel Pozo
- EEVEE-Next: Implement viewlayer filters - Clément Foucault
- EEVEE-Next: Change light_attenuation_facing - Clément Foucault
Extensions
- Extensions: hide the remote URL checkbox for repositories - Campbell Barton
- Extensions: de-duplicate and improve doc-strings - Campbell Barton
- Extensions: add handlers for synchronizing & downloading updates - Campbell Barton
- Extensions: tweak wording for updating operators - Campbell Barton
Fix
- Fix: EEVEE-Next: Broken Normal and AO pass for emissive materials - Clément Foucault
- Fix: DRW: Out of bound index in PassSortable - Clément Foucault
- Fix: UI: fix off by one error in new image vectorscope code - Aras Pranckevicius
- Fix: VSE prefetching doesn't work - Richard Antalik
- Fix: Presets overriding drag-n-drop data - Guillermo Venegas
- Fix: Simplify "Volume Resolution" not updating for non volume objects - Philipp Oeser
- Fix: Cycles OIDN GPU denoiser bugs - Attila Áfra
- Fix: duplicate modifier uids with overrides - Jacques Lucke
- Fix: Stack use after return in RNA preprocessing after recent commit - Hans Goudey
- Fix: Operator popup crash with default arguments - Hans Goudey
- Fix: Release all OIDN GPU resources when recreating denoiser - Attila Afra
- Fix: crash when separating grease pencil in geometry nodes - Jacques Lucke
- Fix: Prevent erroneous values for detail_size and detail_percent - Sean Kim
- Fix: GPv3: Draw tool not writing hardness attribute - Falk David
- Fix: EEVEE: Volumes don't render - Miguel Pozo
- Fix: GPU: Fix closure evaluation order - Miguel Pozo
- Fix: Issue with Cycle aware keying when inserting second key - Christoph Lendenfeld
- Fix: Crash in Inpaint node for large images - Omar Emara
- Fix: GPv3: Draw tool overwrites hardness value - Falk David
- Fix: EEVEE-Next: Crashing tests caused by new properties - Clément Foucault
- Fix: Cycles uses GPU device for denoise even if disabled for scene - Brecht Van Lommel
- Fix: Cycles denoise fails with multi tile render and Use GPU off - Brecht Van Lommel
- Fix: EEVEE Next: View Layer Motion Blur UI - Miguel Pozo
- Fix: GPv3: Read/write of the parsubstr (parent bone name) - Lukas Tönne
- Fix: LibOverride: Memory leak after recent std::string conversion - Hans Goudey
- Fix #108754: remove overactive color management assert - Jesse Yurkovich
- Fix #113365: Backdrop lines don't match height in nla - Pratik Borhade
- Fix #113803: some cloth weight groups change on reordering - Damien Picard
- Fix #116188: hair puff works incorrect with symmetry - Philipp Oeser
- Fix #117572: Top vertical scrollbar tool not working properly - Julian Eisel
- Fix #117632: IME input crash after refactor to use std::string - Hans Goudey
- Fix #117760: Regression: Ctrl+Z causes Losing Audio Sound - Sergey Sharybin
- Fix #117783: Allow Multiple Negatives in Numerical Inputs with Units - Campbell Barton
- Fix #117813: Precision ignored for some slider buttons - Hans Goudey
- Fix #117816: Import USD DistantLight as Blender Sun light - Jesse Yurkovich
- Fix #117851: Crash switching to Camera with Background image - Pratik Borhade
- Fix #117859: Viewport compositor crash for empty camera region - Omar Emara
- Fix #117865: "Create Face Sets" operator crashes for multires - Hans Goudey
- Fix #117887: fix asan alloc-dealloc-mismatch - Jacques Lucke
- Fix #117900: Sculpt mode doesn't clear face corner normals - Hans Goudey
- Fix #117903: Copy as driver crash - Hans Goudey
- Fix #117915: GP: Assign material button is missing - Pratik Borhade
- Fix #117929: Extract face set operator crash - Hans Goudey
- Fix #117929: Extract face set operator crash - Hans Goudey
- Fix #117931: Swap oidn device when changing "Use GPU" during viewport render - Nikita Sirgienko
- Fix #117956: Revert Last Chance Placeholder Default - Harley Acheson
- Fix #117971: wrong indices in sculpt undo/restore colors - Philipp Oeser
- Fix #117972: Anim, Bake Action errors when both Pose and Object are off - Sybren A. Stüvel
- Fix #117988: Anim, Crash when baking action - Sybren A. Stüvel
- Fix #117989: GPv3: Cannot move Node(s) in Geo Node Editor in 'Edit Mode' - Philipp Oeser
- Fix #118014: Sculpt: Some brushes don't work with dyntopo - Hans Goudey
- Fix #118034: Cycles: Driven View Layer property not considered in realtime - Sergey Sharybin
- Fix #118061: Tooltip Length Calculation Clipped for Enums - Harley Acheson
- Fix #118103: Warning property alt navigation - Germano Cavalcante
- Fix #96458: Add channel processing for UsdUVTexture - Philipp Oeser
- Fix (studio-reported) RNA allowing to rename linked IDs. - Bastien Montagne
- Fix assert when setting default collapsed state of items - Julian Eisel
- Fix assertion when creating an override of a enum custom property. - Alexander Gavrilov
- Fix broken MacOS builds after recent refactor. - Bastien Montagne
- Fix building FreeStyle with Python 3.12 - Campbell Barton
- Fix compilation error when WITH_COMPOSITOR_CPU is OFF - Sergey Sharybin
- Fix crash browsing file/directory properties within popups - Campbell Barton
- Fix crash with fractional scaling on Wayland with NVIDIA graphics - Koranir
- Fix crashes when connecting cyclic grease pencil curves - Lukas Tönne
- Fix cross_poly_v2 returning a negated value, add tests - Campbell Barton
- Fix division by 0 in tree view drawing - Julian Eisel
- Fix division by 0 in tree view drawing - Julian Eisel
- Fix error suppressing double-click events for modal keymap handling - Campbell Barton
- Fix incorrect update tag handling in inactive depsgraphs - Sergey Sharybin
- Fix incorrect use of EVENT_* types as a flag - Campbell Barton
- Fix manpage hiding lines beginning with single quotes - Campbell Barton
- Fix missing dependency in CMake file - Sergey Sharybin
- Fix missing keymaps for UV editor tools - Campbell Barton
- Fix missing keymaps for UV editor tools - Campbell Barton
- Fix return types in docs for matrix.zero, quat's .negate and .identity - Andrej730
GHOST/WIN32
- GHOST/WIN32: remove start time offset from getMilliSeconds - Campbell Barton
GPU
- GPU: Optimize GLStorageBuf::read performance - Miguel Pozo
GPv3
- GPv3: Move to layer: Add popup for entering new layer name - Falk David
- GPv3: Separate operator - Matias Mendiola
- GPv3: Handle vertex groups in the GPv2 conversion operator - Lukas Tönne
- GPv3: Layer Parenting/Transforms - Falk David
- GPv3: Add initial weight paint mode support - Falk David
- GPv3: Add and reorder menus to follow GPv2 menu layout - Matias Mendiola
- GPv3: Lattice modifier - Lukas Tönne
- GPv3: Dash modifier - Lukas Tönne
- GPv3: Assert drawing before first frame - Pratik Borhade
Geometry Nodes
- Geometry Nodes: Add local/global toggle to Rotate Rotation node - Hans Goudey
- Geometry Nodes: improve socket naming in Sample nodes - Jacques Lucke
- Geometry Nodes: use Still mode by default in Bake node - Jacques Lucke
- Geometry Nodes: Move instance reference indices to a builtin attribute - Hans Goudey
Grease Pencil
I18N
- I18N: Fix missing Danish language. - Bastien Montagne
- I18N: Updated UI translations from git/weblate (3f985abe2708530). - Bastien Montagne
I18N/UI Messages fixes.
- I18N/UI Messages fixes. - Bastien Montagne
I18n
- I18n: extract and disambiguate a few messages - Damien Picard
- I18n: use IFACE_ to translate status bar info & viewport statistics - Damien Picard
IDManagement
- IDManagement: Update the Purge operator to display an interactive popup. - Bastien Montagne
LibOverride
- LibOverride: avoid unnecessary GHash lookup - Jacques Lucke
Lights
- Lights: Option to use old point light falloff - Brecht Van Lommel
Mesh
- Mesh: Add "Set Sharpness by Angle" operator - Hans Goudey
Modifiers
- Modifiers: add unique modifier identifiers - Jacques Lucke
- Modifiers: remove modifier session_uid in favor of persistent_uid - Jacques Lucke
- Modifiers: Increase the length of name strings in ModifierTypeInfo - Lukas Tönne
Nodes
- Nodes: improve handling of deprecated nodes - Jacques Lucke
Outliner
- Outliner: Add shortcut to Add Object and Duplicate - Pablo Vazquez
Readfile
- Readfile: Make 'alloc name' for ID type automatically generated. - Bastien Montagne
Refactor
-
Refactor: USD: Rename
usd.hhtousd_private.hh- Bastien Montagne - Refactor: Turn main USD public header into full Cpp one. - Bastien Montagne
-
Refactor: Use new math API for
ED_view3d_ob_project_mat_get_from_obmat- Falk David - Refactor: Use std::string for keymap string return values - Hans Goudey
- Refactor: RNA property undo push only when there is an owner ID - Brecht Van Lommel
- Refactor: EEVEE-Next: Light-probe management and structure - Clément Foucault
Refactor
BKE_lib_query_unused_ids
API.
-
Refactor
BKE_lib_query_unused_idsAPI. - Bastien Montagne
Release cycle
- Release cycle: Start of 4.2, Bcon1 - Thomas Dinges
- Release cycle: 4.1, Bcon3 - Thomas Dinges
Render
- Render: Merge EEVEE and Cycles motion blur settings - Miguel Pozo
Revert "Disable EEVEE-Next"
- Revert "Disable EEVEE-Next" - Miguel Pozo
Revert "Outliner
- Revert "Outliner: Add shortcut to Add Object and Duplicate" - Pablo Vazquez
Revert "Release cycle
- Revert "Release cycle: 4.1, Bcon3" - Thomas Dinges
Sculpt
- Sculpt: Disable sculpt brushes on invisible objects - Sean Kim
- Sculpt: Disable sculpt expand operator on invisible objects - Sean Kim
- Sculpt: Disable sculpt trim operators on invisible objects - Sean Kim
- Sculpt: Disable sculpt sample detail size on invisible objects - Sean Kim
Tests
- Tests: Reduce threshold on denoising now all platforms use OIDN 2.2 - Brecht Van Lommel
- Tests: add tests for convexhull_2d - Campbell Barton
- Tests: disable BLI_convexhull_2d_test which fails on macOS - Campbell Barton
UI
- UI: Add missing data-block icons in Outliner - Nika Kutsniashvili
- UI: fix and improve a few messages - Damien Picard
- UI: expose the custom directory as a path property - Campbell Barton
- UI: Image Editor Vectorscope Improvement - JonasDichelle
- UI: Move Bone Collection specials menu up - Pablo Vazquez
- UI: Import dialog popup feedback - Guillermo Venegas
- UI: Merge Spin and spin duplicate tools - Pratik Borhade
- UI: Configurable Layout Separators - Harley Acheson
VSE
- VSE: default to new "Auto" image filter for strips - Aras Pranckevicius
- VSE: Simplify and speedup sequencer cache drawing - Aras Pranckevicius
Versioning
- Versioning: add missing version update for renamed key-map - Campbell Barton
Windows
- Windows: Enhance our debug batch files - Jesse Yurkovich
bl_i18n_utils - bugs saving translations to py files and finding po strings if context is not present in the file
code_clean
- code_clean: fix error running header_clean - Campbell Barton
deps_builder
- deps_builder: Update oidn diff - Ray Molenkamp
- deps_builder: update ffmpeg diff - Ray Molenkamp
- deps_builder: Fix broken hash for sqlite - Ray Molenkamp
deps_builder/win
- deps_builder/win: update perl to 5.38.0.1 - Ray Molenkamp
install_linux_packages
- install_linux_packages: update OIIO, OSL, LLVM and USD library versions. - Bastien Montagne
- install_linux_packages: Updated OIdenoise, level zero and OCIO versions. - Bastien Montagne
19 Comments
Hi Pablo, I hope that you have a great day. I will miss Blender Today, as it is a great show. The one thing I will really miss is the Live Q&A you did. My question is, will you or someone from Blender do a Live Q&A after Blender Today ends on #250? The reason is that the Q&A can only be done from someone that works at or with Blender, so someone else can do it and I don’t mean an hour, but maybe 20-30 minutes to ask community question s ones a week. And again, thank you for a great show.
is it any way to get the old Add Modifire back, not with an addon, but as a setting in Blender
That would be a bad idea. To explain: The old design is unsustainable. Eventually, all modifiers will be ported to Geometry nodes, and the modifier list will be completely dynamic and customizable. This does not work with the previous modifier list design.
@pablovazquez
Dear Pablo, Thank you for everything you have brought us over the years. I will miss your updates and review of the current Changelog. You have hinted at where we can go to find our own information to keep up to date with what is new. Can you please summarise the links we should be using so we can keep abreast of changes for ourselves?
Many thanks.
Chris
Hi Pablo! Thanks for all the work with keeping these going, and keeping blender users informed! I watch em most every week!
My question is about linking overrides. Specifically material overrides. It's been an issue for us for a long time. As of the current 4.0, I don't think material overrides are working. Any idea of the status of this? It could be user error, but I'm not able to override materials properly.
when will blender get a better glare node? or even a better compositor? right now the glare node is not usable for realistic results
Hello Pablo, hello all Is it an error that the Shading RGB node is possible to modify alpha but doesnt have alpha output? The documentation calls it rgb but the image and one text calls it rgba with yellow node output wich is not possible to extract from it by any means
Hey Pablo! How are you?
It's not a question, but I just noticed that the recent file history is now showing up when right clicking on the blender icon in the Windows task bar. It's a small thing compared to all the latest awesome features of blender but it really made my day :)
So thanks to the team, and thanks to you for the great show for all these years, I'll miss blender today!
Oi, Pablo!
... what tool do you use to generate these changelogs? just curious~
Greetings Pablo,
With the "Save Increment" feature added in Blender; is there a way to run diff on the different files? I would like to check in different versions of the Blender file in a vault system that tracks changes.
Greetings Pablo! Got a quick question regarding dependency loops, I've been very interested in rigging, but some of the rigging I've been working suffered from this issue, so I was wondering if there is any workaround to get the same result or if it would be possible to have some kind of "iterations" counter to improve stability at cost of performance, thanks!
Hola Pablo, First of all big, big thank you for the years of blender Updates. You made many Monday a lot better.
I'd like to know if there are requirements for new GPU code, for Example Physics implementations. Dose it have to be cross platform or is it ok to only implement it for CUDA or only for Metal? Cross platform is important but sometimes difficult. So is cross Platform required for a Blender release?
Hey, Pablo. Hope you're doing fine! Last week I asked you why the "Options" menu (In active tool properties) isn't next to other global transform options (Middle of header).
You said that these options depend on the Active Tool, which is why they're there, but that's false. Just like the other transform options in the middle of the header, they are Mode-specific, and have no relation to the Active tool at all. No matter what Active tool is selected, the "Options" menu is always displayed and always the same, even if the selected active tool does no transforms (Cursor, Select, Ruler, etc.) Could you explain what you meant? I still don't get why these transform options are placed there, and not next to other transform options! :D
Last week I shared an image for a quick fix. But you may be right that the options in the middle may take up too much space if those exposed buttons are also moved there. You may also be right, that some of the settings under "options" may not belong in the middle header in other modes (Will have to check). I will think this through and make a right-click select post. Hopefully, will share next week. (Will be the last "Blender Today" right? damn, I will miss this show... It's so chill)
Hi, is there a reason that some parts of Blender (Geometry nodes) use "Position" and other parts use "Location"? It's confusing when I'm trying to automate some things. Are there some logical rules, or it's just inconsistency from the past?
Could you give a specific example?
The input value for "Where things are in space" in Geometry nodes it's Position. In animation data it's Location. In Bpy it's co (for coordinates). My question is, why the inconsistency and what are the rules? Like when I want to place handles of a bezier curve... what should I be looking for? Position, Location, co, ...?
Hi Pablo, thank you for another BT live. Last week I posted here an idea/proposal for scene nodes that was too long for you to read on the live session. You mentioned that the idea seemed like the existing proposal of Collection nodes, but this is much more than that. The objective of scene nodes is to manage the scene collection and view layers to a higher degree that currently Blender is not able to do. For clarity Ive included a couple images on the proposal with some simple examples. You can just scroll down to the bottom and have a look if you like. Hope this is more clear. Cheers blender.community/c/rightclickselect/492x/
Hola Pablo!
Man... when last week I read about blender.today and all other communities would have stopped being maintained, I didn't get immediately that this would have meant also the end of monday blender.today videos... I gotta tell you, you will be missed! Your weekly updates have been a joy to watch and listen, and they were one of the reasons why I started using Blender. That being said, I know this choice is for the best and for a better management of resources and ultimately, the future of Blender. Thanks for these years of Blender updates, keep rocking!