Brush Asset - Technical Core-level Design #101908
Labels
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#101908
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This task is to design and keep track of how handling brushes will be done in the new Brush Asset system, from the Core module perspective mainly.
Changes in Brush Handling
Brushes are now (in most cases) purely run-time data.
LIB_TAG_RUNTIME
? Also related to #88555 (ID Management: Sanitize and clarify our ID tags) to some extent).b93025db59
RUNTIME
IDs do not make linked data 'directly linked'.RUNTIME
IDs are written in global undo steps..xxx
number suffix in the UI?Typically, real local brush data should only exist in files part of an asset repository.
Brushes are reset when closing and re-opening Blender, however they are kept across file opening within and editing session. So they are handled in a similar way to UI data (WindowManager etc. IDs) when 'load UI' is disabled, and moved from old to new Main on file loading.
Selecting a Brush
When selecting the asset:
Undo & File Loading
No undo support should be needed for brush usage nor editing. Brushes can therefore be fully ignored by undo system, and existing brushes should just be re-used as-is.
Brushes are also kept across file loading within a same Blender session, unless the (factory) startup file is loaded, or when loading to/from a brush asset library file.
Technically this has several complex implications, especially in
setup_app_data
part of the file loading process, mainly due to the fact that brushes can use other data-blocks. Currently:file_a.blend
, and then user openfile_b.blend
, a copy of that locale texture will become part offile_b.blend
.do_version
For modes moved to the new BrushAssets system, existing local brushes in older .blend files are often redundant and should be cleaned up.
Local brushes that are not defined as assets will not be shown to the user in the UI (they will only be reachable through the Outliner editor, python API, etc.).
To Be Investigated
Toolslot
The 'toolslots' system is used at least by the 'smooth mode' toggle option of stroke code, which does a weird 'hot-swap' between current brush and a smooth brush, searched first in the relevant entry of the toolslot. This needs to be investigated further.
Changed status from 'Needs Triage' to: 'Confirmed'
Added subscribers: @mont29, @JulienKaspar, @JulianEisel, @dfelinto
Added subscriber: @GeorgiaPacific
Is there a plan for how to handle versioning, how we will transitions from brushes saved in .blend files to assets?
I see that local brushes will be preserved. If asset brushes come bundled with Blender and are also loaded, for existing .blend files the user will be presented with duplicated brushes?
Should we automatically remove duplicated brushes? Or put local ones in a somewhat hidden state, with some way for users to add specific ones as draft and clear the remaining ones?
Also related to this, when you edit a brush asset .blend file, I guess it avoids loading the same brushes a second time through the asset system? In this case local brushes are not legacy data.
Regarding versioning, I thought removing local brushes which names and values match exactly the current default 'embedded' brushes would do the trick? The others would be kept as local brushes, up to the user to clean them up or transform them into assets.
Local brushes that are not defined as assets will not be shown to the user in the UI (they will only be reachable through the Outliner editor).
This is handled by the asset system itself, local brushes are shown as local assets, and not directly exposed as local IDs (besides, once again, from the Outliner view).
Ah right, if the brush selection UI for the various modes only lists asset brushes then I agree they are hidden well enough.
Removing duplicates by comparing with the default ones seems good too (maybe should be a to do item in this task?). Probably that comparison can be made a bit fuzzy by allowing some things to be different, e.g. a brush with just a different size does not need to be preserved. But not that important.
Good points indeed, will do.
Julian Eisel referenced this issue2023-03-30 12:53:59 +02:00
Bastien Montagne referenced this issue2023-09-08 14:39:51 +02:00
I think this can be closed now, the remaining concrete tasks are in #116337.