Image syncing between Editors via active image canvas #103636

Open
opened 2023-01-04 11:40:24 +01:00 by Julien Kaspar · 21 comments
Member

This is related to D16811 and similar improvements.

Issue

The purpose of this design is to avoid unintended syncing of images between the image editor, 3D viewport and shader editor.
The syncing is currently tied to the last active image texture node in the material. But since this is triggered with selection it leads to many accidents.
This has lead users to avoid using the syncing all together by pinning images and not using the "Material" texture selection in the 3D viewport.

Solution

The goal is to make the syncing an explicit action by

  • Using the active texture paint slot/canvas, instead of the last active image texture node
  • Indicating the active image canvas on any image texture node that uses it with an icon (Eye icon for example)
  • Changing the active image canvas in the node editor via an explicit action (Clicking the icon)
  • For faster use, add a shortcut (like double clicking on an image texture node) to make the image canvas active
  • For reference, add a context menu entry with the used shortcut

image.png

This also affects other areas where currently the active image texture node is being used:

  • General Image editor display
  • 3D viewport solid shading with color set to Texture
  • Baking target texture
  • UV editing image aspect ratio

This wouldn't contradict current cases of icons in the top-right corner.

image.png

This is related to [D16811](https://archive.blender.org/developer/D16811) and similar improvements. ## Issue The purpose of this design is to avoid unintended syncing of images between the image editor, 3D viewport and shader editor. The syncing is currently tied to the last active image texture node in the material. But since this is triggered with selection it leads to many accidents. This has lead users to avoid using the syncing all together by pinning images and not using the "Material" texture selection in the 3D viewport. ## Solution The goal is to make the syncing an explicit action by - Using the active texture paint slot/canvas, instead of the last active image texture node - Indicating the active image canvas on any image texture node that uses it with an icon (Eye icon for example) - Changing the active image canvas in the node editor via an explicit action (Clicking the icon) - For faster use, add a shortcut (like double clicking on an image texture node) to make the image canvas active - For reference, add a context menu entry with the used shortcut ![image.png](https://archive.blender.org/developer/F14113191/image.png) This also affects other areas where currently the active image texture node is being used: - General Image editor display - 3D viewport solid shading with color set to Texture - Baking target texture - UV editing image aspect ratio This wouldn't contradict current cases of icons in the top-right corner. ![image.png](https://archive.blender.org/developer/F14113193/image.png)
Philipp Oeser was assigned by Julien Kaspar 2023-01-04 11:40:24 +01:00
Author
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'
Author
Member

Added subscriber: @JulienKaspar

Added subscriber: @JulienKaspar
sizuka00 commented 2023-01-04 13:11:00 +01:00 (Migrated from localhost:3001)

Added subscriber: @sizuka00

Added subscriber: @sizuka00
sizuka00 commented 2023-01-04 13:11:00 +01:00 (Migrated from localhost:3001)

This comment was removed by @sizuka00

*This comment was removed by @sizuka00*
Member

Added subscriber: @HooglyBoogly

Added subscriber: @HooglyBoogly
Member

What changes is this proposing for the geometry nodes viewer node? It's not clear to me how it's different from what's described here.

What changes is this proposing for the geometry nodes viewer node? It's not clear to me how it's different from what's described here.
Member

Added subscriber: @brecht

Added subscriber: @brecht
Member

We should probably use the IMAGE icon? (since that is used for both Image Editor and inside the Paint Slot list)
That would need two states though (since every Image Texture node would have the icon to click on and only one can be active, so needs a state to indicate "active")
image.png

But it does have implications for the Viewer Node, as that one could also benefit for the same improvements of making the action more explicit.

What changes is this proposing for the geometry nodes viewer node? It's not clear to me how it's different from what's described here.

Also not sure about this (Viewer nodes wont be affected by this at all, same as Nodegroups and Output nodes)

There is a case though (currently not covered by the syncing if I am correct) which is compositing Image nodes. If we ever want to cover these as well, they would have two icons next to each other ("Toggle Preview" and the new "Sync to Image Editor").
But since that would be new functionality anyways, I would not worry about this at this point.

Using the active image of the current material, instead of the last active image texture node

From a code perspective, I assume NODE_ACTIVE_TEXTURE / NODE_ACTIVE_PAINT_CANVAS could be kept and used for this -- code just tweaked to handle this differently (not on selection etc).
(Or was the plan to introduce something new to indicate the active image?)

I would like to include @brecht here (since this might affect how the new texture/layer/painting works)

We should probably use the `IMAGE` icon? (since that is used for both Image Editor and inside the Paint Slot list) That would need two states though (since every Image Texture node would have the icon to click on and only one can be active, so needs a state to indicate "active") ![image.png](https://archive.blender.org/developer/F14114908/image.png) > But it does have implications for the Viewer Node, as that one could also benefit for the same improvements of making the action more explicit. > What changes is this proposing for the geometry nodes viewer node? It's not clear to me how it's different from what's described here. Also not sure about this (Viewer nodes wont be affected by this at all, same as Nodegroups and Output nodes) There is a case though (currently not covered by the syncing if I am correct) which is compositing Image nodes. If we ever want to cover these as well, they would have two icons next to each other ("Toggle Preview" and the new "Sync to Image Editor"). But since that would be new functionality anyways, I would not worry about this at this point. > Using the active image of the current material, instead of the last active image texture node From a code perspective, I assume `NODE_ACTIVE_TEXTURE` / `NODE_ACTIVE_PAINT_CANVAS` could be kept and used for this -- code just tweaked to handle this differently (not on selection etc). (Or was the plan to introduce something new to indicate the active image?) I would like to include @brecht here (since this might affect how the new texture/layer/painting works)
Author
Member

@HooglyBoogly @lichtwerk The reason I bring up the Viewer Node is this:
Do we want switching viewer Nodes also to be an explicit action instead of using active selection?

But I agree, it's unrelated so I'll remove it from the description.

And yes we might want to use the image icon instead. But it would need a disabled state too.
Graying out the icon if the image is not active would be fine by me.

@HooglyBoogly @lichtwerk The reason I bring up the Viewer Node is this: Do we want switching viewer Nodes also to be an explicit action instead of using active selection? But I agree, it's unrelated so I'll remove it from the description. And yes we might want to use the image icon instead. But it would need a disabled state too. Graying out the icon if the image is not active would be fine by me.

Making the operation more explicit and indicating the state with an icon seems good to me.

It's not clear to me what is meant by "active image" in the description. We have an active texture node, and active texture paint slot/canvas. Are these proposed to become the same thing? Or would they still exist as distinct states, and if so what is each used for?

Making the operation more explicit and indicating the state with an icon seems good to me. It's not clear to me what is meant by "active image" in the description. We have an active texture node, and active texture paint slot/canvas. Are these proposed to become the same thing? Or would they still exist as distinct states, and if so what is each used for?
Julien Kaspar changed title from Image syncing between Editors via active image state to Image syncing between Editors via active image canvas 2023-01-05 15:30:04 +01:00
Author
Member

@brecht True. I updated the task to use more accurate terminology.

@brecht True. I updated the task to use more accurate terminology.

Thanks, but it's still not clear to me if the concept of the active texture node goes away entirely then or not?

Thanks, but it's still not clear to me if the concept of the active texture node goes away entirely then or not?
Author
Member

Even if this design gets implemented, the active texture node would still be used as a baking target (until the baking workflow gets a new design).
What else is the active texture node currently used for?

Even if this design gets implemented, the active texture node would still be used as a baking target (until the baking workflow gets a new design). What else is the active texture node currently used for?

It's used for:

  • Image editor display
  • 3D viewport solid shading with color set to Texture
  • Baking
  • UV editing image aspect ratio

I think it would be wrong for this to affect display in the image editor and 3D viewport but then not have baking and UV editing tools follow along. They should be coupled so what you see matches what you are editing.

It's used for: * Image editor display * 3D viewport solid shading with color set to Texture * Baking * UV editing image aspect ratio I think it would be wrong for this to affect display in the image editor and 3D viewport but then not have baking and UV editing tools follow along. They should be coupled so what you see matches what you are editing.
Member

In #103636#1469485, @lichtwerk wrote:
From a code perspective, I assume NODE_ACTIVE_TEXTURE / NODE_ACTIVE_PAINT_CANVAS could be kept and used for this -- code just tweaked to handle this differently (not on selection etc).

I would also keep it "like it is" (in regards to what above flags do / what they are used for), just setting these happens differently (e.g. clicking the icon instead of selecting the node)

> In #103636#1469485, @lichtwerk wrote: > From a code perspective, I assume `NODE_ACTIVE_TEXTURE` / `NODE_ACTIVE_PAINT_CANVAS` could be kept and used for this -- code just tweaked to handle this differently (not on selection etc). I would also keep it "like it is" (in regards to what above flags do / what they are used for), just setting these happens differently (e.g. clicking the icon instead of selecting the node)
Author
Member

@brecht Ok I think you are right. We should use the active image canvas/slot for all these cases.

@brecht Ok I think you are right. We should use the active image canvas/slot for all these cases.
Member

I would assume that once we move this to be an explicit action, we will drop the exception that Render Results and Compositing Viewer wont be changed in the Image Editor, right?
This was more or less added to avoid "accidents", if this is an implicit action, we can be sure the user really wants to see that image in the Image Editor, right?

I would assume that once we move this to be an explicit action, we will **drop** the exception that `Render Results` and `Compositing Viewer` wont be changed in the Image Editor, right? This was more or less added to avoid "accidents", if this is an implicit action, we can be sure the user really wants to see that image in the Image Editor, right?

I don't think we would drop that exception, it's still helpful when you have multiple image editors open. In other apps the render result / compositing viewer is a different type of editor even.

I don't think we would drop that exception, it's still helpful when you have multiple image editors open. In other apps the render result / compositing viewer is a different type of editor even.
Author
Member

I also think that we should keep those exceptions. If the user set the image viewer to a render/compositing result, they wouldn't want that to change with syncing.
That's why a pinning feature is not even exposed there I assume (That and because these images cannot be assigned to anything)

Often a second image viewer area is added to show a texture at the same time.

I also think that we should keep those exceptions. If the user set the image viewer to a render/compositing result, they wouldn't want that to change with syncing. That's why a pinning feature is not even exposed there I assume (That and because these images cannot be assigned to anything) Often a second image viewer area is added to show a texture at the same time.
Member

@brecht , @JulienKaspar : thx for the input, that makes sense then.

@brecht , @JulienKaspar : thx for the input, that makes sense then.
Julien Kaspar added this to the Sculpt, Paint & Texture project 2023-02-08 10:20:48 +01:00
Philipp Oeser removed the
Interest
Sculpt, Paint & Texture
label 2023-02-10 09:10:55 +01:00
Philipp Oeser added the
Interest
Nodes & Physics
label 2023-02-10 11:20:19 +01:00
Member

One other thing that came up in #106146 (a related issue where it is not obvious what images get baked to and why -- in case you have multiple materials with images): would we support not having any active image? (I assume this would make sense, afaict, there is no way to really do this, deselecting an image node does not clear its active state). But if we allow for this (by clicking on those icons for all images until all are greyed out), we could prevent baking to images in other materials that were not intended to be baked to.

One other thing that came up in #106146 (a related issue where it is not obvious what images get baked to and why -- in case you have multiple materials with images): would we support not having **any** active image? (I assume this would make sense, afaict, there is no way to really do this, deselecting an image node does not clear its active state). But if we allow for this (by clicking on those icons for all images until all are greyed out), we could prevent baking to images in other materials that were not intended to be baked to.
Sign in to join this conversation.
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
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
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
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
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
No Milestone
No Assignees
5 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#103636
No description provided.