Support for changing all selected items at once #44666

Closed
opened 2015-05-11 12:59:11 +02:00 by Paweł Łyczkowski · 31 comments

This is a design task for handling the UI side of this patch: https://developer.blender.org/D1286

Resources:
"The Evolution of Blenders User Interface" by William Reynish http://download.blender.org/documentation/bc2008/evolution_of_blenders_ui.pdf (page 20 deals with this topic)

This is a design task for handling the UI side of this patch: https://developer.blender.org/D1286 Resources: "The Evolution of Blenders User Interface" by William Reynish http://download.blender.org/documentation/bc2008/evolution_of_blenders_ui.pdf (page 20 deals with this topic)

Changed status to: 'Open'

Changed status to: 'Open'

Added subscriber: @PawelLyczkowski-1

Added subscriber: @PawelLyczkowski-1

#44695 was marked as duplicate of this issue

#44695 was marked as duplicate of this issue

#37902 was marked as duplicate of this issue

#37902 was marked as duplicate of this issue
Member

Added subscriber: @JulianEisel

Added subscriber: @JulianEisel

What William Reynish wrote about this here is still up to date I think.

So, to summarize: "Change for all selected" should be (eventually) the default action when changing data values. This way you control the scope of objects for which the values are changed is by selection, which is quite powerful at this point (selecting by type, linked, grouped, in outliner, in 3d view etc.). So to change for one object, you select one object. To change for a range, you select a range of objects.

It can't, I guess, work like this for things like the material slots, light nodes, armature layers, bone groups etc. - but sticking to the "set for active" behavior for these sections would make things inconsistent and confusing.

A way to keep consistency, and to keep things simple, would be to hide them, and display them only when a single object is selected.

What William Reynish wrote about this [here ](http://download.blender.org/documentation/bc2008/evolution_of_blenders_ui.pdf) is still up to date I think. So, to summarize: "Change for all selected" should be (eventually) the default action when changing data values. This way you control the scope of objects for which the values are changed is by selection, which is quite powerful at this point (selecting by type, linked, grouped, in outliner, in 3d view etc.). So to change for one object, you select one object. To change for a range, you select a range of objects. It can't, I guess, work like this for things like the material slots, light nodes, armature layers, bone groups etc. - but sticking to the "set for active" behavior for these sections would make things inconsistent and confusing. A way to keep consistency, and to keep things simple, would be to hide them, and display them only when a single object is selected.

Added subscriber: @bliblubli

Added subscriber: @bliblubli

We agree with nearly everything you said. For materials, and other datas specific to one object or it's data, why not simply concatenate the lists ?
obj_1 has material1 and material2
obj_2 has material1 and material3
obj_3 has material 3 and material5
the list of materials shows materials 1,2,3 and 5. If you change one of them, only the objects with those materials get affected. It's already the case if they are selected or not anyway.

We agree with nearly everything you said. For materials, and other datas specific to one object or it's data, why not simply concatenate the lists ? obj_1 has material1 and material2 obj_2 has material1 and material3 obj_3 has material 3 and material5 the list of materials shows materials 1,2,3 and 5. If you change one of them, only the objects with those materials get affected. It's already the case if they are selected or not anyway.

BMesh API support editing multiple objects at once. When Blender supports it in the future, assigning materials to faces with multiple objects selected will be even easier then.

BMesh API support editing multiple objects at once. When Blender supports it in the future, assigning materials to faces with multiple objects selected will be even easier then.

the list of materials shows materials 1,2,3 and 5. If you change one of them, only the objects with those materials get affected. It's already the case if they are selected or not anyway.

The material slots are unnamed though. So when there are more that one empty, when more than one object is selected, you have no way of knowing which is which.

>the list of materials shows materials 1,2,3 and 5. If you change one of them, only the objects with those materials get affected. It's already the case if they are selected or not anyway. The material slots are unnamed though. So when there are more that one empty, when more than one object is selected, you have no way of knowing which is which.

then write the object name in () for those empty slots:
"empty (obj_X)"
"empty (obj_y)"
...

then write the object name in () for those empty slots: "empty (obj_X)" "empty (obj_y)" ...

For the case where a new slot is created with multiple objects selected, the user should be asked directly which material should be used to populate it (new or existing one) to allow quick configuration.

For the case where a new slot is created with multiple objects selected, the user should be asked directly which material should be used to populate it (new or existing one) to allow quick configuration.
Member

Added subscriber: @liquidape

Added subscriber: @liquidape
Member

I wrote this to the email thread, but I'll post here for archival purposes and so it does not get lost in the mix:

Just brainstorming here, but this sounds like the perfect project for the new widget system. Maybe when multiple objects are going to be modified, draw some sort of star widget on screen with little rays pointing to each object that is going to be modified.

Another idea would be to put a glowing outline around objects that are going to be modified - something like blizzard games do: http://i.imgur.com/8RvpyeQ.png

I wrote this to the email thread, but I'll post here for archival purposes and so it does not get lost in the mix: Just brainstorming here, but this sounds like the perfect project for the new widget system. Maybe when multiple objects are going to be modified, draw some sort of star widget on screen with little rays pointing to each object that is going to be modified. Another idea would be to put a glowing outline around objects that are going to be modified - something like blizzard games do: http://i.imgur.com/8RvpyeQ.png

A mockup of how things could work with multi-edit regarding materials.

mockups_01.png

When you have object or objects with no materials assigned to no material slots, you get fig.1. Clicking on New adds the material to all available material slots.

When you have objects selected with more than one material selected to it's material slots, you get fig.2 - a scrollable list of those materials, with all the goodies that lists have (sorting).

Selecting one of the materials in the list gives you fig.3, where you can replace the material on all of the material slots that it's assigned to, or unassign it. And of course edit it.

Next to the list is an menu button, as currently, depicted in fig.4, with options to unassign all materials from selection (meaning from all slots), replace all materials with a single one, or replace with a newly created one.

Material browser.

Fig.5 is the material browser. Shown are all materials, regardless of selection. The icons at the bottom are for changing the view from Grid to List. Materials can be dragged and dropped from here. When a material is selected, you get fig.6. You can edit it there, and by clicking on the menu button choose to Assign it to Selected, Reset the material to Default, Unassign from all Objects, or Delete (true delete, not unassign). Replace with Material replaces the material with the chosen material in all slots it resides in.

Same commands are also available when RMB clicking on a material (It gets selected to show what will be affected), or a multiple selected materials. When multiple materials are selected, no properties are displayed below, but actions described can be

Not sure about the Assigned and All Materials tabs. These could be 2 main tabs, just Material as currently, and Material Browser.


Any info on why this would work/not work?

**A mockup of how things could work with multi-edit regarding materials.** ![mockups_01.png](https://archive.blender.org/developer/F175175/mockups_01.png) When you have object or objects with no materials assigned to no material slots, you get fig.1. Clicking on New adds the material to **all** available material slots. When you have objects selected with more than one material selected to it's material slots, you get fig.2 - a scrollable list of those materials, with all the goodies that lists have (sorting). Selecting one of the materials in the list gives you fig.3, where you can replace the material on all of the material slots that it's assigned to, or unassign it. And of course edit it. Next to the list is an menu button, as currently, depicted in fig.4, with options to unassign all materials from selection (meaning from all slots), replace all materials with a single one, or replace with a newly created one. **Material browser.** Fig.5 is the material browser. Shown are all materials, regardless of selection. The icons at the bottom are for changing the view from Grid to List. Materials can be dragged and dropped from here. When a material is selected, you get fig.6. You can edit it there, and by clicking on the menu button choose to Assign it to Selected, Reset the material to Default, Unassign from all Objects, or Delete (true delete, not unassign). Replace with Material replaces the material with the chosen material in all slots it resides in. Same commands are also available when RMB clicking on a material (It gets selected to show what will be affected), or a multiple selected materials. When multiple materials are selected, no properties are displayed below, but actions described can be Not sure about the Assigned and All Materials tabs. These could be 2 main tabs, just Material as currently, and Material Browser. --- Any info on why this would work/not work?

Added subscriber: @michaelknubben

Added subscriber: @michaelknubben

A quote from @michaelknubben about some advanced functionality for this feature.

I think a modifier key could be used, but it would be for the distinction between absolute and relative adjustments, for instance in the case of location.
-Absolute would change every selected object's location to that of the active one when adjusted. If the active object is at x0y0z0, and you change its >location to x0y0z1, all selected objects, no matter their initial location, will now be at x0y0z1.
-Relative would (in the case of the above example) apply the difference between x0y0z0 and x0y0z1 (so: +1 on the z axis) to every selected object's >location.
Every selected object will now move 1 unit on the positive z axis, relative to their initial position.

A quote from @michaelknubben about some advanced functionality for this feature. >I think a modifier key could be used, but it would be for the distinction between absolute and relative adjustments, for instance in the case of location. >-Absolute would change every selected object's location to that of the active one when adjusted. If the active object is at x0y0z0, and you change its >location to x0y0z1, all selected objects, no matter their initial location, will now be at x0y0z1. >-Relative would (in the case of the above example) apply the difference between x0y0z0 and x0y0z1 (so: +1 on the z axis) to every selected object's >location. >Every selected object will now move 1 unit on the positive z axis, relative to their initial position.

Added subscribers: @mont29, @Januz

Added subscribers: @mont29, @Januz

+1 on William Reynish words!

Relative
I think rather than a modifier, we could use some form of notation. Like the # for drivers.
Someting like '+= 2' or '-=5'. That way you could also have /= and *=. This is Python syntax too, so it can expose users to some scripting concepts without having to touch any code.

I'm not sure this is in the scope of multi edit though, it's something that shold be added to numeric inputs (whether they are working in multi or not).

Materials
The materials mockup looks cool but rather than in tabs the browser, it could be a "materials" mode in the outliner. That way all browsing and managing can happen in one place.
Or maybe a "Linked Data" mode that shows all datablocks linked to the selected objects (materials, actions, etc.). Same options and settings you mention in the mocks.

Might want to talk with @mont29 too since it's getting into asset browser territory.

+1 on William Reynish words! **Relative** I think rather than a modifier, we could use some form of notation. Like the # for drivers. Someting like '+= 2' or '-=5'. That way you could also have /= and *=. This is Python syntax too, so it can expose users to some scripting concepts without having to touch any code. I'm not sure this is in the scope of multi edit though, it's something that shold be added to numeric inputs (whether they are working in multi or not). **Materials** The materials mockup looks cool but rather than in tabs the browser, it could be a "materials" mode in the outliner. That way all browsing and managing can happen in one place. Or maybe a "Linked Data" mode that shows all datablocks linked to the selected objects (materials, actions, etc.). Same options and settings you mention in the mocks. Might want to talk with @mont29 too since it's getting into asset browser territory.

Added subscriber: @Lapineige

Added subscriber: @Lapineige

Added subscriber: @DuarteRamos

Added subscriber: @DuarteRamos
Member

Added subscriber: @dairin0d

Added subscriber: @dairin0d
Member

I and Ivan Santic have been involved with addons that deal with multiple-object value editing. Perhaps our results can be of some help too?

http://wiki.blender.org/index.php/User:Dairin0d/BatchIdeas
http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/BatchTransforms
http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/BatchOperations

Hope we're not too late to the discussion.

I and Ivan Santic have been involved with addons that deal with multiple-object value editing. Perhaps our results can be of some help too? http://wiki.blender.org/index.php/User:Dairin0d/BatchIdeas http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/BatchTransforms http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/3D_interaction/BatchOperations Hope we're not too late to the discussion.
Member

Added subscriber: @BrendonMurphy

Added subscriber: @BrendonMurphy
Member

hi, after some discussion with Severin in irc, I have some suggestions on "apply to all".
With regard to Materials, we already have the option to apply to all in the materials_utils addon in release.
It would not be hard to move this function to the Materials Specials menu. This would fit in well with the ui & provide easy access to "apply active material to all selected objects". It could also be an option here to do some clean up on materials_utils addon & move it to the specials menu, enabled by default.
With regard to Modifiers, I often use "apply active modifier to all selected objects" as there's no 'Specials' for modifiers, it's easy to add options to the modifier panel.
Here's an image using addon code showing materials specials & modifier specials.
modifiers & materials.jpg

As for "to all selected" becoming a default action, personally I think this would be more difficult for users, I always want to add changes to the selected/active object, I only sometimes want to make these changes to all selected objects.

I'm not sure on the multi edit materials, I have extensive materials libs on blendswap, & rarely need to make batch changes, I can see use for it. maybe again, an operator in the materials specials with a pop up for multi select/batch name change would be an answer here.

Thanks.
Keep up the good work.

hi, after some discussion with Severin in irc, I have some suggestions on "apply to all". With regard to Materials, we already have the option to apply to all in the materials_utils addon in release. It would not be hard to move this function to the Materials Specials menu. This would fit in well with the ui & provide easy access to "apply active material to all selected objects". It could also be an option here to do some clean up on materials_utils addon & move it to the specials menu, enabled by default. With regard to Modifiers, I often use "apply active modifier to all selected objects" as there's no 'Specials' for modifiers, it's easy to add options to the modifier panel. Here's an image using addon code showing materials specials & modifier specials. ![modifiers & materials.jpg](https://archive.blender.org/developer/F221448/modifiers___materials.jpg) As for "to all selected" becoming a default action, personally I think this would be more difficult for users, I always want to add changes to the selected/active object, I only sometimes want to make these changes to all selected objects. I'm not sure on the multi edit materials, I have extensive materials libs on blendswap, & rarely need to make batch changes, I can see use for it. maybe again, an operator in the materials specials with a pop up for multi select/batch name change would be an answer here. Thanks. Keep up the good work.
Member

hi again,
Another option I came across would be to have a batch process menu embedded in the 'W' key specials menu's.
This also could work well as a quick way to access batch functions.
batch proccess.jpg
Thanks & best luck. :)

hi again, Another option I came across would be to have a batch process menu embedded in the 'W' key specials menu's. This also could work well as a quick way to access batch functions. ![batch proccess.jpg](https://archive.blender.org/developer/F221457/batch_proccess.jpg) Thanks & best luck. :)
Member

Added subscribers: @zeauro, @ideasman42

Added subscribers: @zeauro, @ideasman42
Member

Copying content of above merged task:

Original report by @zeauro:

Multi-value editing works between modifiers sharing same name.
It works between smoke flows of different types (fire, smoke,fire+smoke), between force fields of different types(Wind,Force..).
But it does not work between fluid and fluid inflows.
It works for illumination between lamps of different types. But it does not for shadows.

F174018
In this file, multi-value editing can give same Energy Color to selected lamps.
But it can not do it for Shadow Color, this layer only, only shadow options.
Spotlight settings are not changed. But they have same shadow type.

In scene.001, lamp type is the same. They are all spots with different buffer shadow types.
Multi-Value Editing works for shadow bias.

Comment from @ideasman42:

Currently lamps define different shadow properties for every lamp type, so the code that compares properties match will fail and not see them as being the same, even though from the user perspective they are.

This could be made to work - we could have some more comprehensive property comparison that checks callbacks match... or we could try having a way to not duplicate the properties to begin with. (though checked on this and it doesn't seem so trivial unless we do some trick with an intermediate ShadowLamp type which isn't used by HemiLamp 's, though this seems > overkill)

This is more of a TODO then a bug, but would be good to resolve still

There's also a BA thread for this (link ).

Copying content of above merged task: Original report by @zeauro: > Multi-value editing works between modifiers sharing same name. > It works between smoke flows of different types (fire, smoke,fire+smoke), between force fields of different types(Wind,Force..). > But it does not work between fluid and fluid inflows. > It works for illumination between lamps of different types. But it does not for shadows. > > > [F174018](https://archive.blender.org/developer/F174018/MVE_unconsistency.blend) > In this file, multi-value editing can give same Energy Color to selected lamps. > But it can not do it for Shadow Color, this layer only, only shadow options. > Spotlight settings are not changed. But they have same shadow type. > > In scene.001, lamp type is the same. They are all spots with different buffer shadow types. > Multi-Value Editing works for shadow bias. Comment from @ideasman42: > Currently lamps define different shadow properties for every lamp type, so the code that compares properties match will fail and not see them as being the same, even though from the user perspective they are. > >This could be made to work - we could have some more comprehensive property comparison that checks callbacks match... or we could try having a way to not duplicate the properties to begin with. *(though checked on this and it doesn't seem so trivial unless we do some trick with an intermediate `ShadowLamp` type which isn't used by `HemiLamp` 's, though this seems > overkill)* > > This is more of a TODO then a bug, but would be good to resolve still There's also a BA thread for this ([link ](http://blenderartists.org/forum/showthread.php?371132-Multi-Object-Editing_Copy-To-Selected-Workflow&p=2870294)).
Member

Added subscribers: @billrey, @eugenio_jr, @Tene, @BartekMoniewski, @JonathanWilliamson, @brecht, @koilz, @rulkens

Added subscribers: @billrey, @eugenio_jr, @Tene, @BartekMoniewski, @JonathanWilliamson, @brecht, @koilz, @rulkens
Member

Merged in a pretty similar task. This is planned to be handled as part of the 2.8 project.

Merged in a pretty similar task. This is planned to be handled as part of the 2.8 project.

Closed as duplicate of #54987

Closed as duplicate of #54987
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 project
No Assignees
11 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#44666
No description provided.