WIP: Node Editor: Improve frame joining during transform #105457
Draft
Leon Schittek
wants to merge 7 commits from
When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
lone_noel/blender:node-editor-frame-joining
into main
pull from: lone_noel/blender:node-editor-frame-joining
merge into: blender:main
blender:main
blender:blender-v4.0-release
blender:temp-sculpt-dyntopo
blender:blender-v3.6-release
blender:universal-scene-description
blender:blender-v3.3-release
blender:asset-browser-frontend-split
blender:brush-assets-project
blender:asset-shelf
blender:anim/armature-drawing-refactor-3
blender:temp-sculpt-dyntopo-hive-alloc
blender:tmp-usd-python-mtl
blender:tmp-usd-3.6
blender:blender-v3.5-release
blender:blender-projects-basics
blender:blender-v2.93-release
blender:temp-sculpt-attr-api
blender:realtime-clock
blender:sculpt-dev
blender:gpencil-next
blender:bevelv2
blender:microfacet_hair
blender:xr-dev
blender:principled-v2
When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
Reviewers
Request review
No reviewers
Labels
Clear labels
This issue affects/is about backward or forward compatibility
Issues relating to security: https://wiki.blender.org/wiki/Process/Vulnerability_Reports
Apply labels
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
This issue affects/is about backward or forward compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE & Viewport
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
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
Virtual Reality
Interest
Vulkan
Interest: Wayland
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
Issues relating to security: https://wiki.blender.org/wiki/Process/Vulnerability_Reports
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
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
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
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 Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
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 & Viewport
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
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
Virtual Reality
Interest
Vulkan
Interest: Wayland
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
EEVEE & Viewport
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
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
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
Milestone
Set milestone
Clear milestone
No items
No Milestone
Projects
Set Project
Clear projects
No project
Assignees
Assign users
Clear assignees
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#105457
Reference in New Issue
There is no content yet.
Delete Branch "lone_noel/blender:node-editor-frame-joining"
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?
Improve frame joining during transform:
Shift
Motivation
The current behavior does work well enough in most simple cases, but there are some issues, that could be improved:
Point (1.) and (2.) are problematic because during transform there can be a huge disconnect between the position of the transformed nodes and the frame they are joined into. The cursor isn't necessarily in the users focus while positioning the nodes.
This can be especially confusing when combined with inserting nodes into links which actually is based on the node's position.
Video of the issue: frame-node-join-issue.mp4
In a strange way, when I recalled previously seen examples of this, for some reason my brain told me that the nodes of the frame were animatedly growing to show that they were now the parent of this node...
d0974fd25e
to38d4153b8e
@blender-bot package
Package build started. Download here when ready.
38d4153b8e
to74e7e20ea3
@blender-bot package
Package build started. Download here when ready.
74e7e20ea3
to8ec8733806
@blender-bot package
Package build started. Download here when ready.
8ec8733806
to17c3d10a4e
17c3d10a4e
to069b5156d0
069b5156d0
toe2c4e057c4
I updated the PR according to some feedback here: #108358 (comment)
The behavior works as follows:
Shift
Here's a quick screenshot of what that looks like:

I really like this approach a lot more, it feels quite natural to me!
Highlighting the frame works great and I'm super happy that moving with G doesn't care about the cursor position anymore.
My only gripe with this would be that the dot doesn't look very elegant/has some readability issues. It should always be drawn on top (which I think it already is). Maybe drawing it a bit thicker and in (selection) orange would look better and more clear.
Additionally I think the unparent behavior should be the same when holding shift before dragging, as I mentioned in #108358 .
Once those two things are figured out and signed off (and code is reviewed) this is ready to merge imo.
The dot is now a bit thicker and using the selection color.
Still not great but I haven't come up with anything better, yet, and there doesn't seem to be a similar concept of "selection center indicator" elsewhere in blender to cheat off of.
I'll have to let that simmer a bit to see if I can come up with something better:
I also improved the behavior when pressing shift before dragging, but it isn't quite there, yet.
Since
Shift + Press
is toggling the selection it works nicely whenshift + Drag
-ing an unselected/inactive node - but unfortunately it will still deselect when dragging the active node...After tinkering with the keymap I'm unsure if this is something that can easily be worked around. It seems like a more general issue.
E.g.
ctrl + Drag
-ing a node will just select it rather than moving all currently selected nodes with the "invert snap" option. And the only reason pressingAlt
and the dragging works to detach a node is because it happens to not conflict with the selection keymap...But the whole keymap code seems pretty complicated so I might have mssed something.
Thanks for the update! This helps a lot with readability. Would be good to run this by the UI module, maybe someone has a good idea. For me a similar equivalent would be the origin point in the 3D viewport or the sequencer. It's not too bad as it is imo.
I think there is still some tweaking that can be done though. The none highlighted version imo is more important to see clearly than the highlighted one. Right now it's the other way around. Maybe they should both be filled, but highlighted changes the color slightly. We already have the frame highlight to indicate this anyways.