Global RTOs:
LMB - Enable RTO for all collections/Restore previous state.
Shift+LMB - Invert RTO state for all collections.
Shift+Ctrl+LMB - Isolate Collections of Selected Objects. (2.92+ Version Only)
Shift+Alt+LMB - Disable Collections of Selected Objects. (2.92+ Version Only)
Ctrl+LMB - Copy/Paste RTO state from/to all collections.
Ctrl+Alt+LMB - Swap RTO states for all collections.
Alt+LMB - Discard history and copy/swap states.
Renumber QCD Slots:
LMB - Renumber the QCD slots from the slot designated 1 (breadth first)
Alt-LMB - Reset numbering and start from the beginning.
Ctrl-LMB - Switch the renumber pattern to linear.
Shift-LMB - Constrain renumbering to a branch.
(All options can be combined with each other)
QCD Shortcuts: Move Widget:
V - Open move widget.
LMB - Move object to slot.
Shift+LMB - Add/Remove object to/from slot.
0-9 - Move object(s) to slot from 1 to 10 (0 = 10).
Alt+0-9 - Move object(s) to slot from 11 to 20 (0 = 20).
Shift+0-9 - Add/Remove object(s) to/from slot from 1 to 10 (0 = 10).
Shift+Alt+0-9 - Add/Remove object(s) to/from slot from 11 to 20 (0 = 20).
3D View:
0-9 - View QCD slot from 1 to 10 (0 = 10).
Alt+0-9 - View QCD slot from 11 to 20 (0 = 20).
Shift+0-9 - Toggle QCD slot view on/off from 1 to 10 (0 = 10).
Shift+Alt+0-9 - Toggle QCD slot view on/off from 11 to 20 (0 = 20).
Shift+= - Enable All QCD Slots. = - Isolate Collections of Selected Objects. - - Disable Collections of Selected Objects.
Shift+Alt+= - Disable All Non QCD Slots.
Ctrl+Alt+= - Disable All Collections.
Shift+Ctrl+= - Select All QCD Objects.
Alt+= - Discard QCD History.
H - Disable selected objects. -- If enabled in the preferences. (2.92+ Version Only)
Shift+H - Disable unselected objects. -- If enabled in the preferences. (2.92+ Version Only)
Alt+H - Restore disabled objects. -- If enabled in the preferences. (2.92+ Version Only)
3D View Header Widget:
LMB - View QCD slot.
Shift+LMB - Toggle QCD slot view on/off.
Ctrl+LMB - Move object(s) to slot.
Ctrl+Shift+LMB - /Add/Remove object(s) to/from slot.*Alt+LMB -*Select objects in slot.Ctrl+Shift+LMB - /Add/Remove object(s) in slot to/from selection.
3D View Header Widget - Quick View Toggles:
LMB - Enables all QCD slots.
Alt+LMB - Discard QCD slots history. (2.92+ Version Only)
LMB+Hold - Pops up a menu with all of the Quick View Toggles.
{F8424226}(Passive objects are objects that are selected but not active.)
Planned Features:
Remove child collections.
Remove object from Local View.
Potential Planned Features:
Duplicate collections.
Filter the active collection.
Allow hidden RTOs to be grouped in a popover.
Show sibling relationships using vertical lines.
Expose Phantom Mode to regular Blender. (Add Phantom Mode buttons to Outliner - needs much more comprehensive internal support)
Resize popup.
Allow horizontal scrolling in the tree view.
limit expand/collapse all to shown items in the tree view.
Grey out rows when collections not visible.
Condense UI.
Full support of objects and their Restriction Toggle states.
Viewing non-created QCD slots creates them.
Reorder collections.
"Find and replace" renaming for collections.
Custom RTOs (display collection objects as wireframe, bounds, etc.).
Allow other RTOs to be used by QCD (wireframe, bounds, VV or DV?).
Allow multiple collections to be linked to one QCD slot (Multislot).
Glossary:
Chaining: Dependent on parents for whether an RTO can be active. LMB: Left Mouse Button. QCD: Quick Content Display. QVT: Quick View Toggles. RTO: Restriction Toggle Option.
RTO Short Forms: EC: Exclude Checkbox. (Excludes the collection from the current view layer -- affects both 3d viewport and render -- non-chaining) SS: Selectability. (Disables selection for the collection in all view layers -- affects 3d viewport -- chaining) VV: Visibility. (Hides the collection from the current view layer -- affects 3d viewport -- chaining) DV: Disable Viewports. (Disables the collection in all view layers -- affects 3d viewport -- chaining) RR: Renderability. (Disables the collection from being rendered in all view layers -- affects render -- chaining) HH: Holdout. (Masks out the collection from the view layer -- affects render -- non-chaining) IO: Indirect Only. (Makes the collection only contribute indirectly (shadows/reflections) to the render for the current view layer -- affects render -- non-chaining)
Original Concept:
This is a collection manager that I created for my larger addon Advanced UI Menus (https://blenderartists.org/t/addon-advanced-ui-menus/592865). I believe I read somewhere that blender was looking for a better way to work with collections in the 3D Viewport; so, this is my solution to that problem.
This addon provides a popup window that includes a treeview (made out of a UIList and operators) with functions to add collections and subcollections, rename collections, move objects to collections, exclude collections, restrict selection on collections, hide collections, and remove collections. It correctly handles collection chains and allows you to isolate collections by shift-clicking, and you can move objects to multiple collections via shift-clicking as well. The addon will also show you what collections are visible and what collections the selected objects are in. In addition it will not allow objects to be removed from all collections entirely. All of the functionality is documented by tooltips, so if you open the collection manager and just hover over stuff you will be able to easily learn all of it's advanced functionality. And as a final note, the window will size itself based on the depth of collections so nothing gets squished.
{[F8771884](https://archive.blender.org/developer/F8771884/Collection_Manager_2020-08-11_00-29-09.png), layout=inline}{[F9263928](https://archive.blender.org/developer/F9263928/QCD_screenshot.png), layout=inline}
**Location** — *3D View (Object Mode)*
**Menu Location** — *Object->Collection->Collection Manager*
**Shortcut** — *M*
**BlenderArtists feedback thread:**
https://blenderartists.org/t/release-addon-collection-manager-feedback/1186198
**Workflow Video by @1D_Inc**
https://www.youtube.com/watch?v=yiti0xWO7Wg
**__**Latest Zip Downloads:**__**
*(minimum required blender version: 2.80)*
**Present in Blender 2.93:**
[Collection_Manager_v2_21_3.zip](https://archive.blender.org/developer/F10071028/Collection_Manager_v2_21_3.zip)
**Current Development (will go into Blender 3.0+):**
[Collection_Manager_v2_23_1.zip](https://archive.blender.org/developer/F11517416/Collection_Manager_v2_23_1.zip)
---
**__**Overview of Current Features:**__**
* Interactive treeview display of collections in an autosized popup window in the 3D View.
* View Layer integration and management.
* Add, rename, and remove collections and sub-collections.
* Set the active collection.
* Simple display and modification of the relationship of objects with collections.
* Restriction Toggle state with advanced manipulation.
* Filtering display of collections (filter by name, filter by selected objects, filter by QCD slots).
* Phantom Mode – All visibility changes made in this mode will be discarded when it’s disabled.
* Quick Content Display System (QCD)
**__**Modifier Shortcuts:**__**
**Expansion Operator:**
LMB - *Expand/Collapse sub-collections.*
Ctrl+LMB - *Expand/Collapse all sublevels*
Shift+LMB - *Isolate collection tree.*
Alt+LMB - *Discard history.*
**Set Object Collection Operator:**
LMB - *Move object(s) to collection.*
Shift+LMB - *Add/Remove object(s) to/from collection.*
**Local RTOs:**
LMB - *Toggle collection RTO on/off*
Shift+LMB - *Isolate collection RTO/Restore previous state.*
Shift+Ctrl+LMB - *Isolate collection RTO leaving children unchanged/Restore previous state.*
Ctrl+LMB - *Toggle collection+children RTOs on/off.*
Alt+LMB - *Discard history.*
**Remove Operator:**
LMB - *Remove collection.*
Ctrl + LMB *Remove collection+children. (**Not Yet Implemented**)*
**Global RTOs:**
LMB - *Enable RTO for all collections/Restore previous state.*
Shift+LMB - *Invert RTO state for all collections.*
Shift+Ctrl+LMB - *Isolate Collections of Selected Objects. (**2.92+ Version Only**)*
Shift+Alt+LMB - *Disable Collections of Selected Objects. (**2.92+ Version Only**)*
Ctrl+LMB - *Copy/Paste RTO state from/to all collections.*
Ctrl+Alt+LMB - *Swap RTO states for all collections.*
Alt+LMB - *Discard history and copy/swap states.*
**Renumber QCD Slots:**
LMB - *Renumber the QCD slots from the slot designated 1 (breadth first)*
Alt-LMB - *Reset numbering and start from the beginning.*
Ctrl-LMB - *Switch the renumber pattern to linear.*
Shift-LMB - *Constrain renumbering to a branch.*
(All options can be combined with each other)
![CM_Anatomy_5.png](https://archive.blender.org/developer/F8771880/CM_Anatomy_5.png)
**__**QCD Shortcuts:**__**
**Move Widget:**
V - *Open move widget.*
LMB - *Move object to slot.*
Shift+LMB - *Add/Remove object to/from slot.*
0-9 - *Move object(s) to slot from 1 to 10 (0 = 10).*
Alt+0-9 - *Move object(s) to slot from 11 to 20 (0 = 20).*
Shift+0-9 - *Add/Remove object(s) to/from slot from 1 to 10 (0 = 10).*
Shift+Alt+0-9 - *Add/Remove object(s) to/from slot from 11 to 20 (0 = 20).*
**3D View:**
0-9 - *View QCD slot from 1 to 10 (0 = 10).*
Alt+0-9 - *View QCD slot from 11 to 20 (0 = 20).*
Shift+0-9 - *Toggle QCD slot view on/off from 1 to 10 (0 = 10).*
Shift+Alt+0-9 - *Toggle QCD slot view on/off from 11 to 20 (0 = 20).*
Shift+= - *Enable All QCD Slots.*
`=` - *Isolate Collections of Selected Objects.*
`-` - *Disable Collections of Selected Objects.*
Shift+Alt+= - *Disable All Non QCD Slots.*
Ctrl+Alt+= - *Disable All Collections.*
Shift+Ctrl+= - *Select All QCD Objects.*
Alt+= - *Discard QCD History.*
H - *Disable selected objects. -- If enabled in the preferences. (**2.92+ Version Only**)*
Shift+H - *Disable unselected objects. -- If enabled in the preferences. (**2.92+ Version Only**)*
Alt+H - *Restore disabled objects. -- If enabled in the preferences. (**2.92+ Version Only**)*
**3D View Header Widget:**
LMB - *View QCD slot.*
Shift+LMB - *Toggle QCD slot view on/off.*
Ctrl+LMB - *Move object(s) to slot.*
Ctrl+Shift+LMB - /Add/Remove object(s) to/from slot.*Alt+LMB -*Select objects in slot.*Ctrl+Shift+LMB - /Add/Remove object(s) in slot to/from selection.*
**3D View Header Widget - Quick View Toggles:**
LMB - *Enables all QCD slots.*
Alt+LMB - *Discard QCD slots history. (**2.92+ Version Only**)*
LMB+Hold - *Pops up a menu with all of the Quick View Toggles.*
{[F8424226](https://archive.blender.org/developer/F8424226/QCD_OGL_Move_Widget_Anatomy.png)}***(Passive objects are objects that are selected but not active.)***
**__**Planned Features:**__**
* Remove child collections.
* Remove object from Local View.
**__**Potential Planned Features:**__**
* Duplicate collections.
* Filter the active collection.
* Allow hidden RTOs to be grouped in a popover.
* Show sibling relationships using vertical lines.
* Expose Phantom Mode to regular Blender. (Add Phantom Mode buttons to Outliner - needs much more comprehensive internal support)
* Resize popup.
* Allow horizontal scrolling in the tree view.
* limit expand/collapse all to shown items in the tree view.
* Grey out rows when collections not visible.
* Condense UI.
* Full support of objects and their Restriction Toggle states.
* Viewing non-created QCD slots creates them.
* Reorder collections.
* "Find and replace" renaming for collections.
* Custom RTOs (display collection objects as wireframe, bounds, etc.).
* Allow other RTOs to be used by QCD (wireframe, bounds, VV or DV?).
* Allow multiple collections to be linked to one QCD slot (Multislot).
**__**Glossary:**__**
**Chaining**: Dependent on parents for whether an RTO can be active.
**LMB**: Left Mouse Button.
**QCD**: Quick Content Display.
**QVT**: Quick View Toggles.
**RTO**: Restriction Toggle Option.
**RTO Short Forms:**
**EC**: Exclude Checkbox. (Excludes the collection from the current view layer -- affects both 3d viewport and render -- non-chaining)
**SS**: Selectability. (Disables selection for the collection in all view layers -- affects 3d viewport -- chaining)
**VV**: Visibility. (Hides the collection from the current view layer -- affects 3d viewport -- chaining)
**DV**: Disable Viewports. (Disables the collection in all view layers -- affects 3d viewport -- chaining)
**RR**: Renderability. (Disables the collection from being rendered in all view layers -- affects render -- chaining)
**HH**: Holdout. (Masks out the collection from the view layer -- affects render -- non-chaining)
**IO**: Indirect Only. (Makes the collection only contribute indirectly (shadows/reflections) to the render for the current view layer -- affects render -- non-chaining)
---
**__**Original Concept:**__**
This is a collection manager that I created for my larger addon Advanced UI Menus (https://blenderartists.org/t/addon-advanced-ui-menus/592865). I believe I read somewhere that blender was looking for a better way to work with collections in the 3D Viewport; so, this is my solution to that problem.
This addon provides a popup window that includes a treeview (made out of a UIList and operators) with functions to add collections and subcollections, rename collections, move objects to collections, exclude collections, restrict selection on collections, hide collections, and remove collections. It correctly handles collection chains and allows you to isolate collections by shift-clicking, and you can move objects to multiple collections via shift-clicking as well. The addon will also show you what collections are visible and what collections the selected objects are in. In addition it will not allow objects to be removed from all collections entirely. All of the functionality is documented by tooltips, so if you open the collection manager and just hover over stuff you will be able to easily learn all of it's advanced functionality. And as a final note, the window will size itself based on the depth of collections so nothing gets squished.
![Collection_Manager.png](https://archive.blender.org/developer/F7719440/Collection_Manager.png)
[Collection_Manager.zip](https://archive.blender.org/developer/F7719439/Collection_Manager.zip)
Well, Brendon, nice to see you are interested in solving an issue, thank you for invitation.
We are really appreciate that!
But there is a problem - to solve the problem, you need to determine exactly what the problem is.
This is not a “discomfort”, it is complete workflow problem and includes several issues that allow to perform complex work processes of a certain type in Blender, inaccessible to any other software.
Deep historic restoration relates to that workflow type, so several museums, like Smithsonian and Hermitage are currently involved in negotiations about multiple issues of complex workflows in 2.8
This solution, (like Pablo Vazquezwidget ) seems to solve nothing of them.
Sorry.
If to speak in collection management terms, without special workflow context - it feels much better than default.
We love ability to filer name - this is what we consider necessary by default for scenes that can easily contain thousands of collections.
It works only for disclosed paragraphs, so don't allow to find a collection in entire scene (like materials filtering does), but filtering idea it is a very nice step!
Also we love solid design of it. It is looking good, and handy. A good job!
It's UI confidently holds up to 7 levels of enclosure, and this is pretty much enough for most of cases. Default solution provides better unlimited capacity, but in a less presentable way.
Don't know if window resizing can solve that, it will also have a limit, so it is a usability solution vs capacity solution issue.
Isolating ability by pressing shift+hide (eye) button is also nice idea, but the problem is that it doesnot restores previous setup on second click.
There are several ways to view everyting in blender, but switch back to previous setup requires undo (which is dangerous and need accuracy) or managing View layers (which is long way, and also needs accuracy).
So there is no way currently to quiclky check up what is in some collection, and return to previous configured state, which is quite critical since there are dozens of them, and their content needs for attention.
Same thing for exclude collection checkbox .
Also would be nice to have "Restore on exit" checkbox, that will bring ability to eliminate all changes on window closing, like AutoCAD LAYWALK function's window have.
It also have numeration addressing broken, so M5 shortcut to send object to collection, visible by pressing 5 is also not working yet. We call this "M5" issue.
It is essential for creating temporal layouts, raking tons of unnamed items from imported scenes, or quick separation of exact contexts in complex projects.
Well, Brendon, nice to see you are interested in solving an issue, thank you for invitation.
We are really appreciate that!
But there is a problem - to solve the problem, you need to determine exactly what the problem is.
This is not a “discomfort”, it is complete workflow problem and includes several issues that allow to perform complex work processes of a certain type in Blender, inaccessible to any other software.
Deep historic restoration relates to that workflow type, so several museums, like Smithsonian and Hermitage are currently involved in negotiations about multiple issues of complex workflows in 2.8
This solution, (like Pablo Vazquez[widget ](https://github.com/venomgfx/addonitos/blob/master/collection_quickies.py)) seems to solve nothing of them.
Sorry.
_______________________________________
If to speak in collection management terms, without special workflow context - it feels much better than default.
We love ability to filer name - this is what we consider necessary by default for scenes that can easily contain thousands of collections.
It works only for disclosed paragraphs, so don't allow to find a collection in entire scene (like materials filtering does), but filtering idea it is a very nice step!
Also we love solid design of it. It is looking good, and handy. A good job!
It's UI confidently holds up to 7 levels of enclosure, and this is pretty much enough for most of cases. Default solution provides better unlimited capacity, but in a less presentable way.
Don't know if window resizing can solve that, it will also have a limit, so it is a usability solution vs capacity solution issue.
Isolating ability by pressing shift+hide (eye) button is also nice idea, but the problem is that it doesnot restores previous setup on second click.
There are several ways to view everyting in blender, but switch back to previous setup requires undo (which is dangerous and need accuracy) or managing View layers (which is long way, and also needs accuracy).
So there is no way currently to quiclky check up what is in some collection, and return to previous configured state, which is quite critical since there are dozens of them, and their content needs for attention.
Same thing for exclude collection checkbox .
Also would be nice to have "Restore on exit" checkbox, that will bring ability to eliminate all changes on window closing, like AutoCAD LAYWALK function's window have.
It also have numeration addressing broken, so M5 shortcut to send object to collection, visible by pressing 5 is also not working yet. We call this "M5" issue.
It is essential for creating temporal layouts, raking tons of unnamed items from imported scenes, or quick separation of exact contexts in complex projects.
Hi @1D_Inc I'm the creator of the Collection Manager addon. Thank you for the compliments.
This addon was designed with artists in mind, not deep historic restoration; however, since it sounds like the Collection Manager is close to what you are looking for, maybe I can work with you to improve it to accommodate your workflow.
First off the window will size its width to fit the collections accumulated depth, but blender does not allow it to do that while the window is open. If you manually add more child collections than the width will comfortably accommodate it will start to squish up, but if you close it and open it again, you will find that it has resized its width to fit its expanded contents.
You are correct that the second shift click does not restore the previous state, but enables all collections. It would be easy to make it restore the previous state, and would probably make more sense to do so. If no one objects to this behavior, I will implement it. If it does get implemented I will probably add a button to enable all collections at the top, The same goes for hiding.
I'm not familiar with AutoCAD, so I don't know about "Restore on exit". If you can describe it to me more in depth (what does it restore exactly? Visibility? Collections select status? New/deleted collections undone? Something else?), I can see about adding it.
I have no idea about this "M5" issue and I don't know if it's a problem with blender or my addon. If you can describe it in more detail I would be willing to see if something can be worked out to fix it.
The filtering is a byproduct of using a UIList. I didn't even expect it to get used (which was probably naive on my part). That said, I think there may be more that could be done to improve it. Again, if you can describe what you want in more detail I may be able to implement it.
You were right when you said that "To solve the problem, you need to determine exactly what the problem is." I don't know what the problem is. But if you are willing to explain it, I'm willing to try to solve it.
Hi @1D_Inc I'm the creator of the Collection Manager addon. Thank you for the compliments.
This addon was designed with artists in mind, not deep historic restoration; however, since it sounds like the Collection Manager is close to what you are looking for, maybe I can work with you to improve it to accommodate your workflow.
First off the window will size its width to fit the collections accumulated depth, but blender does not allow it to do that while the window is open. If you manually add more child collections than the width will comfortably accommodate it will start to squish up, but if you close it and open it again, you will find that it has resized its width to fit its expanded contents.
You are correct that the second shift click does not restore the previous state, but enables all collections. It would be easy to make it restore the previous state, and would probably make more sense to do so. If no one objects to this behavior, I will implement it. If it does get implemented I will probably add a button to enable all collections at the top, The same goes for hiding.
I'm not familiar with AutoCAD, so I don't know about "Restore on exit". If you can describe it to me more in depth (what does it restore exactly? Visibility? Collections select status? New/deleted collections undone? Something else?), I can see about adding it.
I have no idea about this "M5" issue and I don't know if it's a problem with blender or my addon. If you can describe it in more detail I would be willing to see if something can be worked out to fix it.
The filtering is a byproduct of using a UIList. I didn't even expect it to get used (which was probably naive on my part). That said, I think there may be more that could be done to improve it. Again, if you can describe what you want in more detail I may be able to implement it.
You were right when you said that "To solve the problem, you need to determine exactly what the problem is." I don't know what the problem is. But if you are willing to explain it, I'm willing to try to solve it.
This addon was designed with artists in mind, not deep historic restoration
Of course, a lot of things are designed for average workflows) It's whatever.
Average don't need all those proper tests with timings, actions per second, perception speed and so on.
However, hard workflows design includes averages, but average workflows design can't support hard.
First off the window will size its width to fit the collections accumulated depth
Don't know, what about horizontal scrollbar? Is it possible?)
You are correct that the second shift click does not restore the previous state...
Well, I thing it would be nice mostly for outliner, as it allows to navigate the scene.
Check up this proposal , it can be interesting and fresh.
I'm not familiar with AutoCAD, so I don't know about "Restore on exit".
It works simple - checkbox allows to decline all visibility changes, that was made since window was open.
When M window closes - visibility changes made in M window has gone.
You can find video about LAYWALK command in Layer Maniphest topic post.
I have no idea about this "M5"
That's easy. Create 5 boxes, put them to 5 collections - press 1 2 3 on top row of keyboard numbers.
You will see that some collection, numbered as 1 2 or 3 is isolated when you pressing number key.
Those 1 2 3 thing are "slots". They are needed for a very important thing, called "Concave workflow".
So, selecting some box and pressing M5 should send that box to collection, that is visible by pressing 5.
Pressing Shift+M, 234 should also add it to collections in slots 2,3 and 4.
That's it)
The filtering is a byproduct of using a UIList.
Well, you already made an "Expand" button, that technically solves filtering issue - so we are already able to find matching pattern is all scene's collections, and even see it's enclosing level. That's good job!)
I guess you understand how useful it will be in 1000 collection's file. I think, it will allow to survive in such files at some point =)
You were right when you said that "To solve the problem, you need to determine exactly what the problem is."
Well, complex systems requires proper proposals and tests.
We've spent a year to define what's wrong with QCD system and how it can be repaired in an easiest way.
We've spent a decade to finally bring proper snap proposal.
You are making a nice job, fixing things at some point you can observe. You are already doing your best)
Hi! Nice to meet you)
> This addon was designed with artists in mind, not deep historic restoration
Of course, a lot of things are designed for average workflows) It's whatever.
Average don't need all those proper tests with timings, actions per second, perception speed and so on.
However, hard workflows design includes averages, but average workflows design can't support hard.
> First off the window will size its width to fit the collections accumulated depth
Don't know, what about horizontal scrollbar? Is it possible?)
> You are correct that the second shift click does not restore the previous state...
Well, I thing it would be nice mostly for outliner, as it allows to navigate the scene.
Check up this [proposal ](https://devtalk.blender.org/t/gsoc-2019-outliner-improvements-ideas/7185/334?u=1d_inc), it can be interesting and fresh.
> I'm not familiar with AutoCAD, so I don't know about "Restore on exit".
It works simple - checkbox allows to decline all visibility changes, that was made since window was open.
When M window closes - visibility changes made in M window has gone.
You can find video about LAYWALK command in [Layer Maniphest ](https://devtalk.blender.org/t/layers-maniphest/6578) topic post.
> I have no idea about this "M5"
That's easy. Create 5 boxes, put them to 5 collections - press 1 2 3 on top row of keyboard numbers.
You will see that some collection, numbered as 1 2 or 3 is isolated when you pressing number key.
Those 1 2 3 thing are "slots". They are needed for a very important thing, called "Concave workflow".
So, selecting some box and pressing M5 should send that box to collection, that is visible by pressing 5.
Pressing Shift+M, 234 should also add it to collections in slots 2,3 and 4.
That's it)
> The filtering is a byproduct of using a UIList.
Well, you already made an "Expand" button, that technically solves filtering issue - so we are already able to find matching pattern is all scene's collections, and even see it's enclosing level. That's good job!)
I guess you understand how useful it will be in 1000 collection's file. I think, it will allow to survive in such files at some point =)
> You were right when you said that "To solve the problem, you need to determine exactly what the problem is."
Well, complex systems requires proper proposals and tests.
We've spent a year to define what's wrong with QCD system and how it can be repaired in an easiest way.
We've spent a decade to finally bring proper [snap ](https://youtu.be/w_zJAlN6vqc) proposal.
You are making a nice job, fixing things at some point you can observe. You are already doing your best)
hi @1D_Inc thanks for the feedback. It's appreciated.
I guess as addons devs we can only do so much until proper decisions and functions are in place. I saw this some time ago with the original layer manager addon by fourmadmen. My argue then for the Layer Manager addon was simple: We don't have this functionality, here's something to help users on the way until it gets built in. It's incredible that it was 10 years ago. https://developer.blender.org/T18565
I'm about to remove the old Layer Manager addon from Blender as it's broken and unmaintained in it's current form. It was with this in mind that I asked @Imaginer to submit his addon here.
I see this as a good opportunity to both examine the new methods and make a reasonable attempt to provide something if needed. No doubt the core devs will come up with a solution and all will be well at some stage. Possibly they may use some of the elements in "Collections Manager" addon, maybe it will be completely different. Here we are providing thought and working concepts.
I would say unless there's anything else planned that we could promote this addon to Addons Contrib for wider testing and feedback in nightly builds some time in the near future. with the aim of supplying functionality until it's built in. Not to replace or be a complete solution to the layers issue. Just as a helper for users who might need or make use of some of the functions early.
Thanks
hi @1D_Inc thanks for the feedback. It's appreciated.
I guess as addons devs we can only do so much until proper decisions and functions are in place. I saw this some time ago with the original layer manager addon by fourmadmen. My argue then for the Layer Manager addon was simple: We don't have this functionality, here's something to help users on the way until it gets built in. It's incredible that it was 10 years ago. https://developer.blender.org/T18565
I'm about to remove the old Layer Manager addon from Blender as it's broken and unmaintained in it's current form. It was with this in mind that I asked @Imaginer to submit his addon here.
I see this as a good opportunity to both examine the new methods and make a reasonable attempt to provide something if needed. No doubt the core devs will come up with a solution and all will be well at some stage. Possibly they may use some of the elements in "Collections Manager" addon, maybe it will be completely different. Here we are providing thought and working concepts.
I would say unless there's anything else planned that we could promote this addon to Addons Contrib for wider testing and feedback in nightly builds some time in the near future. with the aim of supplying functionality until it's built in. Not to replace or be a complete solution to the layers issue. Just as a helper for users who might need or make use of some of the functions early.
Thanks
guys, if you can create "the old quick layer visual grid" ... you're riding.
an addon would not bother anyone, and would be very useful to those who manage many models and collections to "catalog quickly"
guys, if you can create "the old quick layer visual grid" ... you're riding.
an addon would not bother anyone, and would be very useful to those who manage many models and collections to "catalog quickly"
Don't know, what about horizontal scrollbar? Is it possible?)
Not to my knowledge; at least I don't think I've ever seen a horizontal scrollbar on a UIList or popup. It would be a good solution, though. Maybe someday.
Check up this proposal, it can be interesting and fresh.
Yes, it's interesting. I think you've stated most of the points here and it seems like a lot of them will fit in nicely.
It works simple - checkbox allows to decline all visibility changes, that was made since window was open.
When M window closes - visibility changes made in M window has gone.
You can find video about LAYWALK command in Layer Maniphest topic post.
Neat post! The situation here is a little more complicated because of the way popups work and because you can add and remove layers, but I think I can come up with something that will satisfy. How about a button to clear visibility changes?
Some of the things in that post are out of the scope of this addon, but I may be able to add some of them into my addon Advanced UI Menus (it's my personal playground for anything that makes blender better/faster UI/Workflow wise)
About M5:
I think I understand, but I'm not sure yet how this can be integrated nicely into the collection manager, so I'll come back to that later after I've implemented some of the other improvements.
Well, you already made an "Expand" button, that technically solves filtering issue - so we are already able to find matching pattern is all scene's collections, and even see it's enclosing level. That's good job!)
I guess you understand how useful it will be in 1000 collection's file. I think, it will allow to survive in such files at some point =)
Nope! Total serendipity! :)
With the expand button I just thought someone might want to be able to look over all the collections without manually expanding stuff. Now that you mention it, I can see how it and filtering is useful in files with 1000s of collections. And speaking of filtering, I'm not sure where I saw this, but if you want to be able to filter on various collection attributes other than the name I think I could find a way to facilitate that.
@nokipaike
That may or may not fit in with this addon, I'll have to see, but I can always add it into Advanced UI Menus or submit it as a separate addon.
@BrendonMurphy @1D_Inc has given me a lot of good suggestions for improvement. If it's alright with you I'd like to develop it outside of contrib for a while longer. I feel that I'll have more freedom to make large changes if I don't have to worry about keeping everything really tidy for blender.
@1D_Inc
> Don't know, what about horizontal scrollbar? Is it possible?)
Not to my knowledge; at least I don't think I've ever seen a horizontal scrollbar on a UIList or popup. It would be a good solution, though. Maybe someday.
> Check up this proposal, it can be interesting and fresh.
Yes, it's interesting. I think you've stated most of the points here and it seems like a lot of them will fit in nicely.
> It works simple - checkbox allows to decline all visibility changes, that was made since window was open.
> When M window closes - visibility changes made in M window has gone.
> You can find video about LAYWALK command in Layer Maniphest topic post.
Neat post! The situation here is a little more complicated because of the way popups work and because you can add and remove layers, but I think I can come up with something that will satisfy. How about a button to clear visibility changes?
Some of the things in that post are out of the scope of this addon, but I may be able to add some of them into my addon [Advanced UI Menus ](https://blenderartists.org/t/addon-advanced-ui-menus/592865) (it's my personal playground for anything that makes blender better/faster UI/Workflow wise)
About M5:
I think I understand, but I'm not sure yet how this can be integrated nicely into the collection manager, so I'll come back to that later after I've implemented some of the other improvements.
> Well, you already made an "Expand" button, that technically solves filtering issue - so we are already able to find matching pattern is all scene's collections, and even see it's enclosing level. That's good job!)
> I guess you understand how useful it will be in 1000 collection's file. I think, it will allow to survive in such files at some point =)
Nope! Total serendipity! :)
With the expand button I just thought someone might want to be able to look over all the collections without manually expanding stuff. Now that you mention it, I can see how it and filtering is useful in files with 1000s of collections. And speaking of filtering, I'm not sure where I saw this, but if you want to be able to filter on various collection attributes other than the name I think I could find a way to facilitate that.
@nokipaike
That may or may not fit in with this addon, I'll have to see, but I can always add it into Advanced UI Menus or submit it as a separate addon.
@BrendonMurphy
@1D_Inc has given me a lot of good suggestions for improvement. If it's alright with you I'd like to develop it outside of contrib for a while longer. I feel that I'll have more freedom to make large changes if I don't have to worry about keeping everything really tidy for blender.
horizontal scrollbar on a UIList or popup. It would be a good solution, though. Maybe someday.
Well, at least it will be a nice issue for reasearch)
Yes, it's interesting. I think you've stated most of the points here and it seems like a lot of them will fit in nicely.
Good to know. It allows to expand management flexibility drastically, but I think that it mostly fits to outliner, to make Blender 2.8 management better by default.
You can find video about LAYWALK command in Layer Maniphest topic post.
Neat post! ... How about a button to clear visibility changes?
Thanks) There are multiple realizations of such ability possible. If you will make some, that you can, it can be tested for usability issues. You've got an idea, and this is a good point to start from!
About M5:
I think I understand, but I'm not sure yet how this can be integrated nicely into the collection manager, so I'll come back to that later after I've implemented some of the other improvements.
Well, it's also Blender internal problem - M5 is an issue of Quick Content Display system (QCD) integration, that interconnects Autonumeration, Acces system and GUI with workflow semantics, that allow to perform a wide range of constructive workflows, so we are trying to fix it in core.
"Expand" button
Nope! Total serendipity! :)
Lol, that was powerful sensitivity! That's awesome)
Yep, filtering after expand allows to filter everything, filtering works in a wildcard match way, so, basically, it is a very nice solution for managing heavyweight scenes)
I am not sure, that filtering collection attributes is needed, as far as collection's name stands for direct address access, and M filtering provides exactly that.
I am not a supporter of complication unless it is mandatory, so I’d better try to think about it some more.
That may or may not fit in with this addon, I'll have to see, but I can always add it into Advanced UI Menus or submit it as a separate addon.
Widget is also part of proper QCD system. It is related to those complex/constructive workflow problems from my first post.
As it was told, it seems to be impossible to solve it without interconnecting all three parts - Autonumeration, Acces system and GUI, so we really need it, but I agree with you - I don't think, that it can be solved as addon.
At least this particular one.
It is quite simple to solve, but Blender need to have people that performs complex constructive workflows in contact with core development.
If it's alright with you I'd like to develop it outside of contrib for a while longer. I feel that I'll have more freedom to make large changes if I don't have to worry about keeping everything really tidy for blender.
I am a concept designer of wide range of tools, so I agree - any kind of research in development is best done in the sandbox, becuse it is hard to predict how deep research will go.
So we are making sandbox development and workflow tests all the time)
> In #69577#776654, @Imaginer wrote:
> horizontal scrollbar on a UIList or popup. It would be a good solution, though. Maybe someday.
Well, at least it will be a nice issue for reasearch)
> Yes, it's interesting. I think you've stated most of the points here and it seems like a lot of them will fit in nicely.
Good to know. It allows to expand management flexibility drastically, but I think that it mostly fits to outliner, to make Blender 2.8 management better by default.
>> You can find video about LAYWALK command in Layer Maniphest topic post.
> Neat post! ... How about a button to clear visibility changes?
Thanks) There are multiple realizations of such ability possible. If you will make some, that you can, it can be tested for usability issues. You've got an idea, and this is a good point to start from!
> About M5:
> I think I understand, but I'm not sure yet how this can be integrated nicely into the collection manager, so I'll come back to that later after I've implemented some of the other improvements.
Well, it's also Blender internal problem - M5 is an issue of Quick Content Display system (QCD) integration, that interconnects Autonumeration, Acces system and GUI with workflow semantics, that allow to perform a wide range of constructive workflows, so we are trying to fix it in core.
>"Expand" button
> Nope! Total serendipity! :)
Lol, that was powerful sensitivity! That's awesome)
Yep, filtering after expand allows to filter everything, filtering works in a wildcard match way, so, basically, it is a very nice solution for managing heavyweight scenes)
I am not sure, that filtering collection attributes is needed, as far as collection's name stands for direct address access, and M filtering provides exactly that.
I am not a supporter of complication unless it is mandatory, so I’d better try to think about it some more.
> That may or may not fit in with this addon, I'll have to see, but I can always add it into Advanced UI Menus or submit it as a separate addon.
Widget is also part of proper QCD system. It is related to those complex/constructive workflow problems from my first post.
As it was told, it seems to be impossible to solve it without interconnecting all three parts - Autonumeration, Acces system and GUI, so we really need it, but I agree with you - I don't think, that it can be solved as addon.
At least this particular one.
It is quite simple to solve, but Blender need to have people that performs complex [constructive ](http://www.technocrazed.com/discover-amazing-cross-section-view-of-22-everyday-objects-cut-in-half) workflows in contact with core development.
> If it's alright with you I'd like to develop it outside of contrib for a while longer. I feel that I'll have more freedom to make large changes if I don't have to worry about keeping everything really tidy for blender.
I am a concept designer of wide range of tools, so I agree - any kind of research in development is best done in the sandbox, becuse it is hard to predict how deep research will go.
So we are making sandbox development and workflow tests all the time)
Update.
Made changes so that the previous state is restored when collections are un-isolated for the exclude and hide operators (Note: if you manually isolate a collection shift-clicking will restore all).
Added "restore all" operators for exclusion, select, and hide.
I'm thinking maybe it would be a good idea to allow isolation of selection and add in render visibility. Thoughts?
I will continue to implement the other improvements as I have time.
Concerning the QCD system/M5, I don't think it's out of the realm of possibility that an addon could provide a workflow similar to what you describe in your Layer Maniphest post. I may play around with some solutions.
Update.
Made changes so that the previous state is restored when collections are un-isolated for the exclude and hide operators (Note: if you manually isolate a collection shift-clicking will restore all).
Added "restore all" operators for exclusion, select, and hide.
I'm thinking maybe it would be a good idea to allow isolation of selection and add in render visibility. Thoughts?
I will continue to implement the other improvements as I have time.
Concerning the QCD system/M5, I don't think it's out of the realm of possibility that an addon could provide a workflow similar to what you describe in your Layer Maniphest post. I may play around with some solutions.
[Collection_Manager_1.zip](https://archive.blender.org/developer/F7771580/Collection_Manager_1.zip)
In #69577#781784, @Imaginer wrote:
Update.
Made changes so that the previous state is restored when collections are un-isolated for the exclude and hide operators (Note: if you manually isolate a collection shift-clicking will restore all).
Added "restore all" operators for exclusion, select, and hide.
A way better, a way more useful! That's next achievement - now we have ability to quickly look through content of set of collections!
You've got a suspicious collection? Now you can check up what is in it - one click in, one click out. A shift-toggle isolation!
However, you can't navigate viewport while window is opened, so it would be nice to have as outliner ability, but I guess you feel how much control it already gives to you)
If you want to send object to some collection - now you can simply check if that collection deserves to accept that object by fast and furious checking it's content. Or find appropriate one by set of simple isolations by that shift-toggling feature.
What do you mean about "manually isolate"? I tried several ways, but can't get it.
Turning off all collections manually except one?
Anyway, Shift-toggling seems to be working great)
I'm thinking maybe it would be a good idea to allow isolation of selection and add in render visibility. Thoughts?
First of all, let's us give short names to all that Restriction Toggles mess to make conversation more clean =)
Exclude from layer checkbox - EC
Selectability - SS
Hide in viewport - VV
Disable in viewport - DV
Disable in renders - RV
Holdout - HH
Indirect only - IO
A bit about what we are managing.
I am in doubt about selectability (SS) and Renderability (RV) presence because they are not related to visibility,
but, as far as your addon yet is the only way to check up collection's content by shift-toggling isolation, so their presence can be useful at some point.
Basically, visibility shift-toggling isolation allow you decide if collection deserves turning SS or RV off by checking it's content. And this is good and useful!
There are three ways to control collection's visibility in Blender 2.8 - Exclude checkbox (EC), Hide in Viewport (VV) and Disable in viewport (DV).
We has got just two of them (EC and VV) in Manager™.
I think that Disable in Viewport (DV) support is also needed with same conditions - just because it also influences visibility.
And that can be tricky - turning on VV hiding eye will not appear collection's object in viewport, because it can be disabled by DV.
So, turning on VV have to also influence DV, or it is needed to provide DV in manager, or... even both?
Hard to say. But observing and isolation of DV in the same way as VV is also needed, as far as it influences visibility - and requires same type of control.
Isolation of selection can be a button inside a Manager, because you can need to make that temporairly.
With the same reason, it would be nice to have [Restore Quit] checkbox, that will discard changes on window close, that will remember it's state on exit. It will be useful for large sets of temporary opreations like content sorting.
I will continue to implement the other improvements as I have time.
That's just awesome! You are making a great job, and your progress is astonishing, thank you for this!
I would like also propose some default changes -
Open Manager in expanded state by default. This will allow filtering immediately, and it is easy to collapse if needed. Remembering it's last expanding state would be gorgeous in case of multiple operations with the same collection, for example sending to same collection 10 different objects one by one, by opening Manager 10 times, and closing it for obtaining viewport navigation.
Make the Filter Field constantly open, since it does not take up much space, only one line. So hiding it does not save much space)
There are solutions in Blender that hides filtering line - for example, in materials list.
But there are the only way in our practice to make list of materials so long, that it's filtering is needed - it is our "All mats to active object" and "Selected mats to active object" scripts, that allow to create entire scene's material library from selected cube to manage materials and copy between scenes. By the way, together with "Mats Unclone", that solves ".001", ".005" mats suffixes, it is a handy solution, that solves all material management issues, but even it's result don't requires filtering so often.
On the contrary, collections are all about long lists of names to filter.
Your filtering is good, so there is no need to hide something that is so good.
Concerning the QCD system/M5, I don't think it's out of the realm of possibility that an addon could provide a workflow similar to what you describe in your Layer Maniphest post. I may play around with some solutions.
I know. That's why we have a long negotiations with core developers about that misconception. So I am not sure if it will be even good for you to spend much time for this.
That's for your consideration.
HI!
> In #69577#781784, @Imaginer wrote:
> Update.
> Made changes so that the previous state is restored when collections are un-isolated for the exclude and hide operators (Note: if you manually isolate a collection shift-clicking will restore all).
> Added "restore all" operators for exclusion, select, and hide.
A way better, a way more useful! That's next achievement - now we have ability to quickly look through content of set of collections!
You've got a suspicious collection? Now you can check up what is in it - one click in, one click out. A shift-toggle isolation!
However, you can't navigate viewport while window is opened, so it would be nice to have as outliner ability, but I guess you feel how much control it already gives to you)
If you want to send object to some collection - now you can simply check if that collection deserves to accept that object by fast and furious checking it's content. Or find appropriate one by set of simple isolations by that shift-toggling feature.
What do you mean about "manually isolate"? I tried several ways, but can't get it.
Turning off all collections manually except one?
Anyway, Shift-toggling seems to be working great)
> I'm thinking maybe it would be a good idea to allow isolation of selection and add in render visibility. Thoughts?
First of all, let's us give short names to all that Restriction Toggles mess to make conversation more clean =)
![TOGG.png](https://archive.blender.org/developer/F7772178/TOGG.png)
Exclude from layer checkbox - EC
Selectability - SS
Hide in viewport - VV
Disable in viewport - DV
Disable in renders - RV
Holdout - HH
Indirect only - IO
A bit about what we are managing.
I am in doubt about selectability (SS) and Renderability (RV) presence because they are not related to visibility,
but, as far as your addon yet is the only way to check up collection's content by shift-toggling isolation, so their presence can be useful at some point.
Basically, visibility shift-toggling isolation allow you decide if collection deserves turning SS or RV off by checking it's content. And this is good and useful!
There are three ways to control collection's visibility in Blender 2.8 - Exclude checkbox (EC), Hide in Viewport (VV) and Disable in viewport (DV).
We has got just two of them (EC and VV) in Manager™.
- I think that **Disable in Viewport (DV)** support is also needed with same conditions - just because it also influences visibility.
And that can be tricky - turning on VV hiding eye will not appear collection's object in viewport, because it can be disabled by DV.
So, turning on VV have to also influence DV, or it is needed to provide DV in manager, or... even both?
Hard to say. But observing and isolation of DV in the same way as VV is also needed, as far as it influences visibility - and requires same type of control.
- **Isolation of selection** can be a button inside a Manager, because you can need to make that temporairly.
- With the same reason, it would be nice to have **[Restore Quit]** checkbox, that will discard changes on window close, that will remember it's state on exit. It will be useful for large sets of temporary opreations like content sorting.
> I will continue to implement the other improvements as I have time.
That's just awesome! You are making a great job, and your progress is astonishing, thank you for this!
I would like also propose some default changes -
- Open Manager in **expanded state** by default. This will allow filtering immediately, and it is easy to collapse if needed.
**Remembering it's last expanding state** would be gorgeous in case of multiple operations with the same collection, for example sending to same collection 10 different objects one by one, by opening Manager 10 times, and closing it for obtaining viewport navigation.
- Make the **Filter Field** constantly open, since it does not take up much space, only one line. So hiding it does not save much space)
There are solutions in Blender that hides filtering line - for example, in materials list.
But there are the only way in our practice to make list of materials so long, that it's filtering is needed - it is our "All mats to active object" and "Selected mats to active object" scripts, that allow to create entire scene's material library from selected cube to manage materials and copy between scenes. By the way, together with "Mats Unclone", that solves ".001", ".005" mats suffixes, it is a handy solution, that solves all material management issues, but even it's result don't requires filtering so often.
On the contrary, collections are all about long lists of names to filter.
Your filtering is good, so there is no need to hide something that is so good.
> Concerning the QCD system/M5, I don't think it's out of the realm of possibility that an addon could provide a workflow similar to what you describe in your Layer Maniphest post. I may play around with some solutions.
I know. That's why we have a long negotiations with core developers about that misconception. So I am not sure if it will be even good for you to spend much time for this.
That's for your consideration.
It makes sense to read Manager buttons from Restriction Toggles, so it will be in sync with outliner, and allow to make button list much shorter, in case if user want, for example, only VV control.
I think your restore buttons also requires for shift-toggling control to be called "Restore" (otherwise, they are "Turn on" buttons).
But it is often needed to look up for entire scene, and go back to setup.
I would like to propose their behaviour in some other way, without shift, taking VV button as example.
I will try to explain:
Simple button press highlights it, VV global state is stored in variable VVX, and turns every VV on globally (VV=ON).
Second simple press resores previous state from VVX and turns button highlight off (that means, that somewhere VV is turned off).
This way we've got quick toggling switch between global VV=ON and stored VVX setup - so we can observe entire scene and go back to setup just pressing single button. In a toggle way.
2 States GIF:
While button is not highlighted manual visibility editing actions are not written to any variable.
While button is highlighted but something is turned off manually - button loose highlighting , VVX is cleared.
So next pressing will turn VV=ON globally, and write new VVX to switch between new VVX and VV=ON.
This way we has got ability to reset visibility globally and create new VV layout to switch.
That behaviour will look like this:
5 states GIF:
A bit about Restore buttons naming and behavoiur.
- It makes sense to **read Manager buttons from Restriction Toggles**, so it will be in sync with outliner, and allow to make button list much shorter, in case if user want, for example, only VV control.
I think your restore buttons also requires for shift-toggling control to be called "Restore" (otherwise, they are "Turn on" buttons).
But it is often needed to look up for entire scene, and go back to setup.
I would like to propose their **behaviour** in some other way, without shift, taking VV button as example.
____________________________
I will try to explain:
- Simple button press highlights it, VV global state is stored in variable VVX, and turns every VV on globally (VV=ON).
- Second simple press resores previous state from VVX and turns button highlight off (that means, that somewhere VV is turned off).
This way we've got quick toggling switch between global VV=ON and stored VVX setup - so we can observe entire scene and go back to setup just pressing single button. In a toggle way.
2 States GIF:
![D_a.gif](https://archive.blender.org/developer/F7772258/D_a.gif)
- While button is not highlighted manual visibility editing actions are not written to any variable.
- While button is highlighted but something is turned off manually - button loose highlighting , VVX is cleared.
So next pressing will turn VV=ON globally, and write new VVX to switch between new VVX and VV=ON.
This way we has got ability to reset visibility globally and create new VV layout to switch.
That behaviour will look like this:
5 states GIF:
![Toggle Behaviour.gif](https://archive.blender.org/developer/F7772333/Toggle_Behaviour.gif)
However, you can't navigate viewport while window is opened,
I think you'll find that if you isolate a collection, close the window, do stuff, open the window again, and shift-click, it will restore the collections to the previous state. 😄
What do you mean about "manually isolate"? I tried several ways, but can't get it.
Turning off all collections manually except one?
Yep. That one.
Then when you shift-click, it will enable everything.
First of all, let's us give short names to all that Restriction Toggles mess to make conversation more clean =)
Excellent idea!
I am in doubt about selectability (SS) and Renderability (RV) presence because they are not related to visibility,
The goal of my addon is to manage collections, not just visibility. Selectability (SS) needs to be there at least to some extent, and given that you make a case for swapping Hide in Viewport (VV) and Renderability (RV) I'm inclined to think that Renderability (RV) belongs in the Collection Manager as well.
There are three ways to control collection's visibility in Blender 2.8 - Exclude checkbox (EC), Hide in Viewport (VV) and Disable in viewport (DV).
I think that Disable in Viewport (DV) support is also needed with same conditions - just because it also influences visibility.
As you have stated, this is kind of a mess that blender has given us and I'm not sure what the best solution is to keep things feeling light and quick, but still provide all the needed functionality.
I'll try to figure something out that nicely handles it.
Open Manager in expanded state by default. This will allow filtering immediately, and it is easy to collapse if needed.
I think it would be better to keep it non-expanded by default, so the user is not flooded with detail. I think I can get filtering to work without expanding, but if I can't, I'll try having it expanded by default and see how everyone likes it.
With the same reason, it would be nice to have [Restore Quit] checkbox, that will discard changes on window close, that will remember it's state on exit. It will be useful for large sets of temporary opreations like content sorting.
This is tricky because the window will close if you move the mouse out of it (so it's very easy to make mistakes), even if I change the popup window to not close until you click outside of it (unfortunately this adds a giant useless ok button at the bottom) the usability doesn't get much better because neither allows you to interact with the 3D View. The same problem would exist for a simple operator; however, if I make an operator where the first click saves the visibility/selectability? (need to decide what this should affect) and the second click restores the saved state, that might work. It's not an ideal solution, but it would provide consistent results and allow interaction with the 3D View. Thoughts?
Remembering it's last expanding state would be gorgeous
I think I can do that 😄, but unfortunately I don't think I can restore where you had scrolled to. Note: this will make the above point about initial expansion state mostly inconsequential.
Make the Filter Field constantly open, since it does not take up much space, only one line. So hiding it does not save much space)
Sure. I hid it first because I didn't originally think it would get used, and I didn't know if it would work properly; since this is not the case I'll try having it open by default.
It makes sense to read Manager buttons from Restriction Toggles, so it will be in sync with outliner, and allow to make button list much shorter, in case if user want, for example, only VV control.
Yes and no. The outliner provides a right-click menu that allows you to perform some actions even if you haven't enabled that Restriction Toggle and it allows easy enable/disable of Restriction Toggles; mine doesn't.
If I provide a way to enable/disable the Restriction Toggles from the Collection Manager then it might make sense to do that, however I would like certain things to be available by default, so I'm not sure if that's viable or not. I'll play around with it.
I think your restore buttons also requires for shift-toggling control to be called "Restore" (otherwise, they are "Turn on" buttons).
But it is often needed to look up for entire scene, and go back to setup.
Simple button press highlights it, VV global state is stored in variable VVX, and turns every VV on globally (VV=ON).
While button is highlighted but something is turned off manually - button loose highlighting , VVX is cleared.
Second simple press resores previous state from VVX and turns button highlight off (that means, that somewhere VV is turned off).
This sounds like good functionality. But I'm not sold on the highlighting and the highlighting may get out of sync with the outliner, so I'll have to see.
> However, you can't navigate viewport while window is opened,
I think you'll find that if you isolate a collection, close the window, do stuff, open the window again, and shift-click, it will restore the collections to the previous state. :smile:
> What do you mean about "manually isolate"? I tried several ways, but can't get it.
> Turning off all collections manually except one?
Yep. That one.
Then when you shift-click, it will enable everything.
> First of all, let's us give short names to all that Restriction Toggles mess to make conversation more clean =)
Excellent idea!
> I am in doubt about selectability (SS) and Renderability (RV) presence because they are not related to visibility,
The goal of my addon is to manage collections, not just visibility. Selectability (SS) needs to be there at least to some extent, and given that you make a case for swapping Hide in Viewport (VV) and Renderability (RV) I'm inclined to think that Renderability (RV) belongs in the Collection Manager as well.
> There are three ways to control collection's visibility in Blender 2.8 - Exclude checkbox (EC), Hide in Viewport (VV) and Disable in viewport (DV).
> I think that Disable in Viewport (DV) support is also needed with same conditions - just because it also influences visibility.
As you have stated, this is kind of a mess that blender has given us and I'm not sure what the best solution is to keep things feeling light and quick, but still provide all the needed functionality.
I'll try to figure something out that nicely handles it.
> Open Manager in expanded state by default. This will allow filtering immediately, and it is easy to collapse if needed.
I think it would be better to keep it non-expanded by default, so the user is not flooded with detail. I think I can get filtering to work without expanding, but if I can't, I'll try having it expanded by default and see how everyone likes it.
> With the same reason, it would be nice to have [Restore Quit] checkbox, that will discard changes on window close, that will remember it's state on exit. It will be useful for large sets of temporary opreations like content sorting.
This is tricky because the window will close if you move the mouse out of it (so it's very easy to make mistakes), even if I change the popup window to not close until you click outside of it (unfortunately this adds a giant useless ok button at the bottom) the usability doesn't get much better because neither allows you to interact with the 3D View. The same problem would exist for a simple operator; however, if I make an operator where the first click saves the visibility/selectability? (need to decide what this should affect) and the second click restores the saved state, that might work. It's not an ideal solution, but it would provide consistent results and allow interaction with the 3D View. Thoughts?
> Remembering it's last expanding state would be gorgeous
I think I can do that :smile:, but unfortunately I don't think I can restore where you had scrolled to. Note: this will make the above point about initial expansion state mostly inconsequential.
> Make the Filter Field constantly open, since it does not take up much space, only one line. So hiding it does not save much space)
Sure. I hid it first because I didn't originally think it would get used, and I didn't know if it would work properly; since this is not the case I'll try having it open by default.
> It makes sense to read Manager buttons from Restriction Toggles, so it will be in sync with outliner, and allow to make button list much shorter, in case if user want, for example, only VV control.
Yes and no. The outliner provides a right-click menu that allows you to perform some actions even if you haven't enabled that Restriction Toggle and it allows easy enable/disable of Restriction Toggles; mine doesn't.
If I provide a way to enable/disable the Restriction Toggles from the Collection Manager then it might make sense to do that, however I would like certain things to be available by default, so I'm not sure if that's viable or not. I'll play around with it.
> I think your restore buttons also requires for shift-toggling control to be called "Restore" (otherwise, they are "Turn on" buttons).
> But it is often needed to look up for entire scene, and go back to setup.
> Simple button press highlights it, VV global state is stored in variable VVX, and turns every VV on globally (VV=ON).
> While button is highlighted but something is turned off manually - button loose highlighting , VVX is cleared.
> Second simple press resores previous state from VVX and turns button highlight off (that means, that somewhere VV is turned off).
This sounds like good functionality. But I'm not sold on the highlighting and the highlighting may get out of sync with the outliner, so I'll have to see.
Well, we are in the research development now, so we can freely create any experimental solutions, including overloading the user interface for testing purpose, in order to subsequently achieve minimalistic design by refactoring.
Also, as far as we are addon, we are not obliged to be synchronized that tight with the outliner.
This provides an additional degree of freedom at that point.
Well, we are in the research development now, so we can freely create any experimental solutions, including overloading the user interface for testing purpose, in order to subsequently achieve minimalistic design by refactoring.
Also, as far as we are addon, we are not obliged to be synchronized that tight with the outliner.
This provides an additional degree of freedom at that point.
It's not an ideal solution, but it would provide consistent results and allow interaction with the 3D View. Thoughts?
Still thinking...
I guess, first it can be "quit without saving changes" prototype button called "Restore Quit", placed somewhere, that will allow to feel the behaviour and test it.
It is hard to say how much useful it can be without having such prototype to test.
> It's not an ideal solution, but it would provide consistent results and allow interaction with the 3D View. Thoughts?
Still thinking...
I guess, first it can be "quit without saving changes" prototype button called "Restore Quit", placed somewhere, that will allow to feel the behaviour and test it.
It is hard to say how much useful it can be without having such prototype to test.
Update.
Fixed top row of buttons so all of them toggle between all enabled and restore to what you had. This should implement everything for that, except the highlighting.
Added a way to show hide the restriction toggles (just like in the outliner, but it isn't synced to the outliner).
Added restriction toggles and their all enabled / restore toggles above, so now the possible restriction toggles include:
Exclude from layer checkbox - EC
Selectability - SS
Hide in viewport - VV
Disable in viewport - DV
Disable in renders - RV
*note shift clicking works on all the restriction toggles
Expanded state is now remembered
Filtering is shown by default.
Filtering will now work regardless of what is expanded.
Added basic View Layer manipulation including: enable view layer for rendering, switch view layer, rename view layer, add view layer, remove view layer.
The reason I added View Layers is because excluded status depends on view layer and I found setting up compositing in a sane manner to be a complete pain, now it's much easier 😄
Still thinking..
Yeah, the "quit without saving changes" button is a tough one. I'll probably tackle that next.
Update.
Fixed top row of buttons so all of them toggle between all enabled and restore to what you had. This should implement everything for that, except the highlighting.
Added a way to show hide the restriction toggles (just like in the outliner, but it isn't synced to the outliner).
Added restriction toggles and their all enabled / restore toggles above, so now the possible restriction toggles include:
Exclude from layer checkbox - EC
Selectability - SS
Hide in viewport - VV
Disable in viewport - DV
Disable in renders - RV
*note shift clicking works on all the restriction toggles
Expanded state is now remembered
Filtering is shown by default.
Filtering will now work regardless of what is expanded.
Added basic View Layer manipulation including: enable view layer for rendering, switch view layer, rename view layer, add view layer, remove view layer.
The reason I added View Layers is because excluded status depends on view layer and I found setting up compositing in a sane manner to be a complete pain, now it's much easier :smile:
> Still thinking..
Yeah, the "quit without saving changes" button is a tough one. I'll probably tackle that next.
[Collection_Manager_2.zip](https://archive.blender.org/developer/F7796254/Collection_Manager_2.zip)
In #69577#791654, @Imaginer wrote:
Update.
Fixed top row of buttons so all of them toggle between all enabled and restore to what you had. This should implement everything for that, except the highlighting.
Mein Gott, you made it, and das ist gorgeous!
Now we can observe scene and restore what we had just in a few clicks, to compare what is visible with entire scene!
It is incredibly powerful and flexible now with shift-toggling isolation ability, that allow to observe single collection's content))
A bit about what we've done. Here is simple picture.
There are 3 main states possible for any Restriction Toggles Option during scene setup.
Single element (one collection) visible/enabled - needed for checking up collection's content.
Setup (some collections) visible/enabled - needed for visualization.
Entire scene (all collections) visible/enabled. - needed for checking up scene's content.
By default, in Blender, it was too easy to lose the current setup in order to see the contents of one element or to see the whole scene.
So we made that actions reversible (as toggles), protecting current setup from being lost, providing an additional degree of freedom to scene setup process, which gives us full control over it.
Let's call them isolation toggle (shift-clicking isolation on icons) and enabling toggle (clicking on turning everything buttons)?
I think that's good decision at this point, since View layer became an essential part of scene setup, and your addon allow to overview such setups in way more flexible way.
It is not clean what "enabled of disabled rendering on this view layer" checkbox influences, or maybe I'm lost in the interface to find what it is related to.
Currently I've spotted that enabling toggle ignores nesting elements for EC, other Restriction Toggles Options (RTO?) seems to behave ok.
I need time for testing, but I'm so glad that we already have so much control)
> In #69577#791654, @Imaginer wrote:
> Update.
> Fixed top row of buttons so all of them toggle between all enabled and restore to what you had. This should implement everything for that, except the highlighting.
Mein Gott, you made it, and das ist gorgeous!
Now we can observe scene and restore what we had just in a few clicks, to compare what is visible with entire scene!
It is incredibly powerful and flexible now with shift-toggling isolation ability, that allow to observe single collection's content))
A bit about what we've done. Here is simple picture.
![Toggle.png](https://archive.blender.org/developer/F7796619/Toggle.png)
There are 3 main states possible for any Restriction Toggles Option during scene setup.
- **Single element** (one collection) visible/enabled - needed for checking up collection's content.
- **Setup** (some collections) visible/enabled - needed for visualization.
- **Entire scene** (all collections) visible/enabled. - needed for checking up scene's content.
By default, in Blender, it was too easy to lose the current setup in order to see the contents of one element or to see the whole scene.
So we made that actions reversible (as toggles), protecting current setup from being lost, providing an additional degree of freedom to scene setup process, which gives us full control over it.
Let's call them **isolation toggle** (shift-clicking isolation on icons) and **enabling toggle** (clicking on turning everything buttons)?
> Added basic View Layer manipulation including: enable view layer for rendering, switch view layer, rename view layer, add view layer, remove view layer.
I think that's good decision at this point, since View layer became an essential part of scene setup, and your addon allow to overview such setups in way more flexible way.
It is not clean what "enabled of disabled rendering on this view layer" checkbox influences, or maybe I'm lost in the interface to find what it is related to.
Currently I've spotted that enabling toggle ignores nesting elements for EC, other Restriction Toggles Options (RTO?) seems to behave ok.
I need time for testing, but I'm so glad that we already have so much control)
It is not clean what "enabled of disabled rendering on this view layer" checkbox influences, or maybe I'm lost in the interface to find what it is related to.
That checkbox controls whether the view layer will be rendered when you do a render or press F12.
Let's say you have a scene with two collections and you want them in separate View Layers for compositing, you have to isolate them in each View Layer, but now you can't see your entire scene. So you make a View Layer that shows you everything, but you only need it in the viewport, not for the final render (and you don't want the added render time). So now you can easily disable rendering of the View Layer with that checkbox (you can also find that checkbox in the View Layer Properties tab under the View Layer panel in the Properties Editor).
Currently I've spotted that enabling toggle ignores nesting elements for EC, other Restriction Toggles Options (RTO?) seems to behave ok.
Yeah, it seems that's because of the way blender automatically changes children when you exclude/un-exclude. To fix it I had to have it loop through in reverse order when making the restore point and then reverse the history so it would be in the correct order for the actual restore. Thanks for finding this.
I also found and fixed a couple other bugs relating to the enabling toggles and I've tentatively added the highlighting.
Let me know if I've introduced any new bugs or regressions :P
By the way, I wonder if you like what we got.
Are these features useful for your workflow?)
I'm very happy with what we've got. Thanks for asking 😄
I think these features will be useful to everyone's workflow, but yes, I can see myself using many, if not all, of them.
> It is not clean what "enabled of disabled rendering on this view layer" checkbox influences, or maybe I'm lost in the interface to find what it is related to.
That checkbox controls whether the view layer will be rendered when you do a render or press F12.
Let's say you have a scene with two collections and you want them in separate View Layers for compositing, you have to isolate them in each View Layer, but now you can't see your entire scene. So you make a View Layer that shows you everything, but you only need it in the viewport, not for the final render (and you don't want the added render time). So now you can easily disable rendering of the View Layer with that checkbox (you can also find that checkbox in the View Layer Properties tab under the View Layer panel in the Properties Editor).
> Currently I've spotted that enabling toggle ignores nesting elements for EC, other Restriction Toggles Options (RTO?) seems to behave ok.
Yeah, it seems that's because of the way blender automatically changes children when you exclude/un-exclude. To fix it I had to have it loop through in reverse order when making the restore point and then reverse the history so it would be in the correct order for the actual restore. Thanks for finding this.
I also found and fixed a couple other bugs relating to the enabling toggles and I've tentatively added the highlighting.
Let me know if I've introduced any new bugs or regressions :P
> By the way, I wonder if you like what we got.
> Are these features useful for your workflow?)
I'm very happy with what we've got. Thanks for asking :smile:
I think these features will be useful to everyone's workflow, but yes, I can see myself using many, if not all, of them.
[Collection_Manager_3.zip](https://archive.blender.org/developer/F7812658/Collection_Manager_3.zip)
(you can also find that checkbox in the View Layer Properties tab under the View Layer panel in the Properties Editor).
Got it, found it! A wise solution)
Thanks for finding this.
I also found and fixed a couple other bugs relating to the enabling toggles and I've tentatively added the highlighting.
Let me know if I've introduced any new bugs or regressions :P
Yes, EC enabling toggle work awesome now.
It is very useful, as EC seems to be the only way to check single collection's content regardless of it's nesting level.
Highlighting is also great - now we can be sure what RTO's was turned on manually in order to observe their content, reducing chances to lose initial setup.
I don’t know how tricky it was to do it, but I'm glad you nailed it!
I'm very happy with what we've got. Thanks for asking
I think these features will be useful to everyone's workflow, but yes, I can see myself using many, if not all, of them.
Completely agree. That's just gorgeous.
It seems that our work has the same level of complexity, which allows us to observe problems on the same wavelength, this is a rare luck in development.
Thank you for this)
> In #69577#794701, @Imaginer wrote:
> (you can also find that checkbox in the View Layer Properties tab under the View Layer panel in the Properties Editor).
Got it, found it! A wise solution)
> Thanks for finding this.
> I also found and fixed a couple other bugs relating to the enabling toggles and I've tentatively added the highlighting.
> Let me know if I've introduced any new bugs or regressions :P
Yes, EC enabling toggle work awesome now.
It is very useful, as EC seems to be the only way to check single collection's content regardless of it's nesting level.
Highlighting is also great - now we can be sure what RTO's was turned on manually in order to observe their content, reducing chances to lose initial setup.
I don’t know how tricky it was to do it, but I'm glad you nailed it!
> I'm very happy with what we've got. Thanks for asking
> I think these features will be useful to everyone's workflow, but yes, I can see myself using many, if not all, of them.
Completely agree. That's just gorgeous.
It seems that our work has the same level of complexity, which allows us to observe problems on the same wavelength, this is a rare luck in development.
Thank you for this)
Slight Update.
Fixed a regression with the enabling toggles where you couldn't look around the scene without losing the history.
[Collection_Manager_4.zip](https://archive.blender.org/developer/F7815508/Collection_Manager_4.zip)
hi, I think we need to expose this to more people. I would suggest we promote this to addons contrib tpo expose to a greater number of people and gain more feedback. @Imaginer your free to add this to contrib. thanks for the hard work your putting into this.
hi, I think we need to expose this to more people. I would suggest we promote this to addons contrib tpo expose to a greater number of people and gain more feedback.
@Imaginer your free to add this to contrib. thanks for the hard work your putting into this.
I'm happy with the maturity that this addon has attained, and so I've added the Collection Manager to the addons contrib repo, per @BrendonMurphy's suggestion, and created a blenderartists page for additional feedback from the community https://blenderartists.org/t/contrib-addon-wip-collection-manager-feedback/1186198. This doesn't mean I've forgotten about the feedback and suggestions here and I still intend to continue development as usual. For now here's a new picture in case anyone's interested, but hasn't downloaded it yet. The current plan is to start experimenting with the "restore on quit" feature next.
I'm happy with the maturity that this addon has attained, and so I've added the Collection Manager to the addons contrib repo, per @BrendonMurphy's suggestion, and created a blenderartists page for additional feedback from the community https://blenderartists.org/t/contrib-addon-wip-collection-manager-feedback/1186198. This doesn't mean I've forgotten about the feedback and suggestions here and I still intend to continue development as usual. For now here's a new picture in case anyone's interested, but hasn't downloaded it yet. The current plan is to start experimenting with the "restore on quit" feature next.
![Collection_Manager_2019-10-17_03-49-32.png](https://archive.blender.org/developer/F7828779/Collection_Manager_2019-10-17_03-49-32.png)
A small organizational request.
While I with python developers working in sandbox, we keeping version numeration, and also providing some short latest update description in commented section.
For example, 1D_Scripts header for 0.10.22 version:
- HISTORY
- 0-10-09(16.11.2018) Fixed panel Batch render
- 0-10-10(16.11.2018) Fixed UV Scaler
- 0-10-12(18.11.2018) Fixed (Test Zone) Polyedge select
- 0-10-13(21.11.2018) Added (Test Zone) Ssmooth
- 0-10-14(23.11.2018) Fixed (Test Zone) Ssmooth - add Shortcut
- 0-10-15(12.12.2018) Changed (Corner Edges): enable To Active edge
- 0-10-16(12.12.2018) Changed (Stairs maker): go to source object after execution
- 0-10-18(11.01.2019) Rename labels for quick search
- 0-10-19(10.02.2019) Added (Materials) Mats Showcase
- 0-10-20(18.02.2019) Changed (Materials) Mats Showcase and Colorize
- 0-10-21(18.02.2019) Changed (Materials) Mats Showcase and Colorize - old format string
# 0-10-22(31.07.2019) Fixed (Materials) mats only uncludes "." in name
bl_info = {
"name": "1D_Scripts",
"author": "Alexander Nedovizin, Paul Kotelevets aka 1D_Inc (concept design), Nikitron",
"version": (0, 10, 22),
"blender": (2, 7, 9),
"location": "View3D > Toolbar",
"category": "Mesh"
}
Can we have version numeration? It is very useful for testing.
For example, I've got that ignoring nesting EC behaviour also for isolation toggle, trying to investigate it in previous versions, but all of them are displayed as 1.0, (not, for example, 1.0.4), so it is hard to be sure what version I am currently running)
A small organizational request.
While I with python developers working in sandbox, we keeping version numeration, and also providing some short latest update description in commented section.
For example, 1D_Scripts header for 0.10.22 version:
```
- HISTORY
- 0-10-09(16.11.2018) Fixed panel Batch render
- 0-10-10(16.11.2018) Fixed UV Scaler
- 0-10-12(18.11.2018) Fixed (Test Zone) Polyedge select
- 0-10-13(21.11.2018) Added (Test Zone) Ssmooth
- 0-10-14(23.11.2018) Fixed (Test Zone) Ssmooth - add Shortcut
- 0-10-15(12.12.2018) Changed (Corner Edges): enable To Active edge
- 0-10-16(12.12.2018) Changed (Stairs maker): go to source object after execution
- 0-10-18(11.01.2019) Rename labels for quick search
- 0-10-19(10.02.2019) Added (Materials) Mats Showcase
- 0-10-20(18.02.2019) Changed (Materials) Mats Showcase and Colorize
- 0-10-21(18.02.2019) Changed (Materials) Mats Showcase and Colorize - old format string
# 0-10-22(31.07.2019) Fixed (Materials) mats only uncludes "." in name
bl_info = {
"name": "1D_Scripts",
"author": "Alexander Nedovizin, Paul Kotelevets aka 1D_Inc (concept design), Nikitron",
"version": (0, 10, 22),
"blender": (2, 7, 9),
"location": "View3D > Toolbar",
"category": "Mesh"
}
```
Can we have version numeration? It is very useful for testing.
For example, I've got that ignoring nesting EC behaviour also for isolation toggle, trying to investigate it in previous versions, but all of them are displayed as 1.0, (not, for example, 1.0.4), so it is hard to be sure what version I am currently running)
Sorry about that. This was taken from a larger project and I completely forgot about version numbering. I'll start increasing the version numbers :)
I'm not keen on having the history at the top of the init file though, it's already got a gpl license header and I find files that start with a huge comment section are hard to read. If it's found absolutely necessary I'll add it, but it's in contrib now so any changes from now on will have git logs.
Sorry about that. This was taken from a larger project and I completely forgot about version numbering. I'll start increasing the version numbers :)
I'm not keen on having the history at the top of the init file though, it's already got a gpl license header and I find files that start with a huge comment section are hard to read. If it's found absolutely necessary I'll add it, but it's in contrib now so any changes from now on will have git logs.
Thanks)
Yes, we are making history header because our toolsets are multytools in single python file, so it was necessary for understanding what tool was made or fixed in downloaded file.
Git logs are ok for Bollection manager case)
So, it seems isolation toggle also have EC nesting issue, that was fixed in enabling toggle.
Keeping testing.
Thanks)
Yes, we are making history header because our toolsets are multytools in single python file, so it was necessary for understanding what tool was made or fixed in downloaded file.
Git logs are ok for Bollection manager case)
So, it seems isolation toggle also have EC nesting issue, that was fixed in enabling toggle.
Keeping testing.
I think so. I had tested it a while ago on a simple case and it seemed to work fine, but after your last comment I tried it on a more complex setup and I think I see the bug. So far I have left the EC toggle with the same behavior as in the outliner, but it's proving to be a real pain so I'm going to override the default behavior and make sure that only the checkbox you click on gets activated/deactivated. The default behavior also makes it harder to tell if there are bugs, so that's another reason I'm trying the override.
A video would be awesome! Thanks!
I haven't had much time to work on this in the last little while, but I did implement a suggestion from the blenderartists feedback thread and found a bug in blender's python api in the process. Bug report is here: https://developer.blender.org/T71112
So the next update will have the new feature from blenderartists and then the one after will have a fix for the EC issues.
I think so. I had tested it a while ago on a simple case and it seemed to work fine, but after your last comment I tried it on a more complex setup and I think I see the bug. So far I have left the EC toggle with the same behavior as in the outliner, but it's proving to be a real pain so I'm going to override the default behavior and make sure that only the checkbox you click on gets activated/deactivated. The default behavior also makes it harder to tell if there are bugs, so that's another reason I'm trying the override.
A video would be awesome! Thanks!
I haven't had much time to work on this in the last little while, but I did implement a suggestion from the blenderartists feedback thread and found a bug in blender's python api in the process. Bug report is here: https://developer.blender.org/T71112
So the next update will have the new feature from blenderartists and then the one after will have a fix for the EC issues.
Update.
Changes:
New collection is selected on add.
Remove collection button has moved to the far right side.
[Collection_Manager_5.zip](https://archive.blender.org/developer/F7910159/Collection_Manager_5.zip)
Update.
Changes:
Hopefully fixed the exclusion toggle's behaviour.
Added the shortcut to the location in bl_info.
[Collection_Manager_6.zip](https://archive.blender.org/developer/F7911310/Collection_Manager_6.zip)
Update.
Changes:
Sync UI List selection to active collection.
Fix bug with operators and the undo stack.
[Collection_Manager_7.zip](https://archive.blender.org/developer/F7928932/Collection_Manager_7.zip)
Added a new "Phantom Mode" to mimic the "Restore on quit" functionality requested by @1D_Inc.
Note: I've put in some safeguards, but it may still be able to get out of sync and do weird stuff if you make changes outside the collection manager while in phantom mode.
Update.
Added a new "Phantom Mode" to mimic the "Restore on quit" functionality requested by @1D_Inc.
Note: I've put in some safeguards, but it may still be able to get out of sync and do weird stuff if you make changes outside the collection manager while in phantom mode.
[Collection_Manager_8.zip](https://archive.blender.org/developer/F8057394/Collection_Manager_8.zip)
Meanwhile, I've spotted that collection filtering works in case-sensitive mode.
For example, "Rim" and "rim" are different search requests.
Can it be changed to non-case-sensitive?
Also, an interesting implementation of a Phantom mode)
I will test it)
Meanwhile, I've spotted that collection filtering works in case-sensitive mode.
For example, "Rim" and "rim" are different search requests.
Can it be changed to non-case-sensitive?
Also, an interesting implementation of a Phantom mode)
I will test it)
In #69577#810631, @Imaginer wrote:
I'll look into the case-sensitive filtering. What's your OS, and do you know if your file system is set to be case-sensitive or case-insensitive?
I am not sure that this is OS-dependent.
I use Linux Mint, Arch and and Win 8.1
Testing on Mint
> In #69577#810631, @Imaginer wrote:
> I'll look into the case-sensitive filtering. What's your OS, and do you know if your file system is set to be case-sensitive or case-insensitive?
I am not sure that this is OS-dependent.
I use Linux Mint, Arch and and Win 8.1
Testing on Mint
I'm pretty sure it is OS-dependent. See blender has a helper function for filtering by name, UI_UL_list.filter_items_by_name, which internally uses python's fnmatch.fnmatch, and that internally uses os.path.normcase to normalize the string. But here's what's in the documentation for os.path.normcase:
Normalize the case of a pathname. On Windows, convert all characters in the pathname to lowercase, and also convert forward slashes to backward slashes. On other operating systems, return the path unchanged. Raise a TypeError if the type of path is not str or bytes (directly or indirectly through the os.PathLike interface).
So I believe it's case insensitive on Windows, but case sensitive everywhere else. (I'm pretty sure I tested it on Win 8 and it's insensitive. I mainly develop on Arch).
Also, I think blender follows the OS for case sensitivity, so I'm doubtful blender will want to change this.
The good news is that UI_UL_list.filter_items_by_name is pretty simple and I can just re-implement it to be case-insensitive.
So do we want to enforce case-insensitivity everywhere?
I'm pretty sure it is OS-dependent. See blender has a helper function for filtering by name, **UI_UL_list.filter_items_by_name**, which internally uses python's **fnmatch.fnmatch**, and that internally uses **os.path.normcase** to normalize the string. But here's what's in the documentation for **os.path.normcase**:
> Normalize the case of a pathname. On Windows, convert all characters in the pathname to lowercase, and also convert forward slashes to backward slashes. On other operating systems, return the path unchanged. Raise a TypeError if the type of path is not str or bytes (directly or indirectly through the os.PathLike interface).
https://docs.python.org/3.7/library/os.path.html#os.path.normcase
So I believe it's case insensitive on Windows, but case sensitive everywhere else. (I'm pretty sure I tested it on Win 8 and it's insensitive. I mainly develop on Arch).
Also, I think blender follows the OS for case sensitivity, so I'm doubtful blender will want to change this.
The good news is that **UI_UL_list.filter_items_by_name** is pretty simple and I can just re-implement it to be case-insensitive.
So do we want to enforce case-insensitivity everywhere?
Wow, that OS-dependency was completely unexpected)
Well, Blender already use such insensitivity everywhere, and it works pretty much well.
Also, Collections works in a static context, collections filtering is used to navigate in a static context, which means that the semantic meaning of a word to filter is more important than its spelling.
If we need to find, for example "house"-related items, we will be interested in any of them, regardless of the way they are written - this way we are filtering not for just regular string (set of characters), but for a context.
So, yes, I think case-insensitive systems work better for the contextual (high) level of abstraction.
Wow, that OS-dependency was completely unexpected)
Well, Blender already use such insensitivity everywhere, and it works pretty much well.
Also, Collections works in a static context, collections filtering is used to navigate in a static context, which means that the semantic meaning of a word to filter is more important than its spelling.
If we need to find, for example "house"-related items, we will be interested in any of them, regardless of the way they are written - this way we are filtering not for just regular string (set of characters), but for a **context**.
So, yes, I think case-insensitive systems work better for the contextual (high) level of abstraction.
Wow, that OS-dependency was completely unexpected)
I know, right?
Update:
Fixed a bug with filtering where it wouldn't pick up a name change until after you closed and recalled the popup.
Made filtering case-insensitive.
> Wow, that OS-dependency was completely unexpected)
I know, right?
Update:
Fixed a bug with filtering where it wouldn't pick up a name change until after you closed and recalled the popup.
Made filtering case-insensitive.
[Collection_Manager_9.zip](https://archive.blender.org/developer/F8102242/Collection_Manager_9.zip)
@1D_Inc Interesting UI tweaks by Bookyakuno over on blender artists: https://blenderartists.org/t/contrib-addon-wip-collection-manager-feedback/1186198/21 (a second version is a couple of posts down).
I'm thinking it might be a better idea to combine all the buttons on the row under the view layer like Bookyakuno did (although ordered more like the second version), but as to the collections in the UIList I think it would be better to keep all the visibility controls next to each other in a group. And I'm not sure that displaying the number of objects in a collection is actually needed, or at the very least it needs to be more explicit telling the user what that number represents.
Thoughts?
@1D_Inc Interesting UI tweaks by Bookyakuno over on blender artists: https://blenderartists.org/t/contrib-addon-wip-collection-manager-feedback/1186198/21 (a second version is a couple of posts down).
I'm thinking it might be a better idea to combine all the buttons on the row under the view layer like Bookyakuno did (although ordered more like the second version), but as to the collections in the UIList I think it would be better to keep all the visibility controls next to each other in a group. And I'm not sure that displaying the number of objects in a collection is actually needed, or at the very least it needs to be more explicit telling the user what that number represents.
Thoughts?
I think it is too early to compress the interface. It looks weird.
Your design is now more understandable, accurate and consistent.
Interesting, that he puts VV visibility on left side. This isstructural display misconception
Here are our RTOs (restriction toggle options)
About ability to place some of them in vertical linear column:
VV is hierarchy-dendent visibilty control, turning off higher collection level turns off everything below, so it cannot be displayer in linear column. (-)
DV just duplicates VV behaviour and follows same conditions. (-)
EC is the only visibility control that can be placed there. As far it is hierarchy-indendent, it can be displayed in linear column. (+)
SS, HH and IO are also hierarchy-independent, but also are not visibility controls at all, so they can be displayed in linear column. (+)
Sending Box is hierarchy-indendent, so it can be displayed in linear column. (+)
Also, does Bukyakuno's design just seem to ... duplicate the outliner?
We don't have a goal to "put proper outliner to M button", so we are "asking for proper outliner" and "making collection management addon".
I'm currently busy with global proposal about Collections and QCD content management systems .
How to define if outliner is designed properly? It's simple - the more proper the outliner, the easier CM addon will be.
Currently CM addon is prety much heavyweight, but this means that we are solving too much problems, left over core development.
Wouldn't it be better to ask core developers just to finally make a proper outliner rather than persistently making our own?
In the end, we are all interested in allowing Blender to be used out of the box)
>Thoughts?
I think it is too early to compress the interface. It looks weird.
Your design is now more understandable, accurate and consistent.
Interesting, that he puts VV visibility on left side. This is**structural display misconception**
____________________________________________
Here are our RTOs (restriction toggle options)
![TOGG.png](https://archive.blender.org/developer/F7772178/TOGG.png)
About ability to place some of them in vertical linear column:
- VV is hierarchy-dendent visibilty control, turning off higher collection level turns off everything below, so it cannot be displayer in linear column. (-)
- DV just duplicates VV behaviour and follows same conditions. (-)
- EC is the only visibility control that can be placed there. As far it is hierarchy-indendent, it can be displayed in linear column. (+)
- SS, HH and IO are also hierarchy-independent, but also are not visibility controls at all, so they can be displayed in linear column. (+)
- Sending Box is hierarchy-indendent, so it can be displayed in linear column. (+)
Also, does Bukyakuno's design just seem to ... duplicate the outliner?
![изображение.png](https://archive.blender.org/developer/F8107388/изображение.png)
We don't have a goal to "put proper outliner to M button", so we are "asking for proper outliner" and "making collection management addon".
I'm currently busy with global proposal about Collections and QCD [content management systems ](https://devtalk.blender.org/t/layers-maniphest/6578/90?u=1d_inc).
How to define if outliner is designed properly? It's simple - the more proper the outliner, the easier CM addon will be.
Currently CM addon is prety much heavyweight, but this means that we are solving too much problems, left over core development.
Wouldn't it be better to ask core developers just to finally make a proper outliner rather than persistently making our own?
In the end, we are all interested in allowing Blender to be used out of the box)
I was mostly thinking about just moving the add collection operators and phantom mode operator to the top bar and condensing it like this (not touching anything else layout wise):
This would reduce the amount of vertical space used and maybe make it feel a bit cleaner, but if you think it's to early for that I'll leave it as is. The other thing I was considering is the greying out of collections when they're hidden in the viewport.
Also, does Bukyakuno's design just seem to ... duplicate the outliner?
Now that you mention it and compare them directly, I can see a lot of similarities.
We don't have a goal to "put proper outliner to M button", so we are "asking for proper outliner" and "making collection management addon".
No, I'm definitely not trying to replace the outliner with this, but by the same token, a proper outliner wouldn't negate the need for a collection manager. And yes, the less hoops I have to jump through to get the functionality I want in the CM addon the better.
I was mostly thinking about just moving the add collection operators and phantom mode operator to the top bar and condensing it like this (not touching anything else layout wise):
![CM_Condensed_Topbar.png](https://archive.blender.org/developer/F8126511/CM_Condensed_Topbar.png)
This would reduce the amount of vertical space used and maybe make it feel a bit cleaner, but if you think it's to early for that I'll leave it as is. The other thing I was considering is the greying out of collections when they're hidden in the viewport.
> Also, does Bukyakuno's design just seem to ... duplicate the outliner?
Now that you mention it and compare them directly, I can see a lot of similarities.
> We don't have a goal to "put proper outliner to M button", so we are "asking for proper outliner" and "making collection management addon".
No, I'm definitely not trying to replace the outliner with this, but by the same token, a proper outliner wouldn't negate the need for a collection manager. And yes, the less hoops I have to jump through to get the functionality I want in the CM addon the better.
In #69577#812406, @Imaginer wrote:
And yes, the less hoops I have to jump through to get the functionality I want in the CM addon the better.
Well, if we are faced with the need to almost completely copy the outliner into an addon for convenient collection management, this proves that the collection management system in the Blender has serious problems.
We have got very good solutions to problems in the course of research that deserve implementation at a core level. I think your development deserves that.
As for the addon, this will greatly facilitate it, allowing you to get rid of at least the phantom mode. We'll see.
I think it’s worth a try, so I will take on this task.
> In #69577#812406, @Imaginer wrote:
> And yes, the less hoops I have to jump through to get the functionality I want in the CM addon the better.
Well, if we are faced with the need to almost completely copy the outliner into an addon for convenient collection management, this proves that the collection management system in the Blender has serious problems.
We have got very good solutions to problems in the course of research that deserve implementation at a core level. I think your development deserves that.
As for the addon, this will greatly facilitate it, allowing you to get rid of at least the phantom mode. We'll see.
I think it’s worth a try, so I will take on this task.
Another task to solve.
While working with complex scenes here is a problem to define what is hidden in order to manage and observe hidden content.
We has got RTOs buttons, that allow to temporairly show entire content of a cathegory via single LMB click.
Is it possible to make another behaviour for Shift+LMB click to invert current cathegory state?
Here is a picture:
I know that it can be tricky for VV and DV, since they are structure dependent, but any kind of invertion implementation will make it possible at least to test such a solution.
Another task to solve.
While working with complex scenes here is a problem to define what is hidden in order to manage and observe hidden content.
We has got RTOs buttons, that allow to temporairly show entire content of a cathegory via single LMB click.
Is it possible to make another behaviour for Shift+LMB click to **invert** current cathegory state?
Here is a picture:
![INVERT.png](https://archive.blender.org/developer/F8128057/INVERT.png)
I know that it can be tricky for VV and DV, since they are structure dependent, but any kind of invertion implementation will make it possible at least to test such a solution.
An else one feature, that can be interesting.
Filtering by name gives us strong static contextual separation. I think, dynamic contextual separation support is also needed.
That means, that it would be nice to have ability to filter collections by selection (the "Filter Selected" button) to review the list of collections that contains current selection. Expand/Collapse button resets filtering.
Nice example - select all objects that forms car, filter list by selection to be sure that all selected objects belongs to car-related collections, review content of non car-related collections if filtered list has got some.
An else one feature, that can be interesting.
Filtering by name gives us strong static contextual separation. I think, dynamic contextual separation support is also needed.
That means, that it would be nice to have ability to filter collections by selection (the "Filter Selected" button) to review the list of collections that contains current selection. Expand/Collapse button resets filtering.
Nice example - select all objects that forms car, filter list by selection to be sure that all selected objects belongs to car-related collections, review content of non car-related collections if filtered list has got some.
about having the Expand/Collapse button reset filtering
Yes, that's one can be doubtable, but this is only an assumption.
There have to be some ability to reset selection filtering, it can be a second click on "Filter Selected" button, which makes this button work in toggle mode with blue highlighting.
By the way, I noticed that this cross does not clear the filter field.
Can you confirm?
> about having the Expand/Collapse button reset filtering
Yes, that's one can be doubtable, but this is only an assumption.
There have to be some ability to reset selection filtering, it can be a second click on "Filter Selected" button, which makes this button work in toggle mode with blue highlighting.
By the way, I noticed that this cross does not clear the filter field.
Can you confirm?
![изображение.png](https://archive.blender.org/developer/F8163153/изображение.png)
it can be a second click on "Filter Selected" button, which makes this button work in toggle mode with blue highlighting.
I like this idea better. It'll be more in line with official blender if I add a toggle button to the right side of the filter bar.
By the way, I noticed that this cross does not clear the filter field.
Can you confirm?
Yes. I've noticed that too. But it seems to work on other UILists, so I'm not sure if it's a blender bug or if I'm missing something in my code. I've also noticed that filters on things like vertex groups or materials update immediately, but mine only updates after you press enter.
> it can be a second click on "Filter Selected" button, which makes this button work in toggle mode with blue highlighting.
I like this idea better. It'll be more in line with official blender if I add a toggle button to the right side of the filter bar.
> By the way, I noticed that this cross does not clear the filter field.
> Can you confirm?
Yes. I've noticed that too. But it seems to work on other UILists, so I'm not sure if it's a blender bug or if I'm missing something in my code. I've also noticed that filters on things like vertex groups or materials update immediately, but mine only updates after you press enter.
Changes:
Added full view layer support to restoration/isolation toggles and refactored their histories to facilitate this. (Ironically, blender seems to have a bug in 2.81 with view layers and toggles)
Fixed a bug with histories not being properly saved/restored in some toggles.
Added invert functionality to the restore toggles when you Shift-Click.
Updated Tooltips to be more consistent and explanatory.
Update.
Changes:
Added full view layer support to restoration/isolation toggles and refactored their histories to facilitate this. (Ironically, blender seems to have a bug in 2.81 with view layers and toggles)
Fixed a bug with histories not being properly saved/restored in some toggles.
Added invert functionality to the restore toggles when you Shift-Click.
Updated Tooltips to be more consistent and explanatory.
[Collection_Manager_10.zip](https://archive.blender.org/developer/F8167634/Collection_Manager_10.zip)
Aww, that's amazing!
I alredy like it)
I love how clean the result is from the inversion of structurally independent EC operations.
But it looks like I missed some control clarity - we has got Shift action for isolation ability, it is easy to remember, but inverting ability is a separate type of behaviour, that is not perceived as an "alternative shift operation".
So, maybe it will be better to set Control instead of Shift modifier on inverting ability, I will try to investigate whether my premises are reasonable, based on amount of mistakes I will make during tests.
Meanwhile we are trying to investigate why Collections are so hard to manage by default.
In fact, to depict that fact to make it clear, to see the essence of the problem.
We said earlier that there are too many RTO options per se, so I tried to make a scheme of their typing and relationships.
And yes, here we go (I also decided to rename RV to RR):
From a business point of view, any management system is characterized by at least two parameters
flexibility of capabilities and
effective management of these capabilities.
The dependence is almost linear - the simpler the system, the more effective its management, and on the contrary, the more flexible the system, the more complex and multi-level management it requires for effective circulation.
It also directly, through speed, affects the amount of product produced.
As far as I can tell, when creating the Collections system, the main task was to provide for the maximum possible flexibility of the system. Flexibility was taken as the only good, but such a rating system is somewhat far from practical.
This is why we have never encountered such complex systems in other software, and therefore we need an effective collection management system.
That is the reason we are here.
Aww, that's amazing!
I alredy like it)
I love how clean the result is from the inversion of structurally independent EC operations.
But it looks like I missed some control clarity - we has got Shift action for isolation ability, it is easy to remember, but inverting ability is a separate type of behaviour, that is not perceived as an "alternative shift operation".
So, maybe it will be better to set Control instead of Shift modifier on inverting ability, I will try to investigate whether my premises are reasonable, based on amount of mistakes I will make during tests.
______________________________
Meanwhile we are trying to investigate why Collections are so hard to manage by default.
In fact, to depict that fact to make it clear, to see the essence of the problem.
We said earlier that there are too many RTO options per se, so I tried to make a scheme of their typing and relationships.
And yes, here we go (I also decided to rename RV to RR):
![Typing scheme.png](https://archive.blender.org/developer/F8168493/Typing_scheme.png)
From a business point of view, any **management system** is characterized by at least two parameters
- **flexibility of capabilities** and
- **effective management** of these capabilities.
The dependence is almost linear - the simpler the system, the more effective its management, and on the contrary, the more flexible the system, the more complex and multi-level management it requires for effective circulation.
It also directly, through speed, affects the amount of product produced.
As far as I can tell, when creating the Collections system, the main task was to provide for the maximum possible flexibility of the system.
**Flexibility** was taken as the only good, but such a rating system is somewhat far from practical.
This is why we have never encountered such complex systems in other software, and therefore we need an effective collection management system.
That is the reason we are here.
I wouldn't worry too much about using Ctrl/Shift, they're just modifier keys. If we had it so that you did Shift for EC and Ctrl for VV then that would be bad, but they're used consistently within they're own little groups. I'm also thinking that I'll add an Enable/Disable All Children function to the isolation toggles using the Ctrl key. Currently blender does that by default for EC when clicking, and while I find they're current implementation annoying, I think it's useful functionality to have.
I wouldn't worry too much about using Ctrl/Shift, they're just modifier keys. If we had it so that you did Shift for EC and Ctrl for VV then that would be bad, but they're used consistently within they're own little groups. I'm also thinking that I'll add an Enable/Disable All Children function to the isolation toggles using the Ctrl key. Currently blender does that by default for EC when clicking, and while I find they're current implementation annoying, I think it's useful functionality to have.
For sure, nested isolation is needed, but suddenly there is a default outliner collection Ctrl+LMB isolation ability.
It works pretty much weird, as far as it works only for 4 RTO's (marked as dark blue on typing scheme), works as single LMB for EC in inverted way and loses current setup during unisolation, so I thought that it have to be reconciled.
It's a question of unified behavior.
Previously I thought about suggesting it like this:
Thus, the Shift-containing combinations apply to both isolation modes (simple and nesting), Ctrl allows to control entire level, Alt playes negative, alternative role.
But the problem is in differences of stucture-dependent and structural-independent RTOs behavior.
Im still trying to design proper behavior for invert action of VV and DV visibilities, it is hard as they are structure-dependent.
For EC nested isolation is possible in pure form, starting from desired level, so its behavior is nice and predictable.
For VV or DV it will isolate entire collection starting from core, and I can't say it is bad or useless, as it will give ability to observe the entire collection branches.
Since we have three types of visibility control that behaves differently, it is hard to say if it will work properly, or make any kind of predictable design.
It seems, such solutions can be only tested on practice.
What do you think about this?
For sure, nested isolation is needed, but suddenly there is a default outliner collection Ctrl+LMB isolation ability.
It works pretty much weird, as far as it works only for 4 RTO's (marked as dark blue on typing scheme), works as single LMB for EC in inverted way and loses current setup during unisolation, so I thought that it have to be reconciled.
It's a question of unified behavior.
Previously I thought about suggesting it like this:
![Unified.png](https://archive.blender.org/developer/F8171196/Unified.png)
Thus, the Shift-containing combinations apply to both isolation modes (simple and nesting), Ctrl allows to control entire level, Alt playes negative, alternative role.
But the problem is in differences of stucture-dependent and structural-independent RTOs behavior.
Im still trying to design proper behavior for invert action of VV and DV visibilities, it is hard as they are structure-dependent.
For EC nested isolation is possible in pure form, starting from desired level, so its behavior is nice and predictable.
For VV or DV it will isolate entire collection starting from core, and I can't say it is bad or useless, as it will give ability to observe the entire collection branches.
Since we have three types of visibility control that behaves differently, it is hard to say if it will work properly, or make any kind of predictable design.
It seems, such solutions can be only tested on practice.
What do you think about this?
There were another thoughts about unified behavior - this one don't include Alt, don't contain toggle action for Ctrl, but allow to add or remove some branches to/from current setup (D and E pictures are changed).
I am not sure if it can works similar to current Ctrl+LMB isolation in outliner.
We are trying to design a viable management for a complex system, so here we can easily create a sophisticated system or miss something.
There were another thoughts about unified behavior - this one don't include Alt, don't contain toggle action for Ctrl, but allow to add or remove some branches to/from current setup (D and E pictures are changed).
![Unified 3.png](https://archive.blender.org/developer/F8171366/Unified_3.png)
I am not sure if it can works similar to current Ctrl+LMB isolation in outliner.
We are trying to design a viable management for a complex system, so here we can easily create a sophisticated system or miss something.
Yes, your second one is what I was planning, current setup plus Ctrl-click turns nested on/off. I hadn't thought of picture C, but it looks useful, so I can look into adding it after D and E.
Yes, your second one is what I was planning, current setup plus Ctrl-click turns nested on/off. I hadn't thought of picture C, but it looks useful, so I can look into adding it after D and E.
Here is a dilemma.
If to make it as an isolation (other collections will temporarily turn off), it will make impossible to add/remove nested visibility to current scene setup (outliner-compatible behavior).
If to make it as local nesting control (other collections will stay intact), it will make impossible to check up entire collection's content in toggle way (simple control behavior).
Support for both - more complex shortcuts, or maybe checkbox.
I can't solve this system at the moment.
Here is a dilemma.
If to make it as an isolation (other collections will temporarily turn off), it will make impossible to add/remove nested visibility to current scene setup (outliner-compatible behavior).
If to make it as local nesting control (other collections will stay intact), it will make impossible to check up entire collection's content in toggle way (simple control behavior).
Support for both - more complex shortcuts, or maybe checkbox.
I can't solve this system at the moment.
No, we can't solve these kinds of usability problems in the abstract without implementing ideas, testing them, and then further refining them. I'll put out an initial implementation of the nested toggle and then we can go from there.
As for the collection chains of VV and DV visibilities, I agree, invert is going to be a problem. I forgot about the collection chains when implementing it for those controls. And you're right, their structure makes it hard. We'll just have to try to find a way to make it as predictable and useful as possible, but it may end up not being very useful for those toggles.
I also added invert to SS and RR, and they share the chain problem. I'm not even sure if inverting them would serve any benefit.
No, we can't solve these kinds of usability problems in the abstract without implementing ideas, testing them, and then further refining them. I'll put out an initial implementation of the nested toggle and then we can go from there.
As for the collection chains of VV and DV visibilities, I agree, invert is going to be a problem. I forgot about the collection chains when implementing it for those controls. And you're right, their structure makes it hard. We'll just have to try to find a way to make it as predictable and useful as possible, but it may end up not being very useful for those toggles.
I also added invert to SS and RR, and they share the chain problem. I'm not even sure if inverting them would serve any benefit.
Well, okay. In any case, there is only one way to test the solution - practice.
About SS and RR - we are trying to make a solid system, so it may not be effective in all aspects, but it definitely should be predictable)
Chaining and nesting management solutions are always challenging.
I will try to design proper invert behavior for chaining RTOs.
Well, okay. In any case, there is only one way to test the solution - practice.
About SS and RR - we are trying to make a solid system, so it may not be effective in all aspects, but it definitely should be predictable)
Chaining and nesting management solutions are always challenging.
I will try to design proper invert behavior for chaining RTOs.
After all these dilemmas, I tried to create an action map that could contain all the components for any possible action.
It looks like this, can be interesting to see.
Still thinking about invertion of Chaining RTOs.
I think that this task can't be solved mathematically, so we can't make its behavior better that it is now.
From the usability point of view inverting Chaining RTOs (like VV or DV) gives us an idea of if the scene has visibility disabled root collections, that contains objects, so let it be like this.
After all these dilemmas, I tried to create an action map that could contain all the components for any possible action.
It looks like this, can be interesting to see.
![Action Map.png](https://archive.blender.org/developer/F8173801/Action_Map.png)
Still thinking about invertion of Chaining RTOs.
I think that this task can't be solved mathematically, so we can't make its behavior better that it is now.
From the usability point of view inverting Chaining RTOs (like VV or DV) gives us an idea of if the scene has visibility disabled root collections, that contains objects, so let it be like this.
Not sure I entirely understand your action map (all I could find with that name was Cathy Moore's business training, which I don't think fits?), but it's sorta interesting.
And if you think the visibility RTOs are good like this for now then I don't mind leaving them, but I don't see any value to inverting things like SS or RR, so maybe we should remove their invert functions?
Also, what's a good ballpark for heavy collection use in a project? 1000? 2000? More?
Not sure I entirely understand your action map (all I could find with that name was Cathy Moore's business training, which I don't think fits?), but it's sorta interesting.
And if you think the visibility RTOs are good like this for now then I don't mind leaving them, but I don't see any value to inverting things like SS or RR, so maybe we should remove their invert functions?
Also, what's a good ballpark for heavy collection use in a project? 1000? 2000? More?
The problem is to determine possible situations that we may encounter mathematically, determine our opportunities, and prioritize opportunities over possible situations.
In this picture, I tried to collect all the possible options that can be involved in some action with the collection. To map what we basically can do with collections. To define our opportunities.
Inverting is useful for any kind of massive actions, for example to make invisible (unselectable, unrenderable, irradiantive, masking) 490 collections of 500, by setting up 10 collections and inverting scene state.
Inverting SS and RR (and other Chaining RTOs) are useful for linear (unchained) collection structure (a scene of 500 non-nested collections that is easily possible).
We provide predictable opportunities, which gives us confidence that if we encounter such situations, we will cope with them.
There is no need to remove the inversion locally, since it does not conflict with anything, and literally, don't take up space.
Also, what's a good ballpark for heavy collection use in a project? 1000? 2000? More?
We are confidently working with 4000-8000 layers in AutoCAD just daily.
Blender can handle up to 50,000 objects, but with current problems with the default management system, handling even 50 collections can be quite a challenge (got a collection - can't check it's content without losing scene state).
The problem is that the number of collections in projects is growing not because of plan or free will, but because of situation.
Thus, when performing complex projects at some point, the user simply faces the fact of the need to manage hundreds/thousands of collections. Just like in AutoCAD, just like everywhere else.
We are currently working on expanding management limits, so the number of collections for reliable management depends on our success.
I think, if we will be able to handle 200, we will be close to be able to handle any amount, as far as rules will be the same.
The limit of 500 fits into the situation, but it looks like an extreme case.
However, It's like copying 50 assets with 10 collections in each into a single scene. Can’t say that such a situation is far from being possible.
> but it's sorta interesting.
The problem is to determine possible situations that we may encounter mathematically, determine our opportunities, and prioritize opportunities over possible situations.
In this picture, I tried to collect all the possible options that can be involved in some action with the collection. To map what we basically can do with collections. To define our opportunities.
Inverting is useful for any kind of massive actions, for example to make invisible (unselectable, unrenderable, irradiantive, masking) 490 collections of 500, by setting up 10 collections and inverting scene state.
Inverting SS and RR (and other Chaining RTOs) are useful for linear (unchained) collection structure (a scene of 500 non-nested collections that is easily possible).
We provide predictable opportunities, which gives us confidence that if we encounter such situations, we will cope with them.
There is no need to remove the inversion locally, since it does not conflict with anything, and literally, don't take up space.
> Also, what's a good ballpark for heavy collection use in a project? 1000? 2000? More?
We are confidently working with 4000-8000 layers in AutoCAD just daily.
Blender can handle up to 50,000 objects, but with current problems with the default management system, handling even 50 collections can be quite a challenge (got a collection - can't check it's content without losing scene state).
The problem is that the number of collections in projects is growing not because of plan or free will, but because of situation.
Thus, when performing complex projects at some point, the user simply faces the fact of the need to manage hundreds/thousands of collections. Just like in AutoCAD, just like everywhere else.
We are currently working on expanding management limits, so the number of collections for reliable management depends on our success.
I think, if we will be able to handle 200, we will be close to be able to handle any amount, as far as rules will be the same.
The limit of 500 fits into the situation, but it looks like an extreme case.
However, It's like copying 50 assets with 10 collections in each into a single scene. Can’t say that such a situation is far from being possible.
You make some good points, so I'll leave the inversion alone.
We are confidently working with 4000-8000 layers in AutoCAD just daily. ... The limit of 500 fits into the situation, but it looks like an extreme case.
I'm interested in this so that I can keep an eye on how well the collection manager performs under heavy, but realistic, loads. In case you're interested, here is a little script I made to quickly setup thousands of collections to test with. It doesn't have a hotkey so you'll have to call it from blender's operator search menu (just typing 1 should bring it up) or call it from the python console (bpy.ops.view3d.add_thousands_collections). add_thousand_collections.py
It turns out that collection operations like isolation in blender are currently very slow with 1500 collections in a flat list, but if they're in a nested configuration with each collection only having 5 or 6 children it's much faster.
This seems to be a blender problem, not a problem with my addon.
I think we are really missing the ability to clone a View layer.
Blender seems to be having problems with View Layers and their Restriction Toggles at the moment, so I'm going to leave this alone for now. If it's needed, I'll look into adding it when those are fixed and they have more stable and consistent behavior.
> There is no need to remove the inversion locally
You make some good points, so I'll leave the inversion alone.
> We are confidently working with 4000-8000 layers in AutoCAD just daily. ... The limit of 500 fits into the situation, but it looks like an extreme case.
I'm interested in this so that I can keep an eye on how well the collection manager performs under heavy, but realistic, loads. In case you're interested, here is a little script I made to quickly setup thousands of collections to test with. It doesn't have a hotkey so you'll have to call it from blender's operator search menu (just typing 1 should bring it up) or call it from the python console (bpy.ops.view3d.add_thousands_collections).
[add_thousand_collections.py](https://archive.blender.org/developer/F8182902/add_thousand_collections.py)
It turns out that collection operations like isolation in blender are currently very slow with 1500 collections in a flat list, but if they're in a nested configuration with each collection only having 5 or 6 children it's much faster.
This seems to be a blender problem, not a problem with my addon.
> I think we are really missing the ability to clone a View layer.
Blender seems to be having problems with View Layers and their Restriction Toggles at the moment, so I'm going to leave this alone for now. If it's needed, I'll look into adding it when those are fixed and they have more stable and consistent behavior.
Well,
Before entering the boss’s room, the very first desire is to save the game’s progress.
Before editing a complex setup of multi gigabyte scenes containing thousands of collections made by someone, the very first desire is to make a copy of the setup for modifications, leaving the original as a backup.
This is the basic self-preservation instinct for survival in complex projects, kind a strange to hear silence around this)
I almost finished the alpha version of my Collections proposal, I will include view layer copy and perfomance problems in it.
It's nice that we noticed them on time.
Well,
Before entering the boss’s room, the very first desire is to save the game’s progress.
Before editing a complex setup of multi gigabyte scenes containing thousands of collections made by someone, the very first desire is to make a copy of the setup for modifications, leaving the original as a backup.
This is the basic self-preservation instinct for survival in complex projects, kind a strange to hear silence around this)
I almost finished the alpha version of my Collections proposal, I will include view layer copy and perfomance problems in it.
It's nice that we noticed them on time.
Ah! Cloning the View Layer is how you'd save the collections' view state. Good Idea!
But that won't work until the View Layer bug is fixed (see below). I don't want to support it with a hack unless absolutely necessary.
I've also submitted a bug with regard to RT performance for things like isolate and enable all.
Ah! Cloning the View Layer is how you'd save the collections' view state. Good Idea!
But that won't work until the View Layer bug is fixed (see below). I don't want to support it with a hack unless absolutely necessary.
I've also submitted a bug with regard to RT performance for things like isolate and enable all.
View Layer bug report: blender/blender#72084
Performance bug report: blender/blender#72086
Yes)
View Layer concept fits so beautifully there, as if it was created specifically for this by design)
Well, I can see, that some of your reports were claimed as feature request, not a bug.
It's ok, there is the difference in bug detection:
Reported issue that matches the roadmap leads to a simple definition of an issue as a bug - as software issue.
Reported issue that contradicts the roadmap can be both a roadmap design mistake or a misunderstanding of the roadmap by the user. So such issue can be defined as a workflow issue, that may need some additional semantic clarifiactions, including cases of uses, task examples, workflow comparisons, etc. It is always hard to define.
So most of issues that we can face during making CM can be claimed as feature requests.
This is normal, because they are considered from the point of view of the design of the current system, so, at first, we need to offer a system update that will better satisfy massive production needs.
Some issues may require deep core changes, so there must be a deep reasons for this.
That's why I preparing global proposal, that contains complete description of a robust collection management system, that will hopefully clarify the reasons behind the solutions.
Meanwhile, it's nice that you make such reports, they will be useful in any case.
Yes)
View Layer concept fits so beautifully there, as if it was created specifically for this by design)
Well, I can see, that some of your reports were claimed as feature request, not a bug.
It's ok, there is the difference in bug detection:
- Reported issue that matches the roadmap leads to a simple definition of an issue as a bug - as **software issue**.
- Reported issue that contradicts the roadmap can be both a roadmap design mistake or a misunderstanding of the roadmap by the user. So such issue can be defined as a **workflow issue**, that may need some additional semantic clarifiactions, including cases of uses, task examples, workflow comparisons, etc. It is always hard to define.
So most of issues that we can face during making CM can be claimed as feature requests.
This is normal, because they are considered from the point of view of the design of the current system, so, at first, we need to offer a system update that will better satisfy massive production needs.
Some issues may require deep core changes, so there must be a deep reasons for this.
That's why I preparing global proposal, that contains complete description of a robust collection management system, that will hopefully clarify the reasons behind the solutions.
Meanwhile, it's nice that you make such reports, they will be useful in any case.
hi, It's time for some decisions.
Do we go with what we have now for Blender 2,82?
Given there's some "Limitations" that may or may not be resolved in the near future or for quite some time, we can document these.
It's easy to add a warning "beta - see preferences" and describe the limitations there.
"May not work with view layer visibility"
"May take time to compute on scenes with over 500 collections when hiding visibility"
It seems some of the issues are somewhat outside of the addon, being limitations in how it can work with Blender's internal structure. These issues are in Blender also without the addon.
So what to do here?
Initially I was looking for a replacement for the older Layer Manager addon. We had this in Blender from 2.4x to 2.7x to fill a gap, improve usability and offer functionality until we moved on to collections.
Now we have CM, offering new functionality and usability that may end up being all we have in this area for 2.8 series. I would like to see it in release sooner rather than later. By exposing CM users will have an opportunity to use this new functionality and provide feedback that may help the future decisions.
hi, It's time for some decisions.
Do we go with what we have now for Blender 2,82?
Given there's some "Limitations" that may or may not be resolved in the near future or for quite some time, we can document these.
It's easy to add a warning "beta - see preferences" and describe the limitations there.
"May not work with view layer visibility"
"May take time to compute on scenes with over 500 collections when hiding visibility"
It seems some of the issues are somewhat outside of the addon, being limitations in how it can work with Blender's internal structure. These issues are in Blender also without the addon.
So what to do here?
Initially I was looking for a replacement for the older Layer Manager addon. We had this in Blender from 2.4x to 2.7x to fill a gap, improve usability and offer functionality until we moved on to collections.
Now we have CM, offering new functionality and usability that may end up being all we have in this area for 2.8 series. I would like to see it in release sooner rather than later. By exposing CM users will have an opportunity to use this new functionality and provide feedback that may help the future decisions.
Well, I think it is kind a political question in some way.
During CM research we discovered a series of serious issues considering collection management design and behavior at the Blender's core level.
I am currently preparing global Proposal about content management systems in Blender, generalizing all of such issues, it takes almost all time.
This way the Proposal supports CM development and CM proves the Proposal's concepts.
The Proposal's alpha is almost ready, so I plan to launch it next week for consideration by the developers.
Do we have this week?
About feedback - the subject area of the addon is so complex that it took us a whole year only to formulate the basic concepts that need to be satisfied for the needs of massive production.
It is quite difficult to find users who can be involved in production of such a scale to be interested in solving problems of this level, and we still have a nice ideas to realize, that allow to form a solid core of an addon (like filter selected, nesting control, etc).
Anyway, we made a nice progress considering collection management, and we already have realization, that solves some critical issues.
Do you like the solutions that CM provides?
Well, I think it is kind a political question in some way.
During CM research we discovered a series of serious issues considering collection management design and behavior at the Blender's core level.
I am currently preparing global Proposal about content management systems in Blender, generalizing all of such issues, it takes almost all time.
This way the Proposal supports CM development and CM proves the Proposal's concepts.
The Proposal's alpha is almost ready, so I plan to launch it next week for consideration by the developers.
Do we have this week?
About feedback - the subject area of the addon is so complex that it took us a whole year only to formulate the basic concepts that need to be satisfied for the needs of massive production.
It is quite difficult to find users who can be involved in production of such a scale to be interested in solving problems of this level, and we still have a nice ideas to realize, that allow to form a solid core of an addon (like filter selected, nesting control, etc).
Anyway, we made a nice progress considering collection management, and we already have realization, that solves some critical issues.
Do you like the solutions that CM provides?
@1D_Inc From what I understand, from talking to @BrendonMurphy in irc, we have until the end of bcon 1 (Dec. 12) to submit it for release, but he would prefer it to be submitted a little earlier (around Monday, Dec. 9) so that it has a chance for a little review.
I'm thinking that we're pretty close to having the basic features for effective collection management implemented, and that what we have would be very useful to people. For me, the only must-have feature for an initial release would be the basic toggle children functionality (which I've implemented, but not pushed yet). Is there any must-have functionality you can think of for a first initial release?
I'm still undecided about whether it should be included in this release, so I look forward to your thoughts and your Proposal. And if it does get submitted, there's still about 8 weeks for polishing and bug fixing just no new features for 2.82. However, we can continue to develop new features here (I'll upload zips), just not add them to the release (I can setup a separate git repo for further development and then include new features for 2.83)
@1D_Inc From what I understand, from talking to @BrendonMurphy in irc, we have until the end of bcon 1 (Dec. 12) to submit it for release, but he would prefer it to be submitted a little earlier (around Monday, Dec. 9) so that it has a chance for a little review.
I'm thinking that we're pretty close to having the basic features for effective collection management implemented, and that what we have would be very useful to people. For me, the only must-have feature for an initial release would be the basic toggle children functionality (which I've implemented, but not pushed yet). Is there any must-have functionality you can think of for a first initial release?
I'm still undecided about whether it should be included in this release, so I look forward to your thoughts and your Proposal. And if it does get submitted, there's still about 8 weeks for polishing and bug fixing just no new features for 2.82. However, we can continue to develop new features here (I'll upload zips), just not add them to the release (I can setup a separate git repo for further development and then include new features for 2.83)
hi. If you can add and push the toggle children function to contrib. thanks.
Both @1D_Inc and yourself have already invested significant time in this. You've both worked well during the design process and showed a willingness to seek and solve issues as best as possible. Currently I believe you have done near as much as is possible to ensure a valid and useful tool. I'm very happy with the results and as discussed in irc, my feelings are we should release with 2.82. It's obvious that your prepared to address any issues over the coming release cycle progression. We can only put forward the best that we can. I'm also aware of the design limitations through no fault of the addon. again, we are putting forward the best we can.
If you can get the final committed to contrib, we can work forward from there.
hi. If you can add and push the toggle children function to contrib. thanks.
Both @1D_Inc and yourself have already invested significant time in this. You've both worked well during the design process and showed a willingness to seek and solve issues as best as possible. Currently I believe you have done near as much as is possible to ensure a valid and useful tool. I'm very happy with the results and as discussed in irc, my feelings are we should release with 2.82. It's obvious that your prepared to address any issues over the coming release cycle progression. We can only put forward the best that we can. I'm also aware of the design limitations through no fault of the addon. again, we are putting forward the best we can.
If you can get the final committed to contrib, we can work forward from there.
Hi. I think CM can be commited to the contrib.
Some conditions I would like to propose.
Leave the interface incompressed.
It's better for familiarization, it has a lower entry threshold, also looking good enough. There will be no problems for users to start using compressed version if it will be made in further.
I thought about placing the EC on the left in a straight column, as it is global and non-chaining, but it will not change much, and need/can to be tested later.
Shift+Ctrl+LMB to respect nesting for isolation, Ctrl to control nesting (the toggle children function) - https://developer.blender.org/T69577#819065
It is an experimental behavior, so realization is currently unclear, and it also contradicts default behavior. I'm not sure that we will find the best implementation by the deadline, it will take more time for additional workflow research.
We know that we need it, but we don’t know how it will work best. I would suggest postponing the implementation so that users are not used to a dubious solution. Global shortcuts/behavior is needed to be discused with core devs,
during the discussion of the Proposal. It will also take more time.
Filter collections of the selection (Filter selected button).
I think it deserves attention, because (on my opinion) it can be made to the Dec 9. Are you ok with such a plan?
Hi. I think CM can be commited to the contrib.
Some conditions I would like to propose.
- Leave the interface incompressed.
It's better for familiarization, it has a lower entry threshold, also looking good enough. There will be no problems for users to start using compressed version if it will be made in further.
I thought about placing the EC on the left in a straight column, as it is global and non-chaining, but it will not change much, and need/can to be tested later.
- Shift+Ctrl+LMB to respect nesting for isolation, Ctrl to control nesting (the toggle children function) - https://developer.blender.org/T69577#819065
It is an experimental behavior, so realization is currently unclear, and it also contradicts default behavior. I'm not sure that we will find the best implementation by the deadline, it will take more time for additional workflow research.
We know that we need it, but we don’t know how it will work best. I would suggest postponing the implementation so that users are not used to a dubious solution. Global shortcuts/behavior is needed to be discused with core devs,
during the discussion of the Proposal. It will also take more time.
- Filter collections of the selection (Filter selected button).
I think it deserves attention, because (on my opinion) it can be made to the Dec 9. Are you ok with such a plan?
@BrendonMurphy
Ok, I've pushed the basic toggle children function to contrib. I didn't push immediately because I had been thinking about including another commit in the push, but it isn't finished and I may not include it anyway.
It's already in contrib. It's the 2.82 official release we're looking at now :)
Leave the interface incompressed.
Yeah. No arguments there. I do like the compressed version, but that can come anytime.
Ctrl to control nesting (the toggle children function
I think this needs to be in the release. It's behavior matches what's default for EC in the outliner and it's really useful.
Shift+Ctrl+LMB to respect nesting for isolation
This I think is experimental and needs testing and I would prefer to leave it out of the initial release.
Filter collections of the selection (Filter selected button).
I think I can do it. No promises, but I'll try.
@BrendonMurphy
Ok, I've pushed the basic toggle children function to contrib. I didn't push immediately because I had been thinking about including another commit in the push, but it isn't finished and I may not include it anyway.
@1D_Inc
> I think CM can be commited to the contrib.
It's already in contrib. It's the 2.82 official release we're looking at now :)
> Leave the interface incompressed.
Yeah. No arguments there. I do like the compressed version, but that can come anytime.
> Ctrl to control nesting (the toggle children function
I think this needs to be in the release. It's behavior matches what's default for EC in the outliner and it's really useful.
> Shift+Ctrl+LMB to respect nesting for isolation
This I think is experimental and needs testing and I would prefer to leave it out of the initial release.
> Filter collections of the selection (Filter selected button).
I think I can do it. No promises, but I'll try.
By the way, here is a picture about how Action map is supposed to be used.
Currently, each action that we have provided or plan to provide can be associated with it as a combination of components.
This does not mean that we must provide all possible combinations - if we have a map, this does not mean that we must visit every village.
This means that we can predict a better route in further.
Well, okay then)
By the way, here is a picture about how Action map is supposed to be used.
Currently, each action that we have provided or plan to provide can be associated with it as a combination of components.
![AMAP.png](https://archive.blender.org/developer/F8196025/AMAP.png)
This does not mean that we must provide all possible combinations - if we have a map, this does not mean that we must visit every village.
This means that we can predict a better route in further.
It occurred to me that the isolation toggle should be highlighted, the same as the enabling toggle, when there is history to restore. This makes it much clearer what state you are in and will help us to spot any bugs that may crop up with how isolation is handled. Because this is a somewhat large change I wanted to have it tested here before committing, so I'm posting a zip with the changes here.
While testing this I found that the SS RT did not chain properly, so I've also fixed that.
It occurred to me that the isolation toggle should be highlighted, the same as the enabling toggle, when there is history to restore. This makes it much clearer what state you are in and will help us to spot any bugs that may crop up with how isolation is handled. Because this is a somewhat large change I wanted to have it tested here before committing, so I'm posting a zip with the changes here.
While testing this I found that the SS RT did not chain properly, so I've also fixed that.
[Collection_Manager_Isolation_Highlight_Test.zip](https://archive.blender.org/developer/F8197794/Collection_Manager_Isolation_Highlight_Test.zip)
@BrendonMurphy found a bug with phantom mode with the isolation highlight test. Please change line 1169 in operators.py from:
phantom_history[rto+"_history"] = history.get(view_layer, `- [ ]`).copy()
to:
phantom_history[rto+"_history"] = history.get(view_layer, `{}`).copy()
A very nice idea with highlighting!
Actually, didn't know that this is possible.
Also tried selection filtering. Indeed, it is as useful as I imagined - now we can check the selection for consistency!
I like how it discovers object's cumulativity (if it is placed in several collections).
Definitely love it =)
A very nice idea with highlighting!
Actually, didn't know that this is possible.
Also tried selection filtering. Indeed, it is as useful as I imagined - now we can check the selection for consistency!
I like how it discovers object's cumulativity (if it is placed in several collections).
Definitely love it =)
hi, this is now ready to land. @Imaginer first remove from contrib, 2nd add to release same as brush menus.
Any issue let me know and I'll commit for you.
hi, this is now ready to land.
@Imaginer first remove from contrib, 2nd add to release same as brush menus.
Any issue let me know and I'll commit for you.
A very nice idea with highlighting!
Actually, didn't know that this is possible.
Thanks!
The toggles are actually just operators that are icon only (emboss=False), so they can have the same features as any other operator.
Also tried selection filtering. ... Definitely love it =)
Wonderful :)
Replaced my token.
As it turned out, fire here means "Burninate", instead of "Hot!", sorry =)
No problem! I actually didn't know what "Burninate" meant until I looked it up today (for anyone wondering, basically "Kill With Fire").
I had just thought it meant something like "You're on fire!" i.e. doing great, so you learn something new every day.
Thanks @BrendonMurphy
> A very nice idea with highlighting!
> Actually, didn't know that this is possible.
Thanks!
The toggles are actually just operators that are icon only (emboss=False), so they can have the same features as any other operator.
> Also tried selection filtering. ... Definitely love it =)
Wonderful :)
> Replaced my token.
> As it turned out, fire here means "Burninate", instead of "Hot!", sorry =)
No problem! I actually didn't know what "Burninate" meant until I looked it up today (for anyone wondering, basically "Kill With Fire").
I had just thought it meant something like "You're on fire!" i.e. doing great, so you learn something new every day.
It seems, I found a bug - disabling Phantom mode removes all RTOs from GUI until new subcollection is created.
Can it be confirmed?
Currently, a Phantom mode is a hack, a "temporal clone of a Vew Layer for modifications" that we made because we can't clone View Layer for modifications legally, because cloning View Layer in a regular way requires some hacks.
It seems, I found a bug - disabling Phantom mode removes all RTOs from GUI until new subcollection is created.
Can it be confirmed?
![Peek 2019-12-15 18-55.gif](https://archive.blender.org/developer/F8223369/Peek_2019-12-15_18-55.gif)
Currently, a Phantom mode is a hack, a "temporal clone of a Vew Layer for modifications" that we made because we can't clone View Layer for modifications legally, because cloning View Layer in a regular way requires some hacks.
@1D_Inc I can't seem to trigger it on my end. From your gif, it kinda looks like it's getting an error around when the exclude checkbox would be drawn and so it cuts off everything after it too. Are there any python errors in a terminal?
Currently, a Phantom mode is a hack
Yes and no. Yes, cloning the View Layer and switching to a new "Phantom Mode" View Layer might be a bit easier and more expressive than manually saving it, but all the toggles histories are being saved as well. The real hack with Phantom Mode, and all the histories, is that regular blender doesn't know about them, and so could corrupt their states.
@1D_Inc I can't seem to trigger it on my end. From your gif, it kinda looks like it's getting an error around when the exclude checkbox would be drawn and so it cuts off everything after it too. Are there any python errors in a terminal?
> Currently, a Phantom mode is a hack
Yes and no. Yes, cloning the View Layer and switching to a new "Phantom Mode" View Layer might be a bit easier and more expressive than manually saving it, but all the toggles histories are being saved as well. The real hack with Phantom Mode, and all the histories, is that regular blender doesn't know about them, and so could corrupt their states.
The real hack with Phantom Mode, and all the histories, is that regular blender doesn't know about them, and so could corrupt their states.
Yes) Also, I mean that the ability of making legal clone of View Layer can replace Phantom mode by its scope.
If we will get those changes in API that will allow regular cloning a View Layer, Phantom mode can be realized as a regular rewritable View Layer called "Phantom mode" or, better " CM= [View layer name used as base for creating temporal state]".
We made such a thing for transformation orientations - instead of using default feature that makes a lot of separate transformation orientations, we made an addon that works with single rewritable transformation orientation, called "1DTEMP".
This way will be able to store our temporal view layer data legally.
> Are there any python errors in a terminal?
Wow, yes, actually, writing. 2.82, linux mint
![изображение.png](https://archive.blender.org/developer/F8226330/изображение.png)
>The real hack with Phantom Mode, and all the histories, is that regular blender doesn't know about them, and so could corrupt their states.
Yes) Also, I mean that the ability of making legal clone of View Layer can replace Phantom mode by its scope.
If we will get those changes in API that will allow regular cloning a View Layer, Phantom mode can be realized as a regular rewritable View Layer called "Phantom mode" or, better " CM= [View layer name used as base for creating temporal state]".
We made such a thing for transformation orientations - instead of using default feature that makes a lot of separate transformation orientations, we made an addon that works with single rewritable transformation orientation, called "1DTEMP".
This way will be able to store our temporal view layer data legally.
I think it will be ok to temporairly remove a Phantom mode if it will take too much efforts to make it work reliably, because we can explain the necessity of VLayer cloning feature concept in words.
I think it will be ok to temporairly remove a Phantom mode if it will take too much efforts to make it work reliably, because we can explain the necessity of VLayer cloning feature concept in words.
@1D_Inc Actually, it turns out that bug was already fixed in master, I just hadn't released a new zip yet.
I think it will be ok to temporairly remove a Phantom mode
I don't think there's any need for that. It's had a couple small hiccups, but overall I think it's been remarkably stable.
Changes since version 11:
Add isolation toggle highlighting.
Fix bugs associated with isolation toggle highlighting and Phantom mode.
Small cleanup of a missed print statement. Collection_Manager_12.zip
@1D_Inc Actually, it turns out that bug was already fixed in master, I just hadn't released a new zip yet.
> I think it will be ok to temporairly remove a Phantom mode
I don't think there's any need for that. It's had a couple small hiccups, but overall I think it's been remarkably stable.
Changes since version 11:
Add isolation toggle highlighting.
Fix bugs associated with isolation toggle highlighting and Phantom mode.
Small cleanup of a missed print statement.
[Collection_Manager_12.zip](https://archive.blender.org/developer/F8228287/Collection_Manager_12.zip)
Installed v12 (1.8.1)
I think, it may be better to name them respestively to direct versions, or maybe both, like Collection_Manager_1-8-1_v12?
This will allow to see what file is installed)
Phantom mode now don't disable buttons, but disables their functionality.
Launching addon - ok, entering PM - ok, exit from PM - every option is broken and unaccessible, but global RTOs (enabling toggle) are ok.
Installed v12 (1.8.1)
I think, it may be better to name them respestively to direct versions, or maybe both, like
**Collection_Manager_1-8-1_v12**?
This will allow to see what file is installed)
Phantom mode now don't disable buttons, but disables their functionality.
Launching addon - ok, entering PM - ok, exit from PM - every option is broken and unaccessible, but global RTOs (enabling toggle) are ok.
![изображение.png](https://archive.blender.org/developer/F8228613/изображение.png)
```
Update:
Fixed bug with toggle buttons broken after leaving Phantom Mode.
Fixed bug with rto history not being properly restored after leaving Phantom Mode.
Update:
Fixed bug with toggle buttons broken after leaving Phantom Mode.
Fixed bug with rto history not being properly restored after leaving Phantom Mode.
@1D_Inc How about this for naming?
[Collection_Manager_13_v1_8_2.zip](https://archive.blender.org/developer/F8231518/Collection_Manager_13_v1_8_2.zip)
Also, what about Ctrl+Shift respective nesting isolation toggle? Can we give a try?
Can I ask you to put a BA feedback tread link into description?
https://blenderartists.org/t/release-addon-collection-manager-feedback/1186198
Also, what about Ctrl+Shift respective [nesting isolation ](https://developer.blender.org/T69577#819065) toggle? Can we give a try?
Can I ask you to put a BA feedback tread link into description?
Done.
Also, what about Ctrl+Shift respective nesting isolation toggle? Can we give a try?
Yes. I'll add it to a future dev branch and post a zip here. I can't promise that I'll have time over the next couple days, though. I'll just have to see how things go.
> Can I ask you to put a BA feedback tread link into description?
Done.
> Also, what about Ctrl+Shift respective nesting isolation toggle? Can we give a try?
Yes. I'll add it to a future dev branch and post a zip here. I can't promise that I'll have time over the next couple days, though. I'll just have to see how things go.
Initially I was looking for a replacement for the older Layer Manager addon. We had this in Blender from 2.4x to 2.7x to fill a gap, improve usability and offer functionality until we moved on to collections.
In 2.79 there are only Layers/QCD - so there are only RAM system, that was designed to be a RAM system and works nice like a RAM system, just like any Quick Content Display system (QCD).
The old Layer manager add-on was an attempt to remake RAM system into some limited HDD system, giving static names to dynamic context slots.
You know, sometimes HDD systems in computers are used as a RAM, for swap files, so there was a reverse example, and this is always a compromise solution.
At some point a lot of people started thinking, that Layers/QCD is nothing more than a bad limited HDD system, because they never used it properly - for handling dynamic context during complex multi-referenced modeling in combinational access way, as far as Layers/QCD was the only system for making scene setup - that is completely different goal, that differs from complex multi-referenced modeling.
So a strange thing happened in 2.8 - HDD (Collections) system replaced RAM (Layers/QCD) system, instead of adding HDD to a RAM=)
Here is an explanation between differences of purposes of those systems, and how they are usually combined together. https://devtalk.blender.org/t/layers-maniphest/6578/115?u=1d_inc
In this topic, we are trying to improve the Collections system so that it better matches its main goal - the complex scene setup.
> In #69577#822210, @BrendonMurphy wrote:
> Initially I was looking for a replacement for the older Layer Manager addon. We had this in Blender from 2.4x to 2.7x to fill a gap, improve usability and offer functionality until we moved on to collections.
Well, here is a huge problem of a [system type definition ](https://en.wikipedia.org/wiki/Duck_typing).
The problem is that Collections system and Layers/QCD are [completely different types of systems ](https://devtalk.blender.org/uploads/default/original/2X/f/ff884f29f2b9e091924943d358e63451b3aa9318.png).
![CVE_06.png](https://archive.blender.org/developer/F8244877/CVE_06.png)
In 2.79 there are only Layers/QCD - so there are only RAM system, that was designed to be a RAM system and works nice like a RAM system, just like any Quick Content Display system (QCD).
The old Layer manager add-on was an attempt to remake RAM system into some limited HDD system, giving static names to dynamic context slots.
You know, sometimes HDD systems in computers are used as a RAM, for swap files, so there was a reverse example, and this is always a compromise solution.
At some point a lot of people started thinking, that Layers/QCD is nothing more than a bad limited HDD system, because they never used it properly - for handling dynamic context during complex multi-referenced modeling in combinational access way, as far as Layers/QCD was the only system for making scene setup - that is completely different goal, that differs from complex multi-referenced modeling.
So a strange thing happened in 2.8 - HDD (Collections) system **replaced** RAM (Layers/QCD) system, instead of **adding** HDD to a RAM=)
Here is an explanation between differences of purposes of those systems, and how they are usually combined together.
https://devtalk.blender.org/t/layers-maniphest/6578/115?u=1d_inc
In this topic, we are trying to improve the Collections system so that it better matches its main goal - the complex scene setup.
@1D_Inc Here's the test of nested isolation. It's implemented for all the toggles.
[Collection_Manager_future_dev_1_9_0.zip](https://archive.blender.org/developer/F8255835/Collection_Manager_future_dev_1_9_0.zip)
Oh, yes, it works just awesome)
Now we can isolate not only single collection, but also entire branch, or subbranch of collections in toggle way)
So, we has got the ability to explore collections scene setup in much more deep and flexible way)
Also like shortcuts, I think it was a nice idea to assign simple isolation to Shift+LMB, nested isolation to Shift+Ctrl+LMB, and control nested to Ctrl+LMB.
I tried it, it feels natural, and, on my mind, is pretty much easy to remember, as complex action requires more complex shortcut, and everything, that contain Shift is about isolations.
It also makes me doubt Shift + LMB for enabling invertion, because we are definitely forcing Shift for isolation actions.
That's why I was proposing Ctrl+LMB for enabling invertion. This is not critical, but will look more appropriate in my opinion.
Currently it takes some additional memory to remember, that Shift key modificator behaves differently for local and global RTOs.
Do you feel the same?
Oh, yes, it works just awesome)
Now we can isolate not only single collection, but also entire branch, or subbranch of collections in toggle way)
So, we has got the ability to explore collections scene setup in much more deep and flexible way)
Also like shortcuts, I think it was a nice idea to assign simple isolation to Shift+LMB, nested isolation to Shift+Ctrl+LMB, and control nested to Ctrl+LMB.
I tried it, it feels natural, and, on my mind, is pretty much easy to remember, as complex action requires more complex shortcut, and everything, that contain Shift is about isolations.
It also makes me doubt Shift + LMB for enabling invertion, because we are definitely forcing Shift for isolation actions.
That's why I was proposing Ctrl+LMB for enabling invertion. This is not critical, but will look more appropriate in my opinion.
Currently it takes some additional memory to remember, that Shift key modificator behaves differently for local and global RTOs.
Do you feel the same?
Also like shortcuts ... I tried it, it feels natural
Good. I agree.
That's why I was proposing Ctrl+LMB for enabling invertion.
Do you feel the same?
I don't really have a preference. Something else to think about is that currently everything that uses Shift as a hotkey remembers history, while if you Ctrl-Click on an isolation toggle it's a permanent action.
> Oh, yes, it works just awesome)
Excellent! :)
> Also like shortcuts ... I tried it, it feels natural
Good. I agree.
> That's why I was proposing Ctrl+LMB for enabling invertion.
> Do you feel the same?
I don't really have a preference. Something else to think about is that currently everything that uses Shift as a hotkey remembers history, while if you Ctrl-Click on an isolation toggle it's a permanent action.
Well, anyway, it seems, we has got free CTRL+LMB shortcut for Global RTOs.
How about to fill it with something breakthrough?
As you may know, currently it is pretty much hard to predict what will be rendered after you press the render button, because RR state is totally implicit - there is no way to see it in viewport.
From other side, VV is totally explicit, as it is dislayed in viewport, and also is controllable by hotkeys there - H, Alt+H, Shift+H hotkeys allow to setup VV states directly.
But VV is not renderable at all, excluding preview render, so VV is temporal by it's nature.
So, RTOs like RR has got only renderability, while VV - flexible setup and display without any influence to renderability.
I think, that would be nice to have ability to view, setup and control implicit RTOs (RR, HH, IO) with states of explicit one (VV, DV, EC).
The workflow I propose is pretty much simple - setup scene visibility, and then just copy it to renderability to get predictable result on final render.
And all we need for this is the ability to copy RTO values between columns, and I think it is nice ability to fill CTRL+LMB shortcut.
Basically, this is the Photoshop eyedropper tool used to manage global RTOs setups:
I can see here a couple of troubles, for example,
chaining implicit RTOs can be expressed fully only with chaining explicit RTOs, (chaining RR -> with chaining VV, non-chaining IO -> with non-chaining EC ) but it is not critical, it is possible to remember such a things, or read from our typing scheme.
Some of RTOs are applicable ont only to collections but also to objects, so it would be nice to copy also object's values as well.
We have only blue highlighting, that can visually mix with invertion. Copying is almost immediate action (you copy - you paste), so highlighting that lasts a long time is definitely an inversion.
Copying erases column values, but we can store them with swap columns values action . Maybe, CTRL+ALT+LMB action for swap Global column values alongside with CTRL+LMB for copy will help with this. It would be nice to see both swapped buttons highlighted in red, but, I guess, it is impossible (yet).
But, in general, I think the ability to see just immediately in viewport what you will get after pressing render button deserves that research)
What do you think?
Well, anyway, it seems, we has got free CTRL+LMB shortcut for Global RTOs.
How about to fill it with something breakthrough?
As you may know, currently it is pretty much hard to predict what will be rendered after you press the render button, because RR state is totally **implicit** - there is no way to see it in viewport.
From other side, VV is totally **explicit**, as it is dislayed in viewport, and also is controllable by hotkeys there - H, Alt+H, Shift+H hotkeys allow to setup VV states directly.
But VV is not renderable at all, excluding preview render, so VV is temporal by it's nature.
So, RTOs like RR has got only renderability, while VV - flexible setup and display without any influence to renderability.
I think, that would be nice to have ability to view, setup and control implicit RTOs (RR, HH, IO) with states of explicit one (VV, DV, EC).
The workflow I propose is pretty much simple - setup scene visibility, and then just copy it to renderability to get predictable result on final render.
And all we need for this is the ability to copy RTO values between columns, and I think it is nice ability to fill CTRL+LMB shortcut.
Basically, this is the Photoshop eyedropper tool used to manage global RTOs setups:
![Global RTO copy+swap.png](https://archive.blender.org/developer/F8258526/Global_RTO_copy_swap.png)
I can see here a couple of troubles, for example,
- chaining implicit RTOs can be expressed fully only with chaining explicit RTOs, (chaining RR -> with chaining VV, non-chaining IO -> with non-chaining EC ) but it is not critical, it is possible to remember such a things, or read from our typing scheme.
- Some of RTOs are applicable ont only to collections but also to objects, so it would be nice to copy also object's values as well.
- We have only blue highlighting, that can visually mix with invertion. Copying is almost immediate action (you copy - you paste), so highlighting that lasts a long time is definitely an inversion.
- Copying erases column values, but we can store them with **swap columns values action** . Maybe, CTRL+ALT+LMB action for swap Global column values alongside with CTRL+LMB for copy will help with this. It would be nice to see both swapped buttons highlighted in red, but, I guess, it is impossible (yet).
But, in general, I think the ability to see just immediately in viewport what you will get after pressing render button deserves that research)
What do you think?
I think having the option to copy is a great idea, but I wouldn't use highlighting for it. Copy - Paste is such a quick operation that you don't need an indication, plus it could be confused with a history state.
I don't see a use for swapping, but if you have a use for it I can add it. Swapping brings up another potential issue - applying states. Currently, when you isolate something, or do an enable all, it sort of locks in the history of the last state. And while you can clear this by clicking on a toggle, it would be nice to be able to use e.g. ALT+RMB to forget history/apply state. Also, with the multi-color highlighting, it would be nice, but I don't think it's currently possible. And with the "Tracker Curfew" in effect I doubt a patch to allow it would get accepted right now (but if you do come across a way to get multi-color highlighting, let me know).
As you may know, currently it is pretty much hard to predict what will be rendered after you press the render button, because RR state is totally implicit - there is no way to see it in viewport.
For this, I think it would be better to have a "show what will be rendered" function, rather than copying and pasting. The problem with this, at the moment, is the application to objects - like you mentioned. Objects aren't really supported right now, but they may be in the future. For now I would suggest the Collection Manager should only operate on collections, except for special cases like removing collections with objects, and if/when objects get proper support we can include them in things like "show what will be rendered" and copying.
On a slightly different topic, I need to spend some time bug fixing and polishing what will go into 2.82, so I won't get to the stuff above for a bit. But I think things are developing nicely. :)
> How about to fill it with something breakthrough?
I like breakthrough things. :)
There's some interesting ideas here.
I think having the option to copy is a great idea, but I wouldn't use highlighting for it. Copy - Paste is such a quick operation that you don't need an indication, plus it could be confused with a history state.
I don't see a use for swapping, but if you have a use for it I can add it. Swapping brings up another potential issue - applying states. Currently, when you isolate something, or do an enable all, it sort of locks in the history of the last state. And while you can clear this by clicking on a toggle, it would be nice to be able to use e.g. ALT+RMB to forget history/apply state. Also, with the multi-color highlighting, it would be nice, but I don't think it's currently possible. And with the "Tracker Curfew" in effect I doubt a patch to allow it would get accepted right now (but if you do come across a way to get multi-color highlighting, let me know).
> As you may know, currently it is pretty much hard to predict what will be rendered after you press the render button, because RR state is totally implicit - there is no way to see it in viewport.
For this, I think it would be better to have a "show what will be rendered" function, rather than copying and pasting. The problem with this, at the moment, is the application to objects - like you mentioned. Objects aren't really supported right now, but they may be in the future. For now I would suggest the Collection Manager should only operate on collections, except for special cases like removing collections with objects, and if/when objects get proper support we can include them in things like "show what will be rendered" and copying.
On a slightly different topic, I need to spend some time bug fixing and polishing what will go into 2.82, so I won't get to the stuff above for a bit. But I think things are developing nicely. :)
In #69577#842005, @Imaginer wrote:
I like breakthrough things. :)
There's some interesting ideas here.
Thanks)
Copy - Paste is such a quick operation that you don't need an indication, plus it could be confused with a history state.
Yes, I also think it would not be critical, because such kind of actions are too quick.
I don't see a use for swapping, but if you have a use for it I can add it.
Aw, let me explain this technique.
The difference between copy and swap actions is the same, that between destructive and non-destructive actions.
Copy action rewrites entire column, so it works in destuctive way, that is suitable for setups that are made from scratch, or any other case when existing setup of expicit RTO doesnot matter.
Swap action allow to temporairly keep all values of both columns without using any buffer, so it allow to explore and edit existing implicit setup, preserving explicit setup for recovery.
Copy action is a single direct action = setup > copypaste.
Swap is a double action = swap to see > setup > swap back.
Here is a scheme with all possible actions with copy and swap.
As you can see here, swap allow to make changes to implicit RTO, keeping explicit RTO values untouched:
And with the "Tracker Curfew" in effect I doubt a patch to allow it would get accepted right now (but if you do come across a way to get multi-color highlighting, let me know).
Well, we will do our best - I will propose this and explain the concept behind it.
For this, I think it would be better to have a "show what will be rendered" function, rather than copying and pasting.
Well, that is a nice idea for separate mode, I guess)
But the goal of copy/swap is a bit deeper, than to see what will be rendered.
The main goal of this tool is the ability to observe and edit implicit RTOs as explicit RTOs, including such unobvios things like HH and IO, and, of course, without loosing an actual setup, due to the swap ability.
The problem with this, at the moment, is the application to objects - like you mentioned. Objects aren't really supported right now, but they may be in the future. For now I would suggest the Collection Manager should only operate on collections, except for special cases like removing collections with objects, and if/when objects get proper support we can include them in things like "show what will be rendered" and copying.
I understand.
Is it possible to reach objects RTOs, if to make a separate addon, that contains only global RTOs with copy and swap abilities, for concept testing purposes?
We will need some realization as proof of concept at some point, just to show that it would be useful to have such abilities.
On a slightly different topic, I need to spend some time bug fixing and polishing what will go into 2.82, so I won't get to the stuff above for a bit. But I think things are developing nicely. :)
For sure, it is going great!
Since copy/swap is a sandbox research, we can't have any deadlines for that, unlike the situation with 2.82.
So the only thing I would like to know if you like such kind of idea.
> In #69577#842005, @Imaginer wrote:
> I like breakthrough things. :)
> There's some interesting ideas here.
Thanks)
> Copy - Paste is such a quick operation that you don't need an indication, plus it could be confused with a history state.
Yes, I also think it would not be critical, because such kind of actions are too quick.
> I don't see a use for swapping, but if you have a use for it I can add it.
Aw, let me explain this technique.
The difference between copy and swap actions is the same, that between destructive and non-destructive actions.
- **Copy** action rewrites entire column, so it works in destuctive way, that is suitable for setups that are made from **scratch**, or any other case when existing setup of expicit RTO doesnot matter.
- **Swap** action allow to temporairly keep all values of both columns without using any buffer, so it allow to explore and edit **existing** implicit setup, preserving explicit setup for recovery.
Copy action is a single direct action = setup > copypaste.
Swap is a double action = swap to see > setup > swap back.
Here is a scheme with all possible actions with copy and swap.
As you can see here, swap allow to make changes to implicit RTO, keeping explicit RTO values untouched:
![CopySWAP_CC.png](https://archive.blender.org/developer/F8259967/CopySWAP_CC.png)
> And with the "Tracker Curfew" in effect I doubt a patch to allow it would get accepted right now (but if you do come across a way to get multi-color highlighting, let me know).
Well, we will do our best - I will propose this and explain the concept behind it.
> For this, I think it would be better to have a "show what will be rendered" function, rather than copying and pasting.
Well, that is a nice idea for separate mode, I guess)
But the goal of copy/swap is a bit deeper, than to see what will be rendered.
The main goal of this tool is the ability to observe and edit implicit RTOs as explicit RTOs, including such unobvios things like HH and IO, and, of course, without loosing an actual setup, due to the swap ability.
> The problem with this, at the moment, is the application to objects - like you mentioned. Objects aren't really supported right now, but they may be in the future. For now I would suggest the Collection Manager should only operate on collections, except for special cases like removing collections with objects, and if/when objects get proper support we can include them in things like "show what will be rendered" and copying.
I understand.
Is it possible to reach objects RTOs, if to make a separate addon, that contains only global RTOs with copy and swap abilities, for concept testing purposes?
We will need some realization as proof of concept at some point, just to show that it would be useful to have such abilities.
> On a slightly different topic, I need to spend some time bug fixing and polishing what will go into 2.82, so I won't get to the stuff above for a bit. But I think things are developing nicely. :)
For sure, it is going great!
Since copy/swap is a sandbox research, we can't have any deadlines for that, unlike the situation with 2.82.
So the only thing I would like to know if you like such kind of idea.
I made a gif about swap action.
Hope it will explain the mechanics behind it.
We are making implicit setup temporarily visible with first swap, then editing setup while it is visible, and then deploying it back with second swap, keeping things non-destructive.
I made a gif about swap action.
Hope it will explain the mechanics behind it.
We are making implicit setup temporarily visible with first swap, then editing setup while it is visible, and then deploying it back with second swap, keeping things non-destructive.
![SWAP action.gif](https://archive.blender.org/developer/F8260100/SWAP_action.gif)
Update.
Unless any major bugs are found, here is a zip of the version that will be in the official release of 2.82. 😁
Bugs fixed/polish added since the last zip (v1_8_2):
Fixed the popup window’s auto-sizing when it’s first opened.
Fixed an error when popping up info notices.
Simplified the remove operator.
Fixed a minor error regarding selection.
Thanks to everyone who provided feedback/reported bugs. Now it’s on to 2.83. 🙂
Update.
Unless any major bugs are found, here is a zip of the version that will be in the official release of 2.82. :grin:
Bugs fixed/polish added since the last zip (v1_8_2):
Fixed the popup window’s auto-sizing when it’s first opened.
Fixed an error when popping up info notices.
Simplified the remove operator.
Fixed a minor error regarding selection.
Thanks to everyone who provided feedback/reported bugs. Now it’s on to 2.83. 🙂
[Collection_Manager_14_v1_8_8.zip](https://archive.blender.org/developer/F8284370/Collection_Manager_14_v1_8_8.zip)
Such a gorgeous news!
So much work has been done here.
I like new description, so accurate, short and consistent now)
I would like to propose to add a appropriate hotkey modifier to functions description, because most of such functions can be accessible only that way.
Maybe, as separate list of shortcuts in Shortcut - Description form to keep basic description clean, like that:
Such list will be also short, useful, pretty much consistent, and will allow new users to dive into the addon's functionality.
About bugs - I keeping testing, but already found that nesting local isolation on Shift+Ctrl isnt working on 2.82 beta, it makes just single isolation.
Can you confirm that?
Such a gorgeous news!
So much work has been done here.
I like new description, so accurate, short and consistent now)
I would like to propose to add a appropriate hotkey modifier to functions description, because most of such functions can be accessible only that way.
Maybe, as separate list of shortcuts in **Shortcut - Description** form to keep basic description clean, like that:
**Local RTOs:**
//LMB - simple collection on/off operation
Shift+LMB - single isolation toggle
Shift+Ctrl+LMB - nesting isolation toggle
Ctrl+LMB - nesting control***Global RTOs:***LMB - Global enabling toggle
Shift+LMB - Global inverting toggle
[ Ctrl+LMB - Copypaste column values ]
[ Alt+LMB - Swap column values ]//
[...]- planned / to do
Such list will be also short, useful, pretty much consistent, and will allow new users to dive into the addon's functionality.
About bugs - I keeping testing, but already found that nesting local isolation on Shift+Ctrl isnt working on 2.82 beta, it makes just single isolation.
Can you confirm that?
I would like to propose to add a appropriate hotkey modifier to functions description
Good idea. I'll add that.
About bugs - I keeping testing, but already found that nesting local isolation on Shift+Ctrl isnt working on 2.82 beta, it makes just single isolation.
Probably my fault. The latest zip (v1_8_8) I posted is what will be in 2.82 and doesn't include nested isolation. And I forgot to include the zip for v1_9_0, which does include it, under the current download section of the task. But v1_9_0 and any zips with new features will be for 2.83 and beyond. I'll update the task to better reflect this.
If you are referring to v1_9_0, I did find a bug in it regarding isolation and I hope to have a fix out soon.
> I would like to propose to add a appropriate hotkey modifier to functions description
Good idea. I'll add that.
> About bugs - I keeping testing, but already found that nesting local isolation on Shift+Ctrl isnt working on 2.82 beta, it makes just single isolation.
Probably my fault. The latest zip (v1_8_8) I posted is what will be in 2.82 and doesn't include nested isolation. And I forgot to include the zip for v1_9_0, which does include it, under the current download section of the task. But v1_9_0 and any zips with new features will be for 2.83 and beyond. I'll update the task to better reflect this.
If you are referring to v1_9_0, I did find a bug in it regarding isolation and I hope to have a fix out soon.
Okay.
About description - it can be a bit unobvious what are, actually, local RTOs, global RTOs, expansion operator and so on, so I guess it would be helpful to mark with frames and sign them on a special addon's screenshot.
Maybe it will be better to put clean screenshot with downloads in the begining of a description before overview (to see it without scrolling, as far as it is a face of the the addon), and add a special screenshot in the end, righ after shortcuts, to explain the anatomy of the addon.
How do you think?
Okay.
About description - it can be a bit unobvious what are, actually, local RTOs, global RTOs, expansion operator and so on, so I guess it would be helpful to mark with frames and sign them on a special addon's screenshot.
Maybe it will be better to put clean screenshot with downloads in the begining of a description before overview (to see it without scrolling, as far as it is a face of the the addon), and add a special screenshot in the end, righ after shortcuts, to explain the anatomy of the addon.
How do you think?
Let me try it with having small cutouts next to the categories and see if that works. If that's clear enough I don't see a problem just having the screenshot at the bottom with the downloads.
Let me try it with having small cutouts next to the categories and see if that works. If that's clear enough I don't see a problem just having the screenshot at the bottom with the downloads.
Well, here is a problem - a lot of things are visually doubling each other.
For examle, all RTOs, select object collection operator versus filter collection by selection, and all those 50 shades of gray crosses over inteface ...
I think it is important to show exact location
Well, here is a problem - a lot of things are visually doubling each other.
For examle, all RTOs, select object collection operator versus filter collection by selection, and all those 50 shades of gray crosses over inteface ...
I think it is important to show exact location
I'll admit, that looks better. I'll add it to the task description with a few tweaks, for example, what you term "filter by name" actually inverts the filtering.
I'll admit, that looks better. I'll add it to the task description with a few tweaks, for example, what you term "filter by name" actually inverts the filtering.
Yes, with this screenshot it looks more loud and clear)
I am not sure about red Invert filtering, because we have invert actions that works in other way, that can be confusing.
Also, it is name-related one, so it is more like "search by name", or "find by string" or maybe simlpy "search" or "find"?
Yes, with this screenshot it looks more loud and clear)
I am not sure about red Invert filtering, because we have invert actions that works in other way, that can be confusing.
Also, it is name-related one, so it is more like "search by name", or "find by string" or maybe simlpy "search" or "find"?
Nope. It's a built in blender function we get for free and when you press it it inverts the UIList's filter. So for example if you're filtering collections by selected objects and you press the invert filter button it will show you all the collections that don't have the selected objects. The text field before it is what filters by name, so maybe it needs some red text in the image too.
Nope. It's a built in blender function we get for free and when you press it it inverts the UIList's filter. So for example if you're filtering collections by selected objects and you press the invert filter button it will show you all the collections that don't have the selected objects. The text field before it is what filters by name, so maybe it needs some red text in the image too.
Aw. Maybe, I got something wrong, I will check it)
By the way, I've seen a request for "find and replace" renaming function for collections, because new default find and replace works with objects names only.
It can be fixed one day, but anyway such functionality can be interesting in terms of collections management.
Aw. Maybe, I got something wrong, I will check it)
By the way, I've seen a request for "find and replace" renaming function for collections, because new default find and replace works with objects names only.
It can be fixed one day, but anyway such functionality can be interesting in terms of collections management.
Aw. Maybe, I got something wrong, I will check it)
No worries!
By the way, I've seen a request for "find and replace" renaming function for collections
Not sure how exactly that'll work, but I'll add it to the list of potential features.
> Aw. Maybe, I got something wrong, I will check it)
No worries!
> By the way, I've seen a request for "find and replace" renaming function for collections
Not sure how exactly that'll work, but I'll add it to the list of potential features.
Update for 2.82:
Changes:
Fixed tooltip for local render RTO.
Fixed bug with isolate/restore state when there is only one RTO to restore.
[Collection_Manager_15_v1_8_9.zip](https://archive.blender.org/developer/F8298801/Collection_Manager_15_v1_8_9.zip)
Cool!
Meanwhile, we are trying to hack cloning view layer concept, to define possibility conditions and obtain some kind of a realization in research way.
It is tough one, so we decided to make it separately from CM addon paradigm at this point.
I will tell, if we will get some nice results)
Also known issue - view layers are not preserved when copying a scene.
Maybe, problem of copying view layers influences a bit deeper...
Cool!
Meanwhile, we are trying to hack cloning view layer concept, to define possibility conditions and obtain some kind of a realization in research way.
It is tough one, so we decided to make it separately from CM addon paradigm at this point.
I will tell, if we will get some nice results)
Also known issue - view layers are not preserved when copying a scene.
Maybe, problem of copying view layers influences a bit deeper...
Update:
Official addition of nested isolation.
Integrated fixes from the 2.82 release branch.
Fixed bug from previous 1.9 version with setting RTO isolation status.
Update:
Official addition of nested isolation.
Integrated fixes from the 2.82 release branch.
Fixed bug from previous 1.9 version with setting RTO isolation status.
This will be going into official blender 2.83+:
[Collection_Manager_v1_9_2.zip](https://archive.blender.org/developer/F8300716/Collection_Manager_v1_9_2.zip)
Hard to say, we are also trying to get Blender 2.8x selection finally fixed.
It is completely offtopic, but here is a solution we've found .
It can be interesting since it influence almost any kind of mesh editing.
> This will be going into official blender 2.83+:
Hooray!
That's awesome news)
> Sounds like you'll have an interesting time ;)
Hard to say, we are also trying to get Blender 2.8x selection finally fixed.
It is completely offtopic, but here is a [solution we've found ](https://www.youtube.com/watch?v=MVCpRuOlqVo&feature=youtu.be).
It can be interesting since it influence almost any kind of mesh editing.
Continuing our view layer cloning research as well as part of a MASC addon
https://youtu.be/REfhZMdqV8k
Remember that we have v1.8.9 in 2.82 already. It's just the new development that's now all going into 2.83+. But yes, I think what we end up with for 2.83 will be a real powerhouse. :)
It is completely offtopic, but here is a solution we've found.
It can be interesting since it influence almost any kind of mesh editing.
Yes, that is interesting. I'll have to remember that. And it occurs to me that Ctrl-Right Mouse (extrude to cursor) would benefit from being a press event as well.
Continuing our view layer cloning research as well as part of a MASC addon
Looking good.
> Hooray!
> That's awesome news)
Remember that we have v1.8.9 in 2.82 already. It's just the new development that's now all going into 2.83+. But yes, I think what we end up with for 2.83 will be a real powerhouse. :)
> It is completely offtopic, but here is a solution we've found.
> It can be interesting since it influence almost any kind of mesh editing.
Yes, that is interesting. I'll have to remember that. And it occurs to me that Ctrl-Right Mouse (extrude to cursor) would benefit from being a press event as well.
> Continuing our view layer cloning research as well as part of a MASC addon
Looking good.
And it occurs to me that Ctrl-Right Mouse (extrude to cursor) would benefit from being a press event as well.
Exactly! But unfortunately, it breaks lasso selection.
I using it with press event, and thinking about proper proposal. Maybe, delay threshold to lasso.
Looking good
Thanks. Since QCD system is almost completely destroyed, and there is no more ability to control slots combinations with perception speed providden by the subitizing ability, people are trying to retrieve combinational control even with such unobvious way.
It is pretty much weak concept, in comparison with a proper QCD system, since you cannot control what is actually hidden in view layer (by obtaining combination information directly, without scrolling all that lists in outliner), and useful view layers number is very limited (more than 5-7 is hard to use, remember and control), but such an implementation at least raises the issue of copying view layers to explore.
> And it occurs to me that Ctrl-Right Mouse (extrude to cursor) would benefit from being a press event as well.
Exactly! But unfortunately, it breaks lasso selection.
I using it with press event, and thinking about proper proposal. Maybe, delay threshold to lasso.
> Looking good
Thanks. Since QCD system is almost completely destroyed, and there is no more ability to control slots combinations with perception speed providden by the subitizing ability, people are trying to retrieve combinational control even with such unobvious way.
It is pretty much weak concept, in comparison with a proper QCD system, since you cannot control what is actually hidden in view layer (by obtaining combination information directly, without scrolling all that lists in outliner), and useful view layers number is very limited (more than 5-7 is hard to use, remember and control), but such an implementation at least raises the issue of copying view layers to explore.
Exactly! But unfortunately, it breaks lasso selection.
I using it with press event, and thinking about proper proposal. Maybe, delay treshold to lasso.
Ah, I see. Try setting it to a release event then. That should work. I actually don't know why the click event is causing trouble; I suspect it's a bug.
Since QCD system is almost completely destroyed,
I'm actually working on a test implementation of a QCD system for the Collection Manager in a separate branch. Thank's for reminding me, I'd kinda forgotten about it with everything else going on recently.
>Exactly! But unfortunately, it breaks lasso selection.
> I using it with press event, and thinking about proper proposal. Maybe, delay treshold to lasso.
Ah, I see. Try setting it to a release event then. That should work. I actually don't know why the click event is causing trouble; I suspect it's a bug.
> Since QCD system is almost completely destroyed,
I'm actually working on a test implementation of a QCD system for the Collection Manager in a separate branch. Thank's for reminding me, I'd kinda forgotten about it with everything else going on recently.
@1D_Inc Here is a test implementation for QCD to try out. It has hotkeys and allows you to manage QCD Layers to some degree from the QCD tab in the collection manager. This is just a basic proof of concept for now.
Hotkeys:
123etc./Alt+123etc. -- View QCD Layer (toggles between layers)
@1D_Inc Here is a test implementation for QCD to try out. It has hotkeys and allows you to manage QCD Layers to some degree from the QCD tab in the collection manager. This is just a basic proof of concept for now.
Hotkeys:
* **123** *etc.* **/** **Alt+123** *etc.* -- View QCD Layer (toggles between layers)
* **Ctrl+123** *etc.* **/** **Ctrl+Alt+123** *etc.* -- View QCD Layer (enables/disables layers)
* **Shift+123** *etc.* **/** **Shift+Alt+123** *etc.* -- Move Object to QCD Layer
[Collection_Manager_QCD_test_v1_0_0.zip](https://archive.blender.org/developer/F8303637/Collection_Manager_QCD_test_v1_0_0.zip)
Maya users animating visibility just to get combinations of 2 objects. It tooks 3 frames. For 5 objects it will be U(5) = 2^5-1 = 31 (combinations or frames or view layers)
Pablo Vasquez made a concept but it is completely out of any scope.
AutoCAD has got laywalk command that works more like collections list.
Blender 2.7 has got 20 slots + hiding + isolation, so it is U(22) = 2^22-1 = 4194303 hiding information combinations fully controllable at perception speed in blender scene.
I didn't found more examples of successfull implementation of such a system in entire industry.
A QCD system research? I think it will be definitely just as epic as tough one. I am glad to hear even that it is going)
Wow.
- Maya users [animating visibility ](https://youtu.be/ZpAebzNlHw4?t=137) just to get combinations of 2 objects. It tooks 3 frames. For 5 objects it will be U(5) = 2^5-1 = 31 (combinations or frames or view layers)
- Pablo Vasquez made a [concept ](https://github.com/venomgfx/addonitos/blob/master/collection_quickies.py) but it is completely out of any scope.
- AutoCAD has got [laywalk command ](https://youtu.be/wYXQXDpdLQM) that works more like collections list.
- Blender 2.7 has got 20 slots + hiding + isolation, so it is U(22) = 2^22-1 = 4194303 hiding information combinations fully controllable at perception speed in blender scene.
I didn't found more examples of successfull implementation of such a system in entire industry.
A QCD system research? I think it will be definitely just as epic as tough one. I am glad to hear even that it is going)
Blender 2.8 already have a QCD system (when pressing number corresponding collection is displayed)
Everything that has a limit of 20 - refers to the QCD system (hotkeys, autonumeration, widgets, etc)
There are ruins, but they works, and it has got some huge inconsistences.
For example
Sending number differs from invoke number - M5 issue. When you selecting an object with pressing M5 in default collection management gui, it sends it to a list number. It cannot be found by pressing number 5 to invoke slot 5 - object has gone to another collection and is lost.
Numeric input operates on VV instead EC, that makes slots manipulations hierarchy-dependent, which is messy. You cannot strightly isolate a slot without viewing all its nesting.
There is no proper slots GUI to figure out combination, and collection-based workflow breaks ability to work in fullscreen and completely concentrate on a model.
Collections are assigned to slots with autonumeration, and there were attempts to make it more complex.
Those things cannot be fixed with addons, it is a core workflow design problem, and it is completely separate task, considering dynamic context management.
All I can propose at the moment is to try to fix M5 issue, to make objects sending to a collection that is invoked by pressing correspondig number in CM.
That will help to solve that issue, that just ruins our workflow.
Test example - open a new scene, create a cube and 6 simple flatlist collections.
Disable CM addon.
Select cube, press M5 - cube has gone
Press 5 - collection 5 appears, there is no cube
Press 4 - collection 4 appears, here is a cube. It has gone to a wrong collection.
Correct behaviour should be - press M5 to send a cube, press 5 to view collection to see a cube.
That's M5 issue.
You currently made a separate"layers", that can contain objects, but it will be hard to control them, since such "layers" is a completely separate paradigm.
QCD is better to build on a collection engine - it already works like this (some collections has got predictable numbers, assigned by autonumeration, you can access them with those numbers, and it is ok), such a system is just needed to be polished, clarified, specified, and get proper GUI to shine in glory.
In short - you've tried to build it on much deeper level than it actually needs)
Blender 2.8 already have a QCD system (when pressing number corresponding collection is displayed)
Everything that has a limit of 20 - refers to the QCD system (hotkeys, autonumeration, widgets, etc)
There are ruins, but they works, and it has got some huge inconsistences.
For example
- Sending number differs from invoke number - M5 issue. When you selecting an object with pressing M5 in default collection management gui, it sends it to a list number. It cannot be found by pressing number 5 to invoke slot 5 - object has gone to another collection and is lost.
- Numeric input operates on VV instead EC, that makes slots manipulations hierarchy-dependent, which is messy. You cannot strightly isolate a slot without viewing all its nesting.
- There is no proper slots GUI to figure out combination, and collection-based workflow breaks ability to work in fullscreen and completely concentrate on a model.
- Collections are assigned to slots with autonumeration, and there were attempts to make it more complex.
Those things cannot be fixed with addons, it is a core workflow design problem, and it is completely separate task, considering dynamic context management.
All I can propose at the moment is to try to fix M5 issue, to make objects sending to a collection that is invoked by pressing correspondig number in CM.
That will help to solve that issue, that just ruins our workflow.
Test example - open a new scene, create a cube and 6 simple flatlist collections.
Disable CM addon.
Select cube, press M5 - cube has gone
Press 5 - collection 5 appears, there is no cube
Press 4 - collection 4 appears, here is a cube. It has gone to a wrong collection.
Correct behaviour should be - press M5 to send a cube, press 5 to view collection to see a cube.
That's M5 issue.
You currently made a separate"layers", that can contain objects, but it will be hard to control them, since such "layers" is a completely separate paradigm.
QCD is better to build on a collection engine - it already works like this (some collections has got predictable numbers, assigned by autonumeration, you can access them with those numbers, and it is ok), such a system is just needed to be polished, clarified, specified, and get proper GUI to shine in glory.
In short - you've tried to build it on much deeper level than it actually needs)
It is not a problem to build a proper QCD system in current Blender 2.8 realization - we already have some significant part of it that works.
It is a problem to take a few simple right steps to make it work properly, so it is more workflow design issue than, actually, development problem.
Just like clunky LMB selection issue that can be fixed with couple of lines, but breaks any kind of organic hardsufrace modeling, and lasts a year.
It is not a problem to build a proper QCD system in current Blender 2.8 realization - we already have some significant part of it that works.
It is a problem to take a few simple right steps to make it work properly, so it is more workflow design issue than, actually, development problem.
Just like clunky LMB selection issue that can be fixed with couple of lines, but breaks any kind of organic hardsufrace modeling, and lasts a year.
A QCD system research? I think it will be definitely just as epic as tough one. I am glad to hear even that it is going)
Yes, I'm looking forward to it.
Sending number differs from invoke number - M5 issue. When you selecting an object with pressing M5 in default collection management gui, it sends it to a list number. It cannot be found by pressing number 5 to invoke slot 5 - object has gone to another collection and is lost.
Numeric input operates on VV instead EC, that makes slots manipulations hierarchy-dependent, which is messy. You cannot strightly isolate a slot without viewing all its nesting.
There is no proper slots GUI to figure out combination, and collection-based workflow breaks ability to work in fullscreen and completely concentrate on a model.
Collections are assigned to slots with autonumeration, and there were attempts to make it more complex.
Those things cannot be fixed with addons
I think these can be fixed fairly easily with an addon, actually.
You currently made a separate"layers", that can contain objects, but it will be hard to control them, since such "layers" is a completely separate paradigm.
QCD is better to build on a collection engine
I'll try a second approach more closely built off of collections.
In short - you've tried to build it on much deeper level than it actually needs)
Well my first approach allows for a lot of flexibility, so maybe it's more than needed, but it might prove useful. We can compare once I've built the second.
Did you know that SS, DV and RR are, actualy, not stored in view layer?
Yes. That's why I've been a bit hesitant with cloning and it's related to my bug report: blender/blender#72084
> A QCD system research? I think it will be definitely just as epic as tough one. I am glad to hear even that it is going)
Yes, I'm looking forward to it.
> * Sending number differs from invoke number - M5 issue. When you selecting an object with pressing M5 in default collection management gui, it sends it to a list number. It cannot be found by pressing number 5 to invoke slot 5 - object has gone to another collection and is lost.
> * Numeric input operates on VV instead EC, that makes slots manipulations hierarchy-dependent, which is messy. You cannot strightly isolate a slot without viewing all its nesting.
> * There is no proper slots GUI to figure out combination, and collection-based workflow breaks ability to work in fullscreen and completely concentrate on a model.
> * Collections are assigned to slots with autonumeration, and there were attempts to make it more complex.
> Those things cannot be fixed with addons
I think these can be fixed fairly easily with an addon, actually.
> You currently made a separate"layers", that can contain objects, but it will be hard to control them, since such "layers" is a completely separate paradigm.
> QCD is better to build on a collection engine
I'll try a second approach more closely built off of collections.
> In short - you've tried to build it on much deeper level than it actually needs)
Well my first approach allows for a lot of flexibility, so maybe it's more than needed, but it might prove useful. We can compare once I've built the second.
> Did you know that SS, DV and RR are, actualy, not stored in view layer?
Yes. That's why I've been a bit hesitant with cloning and it's related to my bug report: blender/blender#72084
Look in the top right corner of the 3D View for the new ui. See tooltips for instructions. It's based off of that link to collection_quickies you mentioned earlier, so thank's for that :)
New version of first QCD test:
[Collection_Manager_QCD_test_v1_1_0.zip](https://archive.blender.org/developer/F8304309/Collection_Manager_QCD_test_v1_1_0.zip)
Look in the top right corner of the 3D View for the new ui. See tooltips for instructions. It's based off of that link to collection_quickies you mentioned earlier, so thank's for that :)
I've tried it)
Well, I am not sure that there should be a dedicated QCD mode - default behavior is nice.
Let me explain why.
Almost every kind of work in CG contains or even consists from converting a dynamic context (ideas, concepts, sketches, references, versions and other temporal data) to a static context (final models, scenes or products):
So, basically, every production process can be expressed using this scheme:
QCD as a system is needed for very a special task - complex multirefrenced modeling, and Collections management is needed for complex scene setups.
And, as it is shown on a sheme, this is completely different steps of a production.
When you modeling a complex asset you don't care about scene setup to get slot access speed, and when you assembling final scene, you don't care about slot access speed to get scene setup.
So those production steps are made in different files.
Complex modeling requires a lot of reference trash around to navigate between them, such as pictures, photoscans, drawings, LODs, variations, model parts, retopology objects, that should never get the final scene.
This way, making a separate QCD mode makes no sense, it just have nothing to presevre, as far as scene is prerared exclusevly for such kind of a modeling.
From other side, complex scene sometimes needs a cleanups, so QCD there is used for qick sending objects to a specified prepared collection, that will be placed somewhere in complex scene setup later.
Like sorting content or filtering it out. This way, dedicated QCD mode is harmful for that purpose.
So I would like to propose to split QCD and CM addons, because they are needed for different steps of production, and have completely different requirements to a realization.
I believe, the best way of making proper QCD system is focusing on default QCD abilities, providden by default numeric input and autonumeration - we were fighting to preserve its best realization a lot ,
because switching modes is pretty much distracting, and it will be hard to design a invoke keymap behavior better than we has got.
The only thing I would like to propose for Collection Manager is to try to fix M5 issue, to provide ability to send an object to a proper collection.
So do you have an access to autonumeration result in API?
Can you obtain a name of a collection, that is isolated when pressing number 5, for example?
I've tried it)
Well, I am not sure that there should be a dedicated QCD mode - default behavior is nice.
Let me explain why.
Almost every kind of work in CG contains or even consists from converting a dynamic context (ideas, concepts, sketches, references, versions and other temporal data) to a static context (final models, scenes or products):
So, basically, every production process can be expressed using this scheme:
![Production process.png](https://archive.blender.org/developer/F8304587/Production_process.png)
QCD as a system is needed for very a special task - complex multirefrenced modeling, and Collections management is needed for complex scene setups.
And, as it is shown on a sheme, this is completely different steps of a production.
When you modeling a complex asset you don't care about scene setup to get slot access speed, and when you assembling final scene, you don't care about slot access speed to get scene setup.
So those production steps are made in different files.
Complex modeling requires a lot of reference trash around to navigate between them, such as pictures, photoscans, drawings, LODs, variations, model parts, retopology objects, that should never get the final scene.
This way, making a separate QCD mode makes no sense, it just have nothing to presevre, as far as scene is prerared exclusevly for such kind of a modeling.
From other side, complex scene sometimes needs a cleanups, so QCD there is used for qick sending objects to a specified prepared collection, that will be placed somewhere in complex scene setup later.
Like sorting content or filtering it out. This way, dedicated QCD mode is harmful for that purpose.
So I would like to propose to split QCD and CM addons, because they are needed for different steps of production, and have completely different requirements to a realization.
I believe, the best way of making proper QCD system is focusing on default QCD abilities, providden by default numeric input and autonumeration - we were fighting [to preserve its best realization a lot ](https://developer.blender.org/T61492#766205),
because switching modes is pretty much distracting, and it will be hard to design a invoke keymap behavior better than we has got.
The only thing I would like to propose for Collection Manager is to try to fix M5 issue, to provide ability to send an object to a proper collection.
So do you have an access to autonumeration result in API?
Can you obtain a name of a collection, that is isolated when pressing number 5, for example?
GUI is nice by the way, its like meetin old good friend that helped a lot)
But Alt keys are swapped. It is needed to be fixed for consistency - alt+3 should be under 3, alt+8 should be under 8.
It is needed for excluding counting them from a workflow.
GUI is nice by the way, its like meetin old good friend that helped a lot)
But Alt keys are swapped. It is needed to be fixed for consistency - alt+3 should be under 3, alt+8 should be under 8.
It is needed for excluding counting them from a workflow.
When you modeling a complex asset you don't care about scene setup to get slot access speed, and when you assembling final scene, you don't care about slot access speed to get scene setup.
So those production steps are made in different files.
I've only done small scenes, but I have often just done everything in one. So I think we should try for something that allows you to work with whatever level of detail is needed at the time.
So I would like to propose to split QCD and CM addons, because they are needed for different steps of production, and have completely different requirements to a realization.
For now it's of more benefit to keep them together. If, when we decide on the final implementation, it makes sense to separate them we can do it then.
So do you have an access to autonumeration result in API?
I don't think so. But I can probably calculate the correct numeration myself. I'm actually not really a fan of autonumeration.
Can you obtain a name of a collection, that is isolated when pressing number 5, for example?
Potentially. I'd need more information on what you're hoping to do.
But Alt keys are swapped. It is needed to be fixed for consistency - alt+3 should be under 3, alt+8 should be under 8.
Sorry, I'm not sure what you mean here.
Overall you've made some good points, I'm not sure I agree with all of them, but this is still just the beginning of development. Let me do my second implementation and then we'll hopefully have a better idea how to go forward.
And I'm glad you like the GUI :)
> When you modeling a complex asset you don't care about scene setup to get slot access speed, and when you assembling final scene, you don't care about slot access speed to get scene setup.
> So those production steps are made in different files.
I've only done small scenes, but I have often just done everything in one. So I think we should try for something that allows you to work with whatever level of detail is needed at the time.
> So I would like to propose to split QCD and CM addons, because they are needed for different steps of production, and have completely different requirements to a realization.
For now it's of more benefit to keep them together. If, when we decide on the final implementation, it makes sense to separate them we can do it then.
> So do you have an access to autonumeration result in API?
I don't think so. But I can probably calculate the correct numeration myself. I'm actually not really a fan of autonumeration.
> Can you obtain a name of a collection, that is isolated when pressing number 5, for example?
Potentially. I'd need more information on what you're hoping to do.
> But Alt keys are swapped. It is needed to be fixed for consistency - alt+3 should be under 3, alt+8 should be under 8.
Sorry, I'm not sure what you mean here.
Overall you've made some good points, I'm not sure I agree with all of them, but this is still just the beginning of development. Let me do my second implementation and then we'll hopefully have a better idea how to go forward.
And I'm glad you like the GUI :)
Well, I currently thinking about QCD abilities, trying to design proper workflow.
Some of my thoughts at the moment:
I like we are trying to make QCD system in a separate CM research. It is definitely a sandbox task that will require a lot of design.
Special mode is awkward, and breaks shortcuts.
For example, you can invoke some slot with N(number) andAlt+N
but can't add slots to visible with Shift+N and Alt+Shift+N to quickly form or modify a Combination of slots, that is our main goal.
We are making QCD to setup and control combinations.
So, I would like to propose just make a QCD Collection with 20 numeric collections in it without any kind of special mode.
It will be clean as concept, slots will be easy to access both from Nums (because of fixed addresses) and Outliner, and accesible in Blender even if addon is not installed.
Special button will create such Collection.
About QCD structure. I would like to propose the default one, because it is very profound.
Let me explain a beautiful logic behind that.
First five are hot slots - they are commonly used, have smallest integers and the best key locations.
First Alt+five slots are cold slots - it’s nice to store here some data corresponding to hot slots.
Hot slot is above cold, so it is a pair, and it is fluent to set or invoke them.
For example, if hot slot 2 contains mesh, cold slot /2 (alt+2) contains it's retopo or base mesh, or reference, or part that may be needed - some data corresponding to the hot slot.
This way, QCD system consists from 10 pairs of 20 slots.
Other 10 slots (6-0, /6 -/0) are reserved slots.
They also have pairs, so slot 8 is above slot /8, and it is fluent, but they are used mostly for keeping everything that is not that important, due to less accessible keys.
So you can move pair from hot+cold (for example 2/2) to reserved (for example, 9/9) without losing the logical connection between them, if it is not urgently needed anymore.
As a result, pairs are extremely easy to set with numbers and detect visually.
This is the way it works)
Well, I currently thinking about QCD abilities, trying to design proper workflow.
Some of my thoughts at the moment:
1. I like we are trying to make QCD system in a separate CM research. It is definitely a sandbox task that will require a lot of design.
2. Special mode is awkward, and breaks shortcuts.
For example, you can invoke some slot with **N**(number) and**Alt+N**
but can't add slots to visible with **Shift+N** and **Alt+Shift+N** to quickly form or modify a **Combination** of slots, that is our main goal.
We are making QCD to setup and control combinations.
![изображение.png](https://archive.blender.org/developer/F8307313/изображение.png)
So, I would like to propose just make a QCD Collection with 20 numeric collections in it without any kind of special mode.
It will be clean as concept, slots will be easy to access both from Nums (because of fixed addresses) and Outliner, and accesible in Blender even if addon is not installed.
Special button will create such Collection.
![изображение.png](https://archive.blender.org/developer/F8307321/изображение.png)
3. About QCD structure. I would like to propose the default one, because it is very profound.
![изображение.png](https://archive.blender.org/developer/F8307329/изображение.png)
Let me explain a beautiful logic behind that.
First five are **hot** slots - they are commonly used, have smallest integers and the best key locations.
First Alt+five slots are **cold** slots - it’s nice to store here some data corresponding to **hot** slots.
Hot slot is above cold, so it is a **pair**, and it is fluent to set or invoke them.
For example, if hot slot 2 contains mesh, cold slot /2 (alt+2) contains it's retopo or base mesh, or reference, or part that may be needed - some data corresponding to the hot slot.
This way, QCD system consists from 10 pairs of 20 slots.
Other 10 slots (6-0, /6 -/0) are **reserved** slots.
They also have pairs, so slot 8 is above slot /8, and it is fluent, but they are used mostly for keeping everything that is not that important, due to less accessible keys.
So you can move pair from hot+cold (for example 2/2) to reserved (for example, 9/9) without losing the logical connection between them, if it is not urgently needed anymore.
![изображение.png](https://archive.blender.org/developer/F8307353/изображение.png)
As a result, pairs are extremely easy to set with numbers and detect visually.
This is the way it works)
But Alt keys are swapped. It is needed to be fixed for consistency - alt+3 should be under 3, alt+8 should be under 8.
3. About QCD structure. I would like to propose the default one, because it is very profound.
Ah, I see now. Thanks. I've fixed this for both implementations now. (And yes it is beautiful)
So, I would like to propose just make a QCD Collection with 20 numeric collections in it without any kind of special mode.
I'm not going to do this right now because it's functionality is very close to the first implementation.
Here is implementation #2 (which I think I prefer). I believe it solves most of your problems, except maybe auto-numeration could use some work. :)
Features:
a QCD system based on collections.
N(number)/Alt-N - isolate QCD Layer.
Shift-N/Shift-Alt-N - toggle QCD Layer on/off.
M-N/Alt-M-N - Add/Remove object from QCD Layer. (allows you to keep M pressed down and type multiple numbers with or without alt to move to any number of collections quickly)
M - still calls the collection manager.
In the collection manager there is a QCD Layer field for each collection that allows you to specify which QCD Layer that collection should represent (initially set by auto-numeration, allows manual setting).
Auto-numeration sets QCD Layers in what I believe is a combination B2 + A system (doesn't match blender default). Auto-numeration will not re-use numbers (so if you have one top level collection, add 5 children, then add another top level collection the second top level collection will have a blank QCD Layer because #2 has already been used).
You can discard your changes and redo auto-numeration with the "Re-numerate QCD Layers" button (this feels a little clumsy to me, but I can't think of anything better to allow auto-numeration + user defined. Maybe typing in -1 to a QCD field instead of the button).
You can filter only collections that are QCD Layers with the new "Q" filter toggle on the filter row.
> But Alt keys are swapped. It is needed to be fixed for consistency - alt+3 should be under 3, alt+8 should be under 8.
> 3. About QCD structure. I would like to propose the default one, because it is very profound.
Ah, I see now. Thanks. I've fixed this for both implementations now. (And yes it is beautiful)
> So, I would like to propose just make a QCD Collection with 20 numeric collections in it without any kind of special mode.
I'm not going to do this right now because it's functionality is very close to the first implementation.
Here is implementation #2 (which I think I prefer). I believe it solves most of your problems, except maybe auto-numeration could use some work. :)
Features:
* a QCD system based on collections.
* **N(number)/Alt-N** - isolate QCD Layer.
* **Shift-N/Shift-Alt-N** - toggle QCD Layer on/off.
* **M-N/Alt-M-N** - Add/Remove object from QCD Layer. (allows you to keep M pressed down and type multiple numbers with or without alt to move to any number of collections quickly)
* **M** - still calls the collection manager.
* In the collection manager there is a QCD Layer field for each collection that allows you to specify which QCD Layer that collection should represent (initially set by auto-numeration, allows manual setting).
* Auto-numeration sets QCD Layers in what I believe is a combination [B2 + A system](https://devtalk.blender.org/t/layers-maniphest/6578/71) (doesn't match blender default). Auto-numeration will not re-use numbers (so if you have one top level collection, add 5 children, then add another top level collection the second top level collection will have a blank QCD Layer because #2 has already been used).
* You can discard your changes and redo auto-numeration with the "Re-numerate QCD Layers" button (this feels a little clumsy to me, but I can't think of anything better to allow auto-numeration + user defined. Maybe typing in -1 to a QCD field instead of the button).
* You can filter only collections that are QCD Layers with the new "Q" filter toggle on the filter row.
[Collection_Manager_QCD_test_v2_0_0.zip](https://archive.blender.org/developer/F8312944/Collection_Manager_QCD_test_v2_0_0.zip)
Here is implementation #2 (which I think I prefer)
Wow! That is, actually, a very close solution!!
I need to use it for some time, but I already love how much direct it is.
Yes, since we are using EC, which can be stored in View Layer, we can use QCD system even in complex scenes, just creating empty VL for QCD session, keeping scene setup untouched, if it is needed at some point)
Awww, that feeling of combinational control... like feeling power ))
I need to dive in it, but the only thing I can propose already is about holding M.
What about to left M completely for collection manager, and use V for assigninig QCD slots, with separate domino GUI and keys reading?
It looks unoccupied and innocent in object mode, since vertex paint has gone from it.
CM and QCD systems are both content management systems, but they are semanically separated, as far as they follows different goals. I think that semantic difference can be also realized as hotkey difference, because both systems are used for different ways of content management.
> Here is implementation #2 (which I think I prefer)
Wow! That is, actually, a very close solution!!
I need to use it for some time, but I already love how much direct it is.
Yes, since we are using EC, which can be stored in View Layer, we can use QCD system even in complex scenes, just creating empty VL for QCD session, keeping scene setup untouched, if it is needed at some point)
Awww, that feeling of combinational control... like feeling power ))
I need to dive in it, but the only thing I can propose already is about holding M.
What about to left M completely for collection manager, and use V for assigninig QCD slots, with separate domino GUI and keys reading?
It looks unoccupied and innocent in object mode, since vertex paint has gone from it.
CM and QCD systems are both content management systems, but they are semanically separated, as far as they follows different goals. I think that semantic difference can be also realized as hotkey difference, because both systems are used for different *ways* of content management.
Wow! That is, actually, a very close solution!!
I need to use it for some time, but I already love how much direct it is.
😀
What about to left M completely for collection manager, and use V for assigning QCD slots, with separate domino GUI and keys reading?
Switching hotkeys is easy. I can separate it out to two different ones. Having it all on M maybe has little more meaning as a hold over from 2.7 and it's one less key to remember, but I'm not set on it. And I'm not exactly sure what you mean by domino GUI.
> Wow! That is, actually, a very close solution!!
> I need to use it for some time, but I already love how much direct it is.
😀
> What about to left M completely for collection manager, and use V for assigning QCD slots, with separate domino GUI and keys reading?
Switching hotkeys is easy. I can separate it out to two different ones. Having it all on M maybe has little more meaning as a hold over from 2.7 and it's one less key to remember, but I'm not set on it. And I'm not exactly sure what you mean by domino GUI.
Aw, domino GUI is a QCD GUI. It was called domino, because it also using subitizing ability to percept numbers.
When we are using CM we assigning collections with boxes
Via pressing V we can bring a separate window with QCD GUI to assign slots to a selection.
Because it is a bit... complex to set, for example, 2 3 /5 slots to a selection via holding M and pressing 2 3 alt+5 buttons.
This is definitely a two-handed type of operation, I would like to propose to avoid that.
Aw, domino GUI is a QCD GUI. It was called domino, because it also using subitizing ability to percept numbers.
When we are using CM we assigning collections with boxes
![изображение.png](https://archive.blender.org/developer/F8313170/изображение.png)
Via pressing V we can bring a separate window with QCD GUI to assign slots to a selection.
Because it is a bit... complex to set, for example, 2 3 /5 slots to a selection via holding M and pressing 2 3 alt+5 buttons.
This is definitely a two-handed type of operation, I would like to propose to avoid that.
![изображение.png](https://archive.blender.org/developer/F8313181/изображение.png)
ok, that's clearer. But why not just Shift-Click on the QCD GUI in the 3D View, that will move objects, rather than bringing up a new window? And I know Shift-Click is probably a bad hotkey for that, we can change it later.
ok, that's clearer. But why not just Shift-Click on the QCD GUI in the 3D View, that will move objects, rather than bringing up a new window? And I know Shift-Click is probably a bad hotkey for that, we can change it later.
Well, here we need to build an actions map.
I will make it to show all possible cases of interactions with a system (assigning slots, invoking slots), and we will place it to a relevance tree (because speed of access is important for QCD systems), to clearly see what we can get mathematically.
That will show us if we can do such a thing without loss.
Well, here we need to build an actions map.
I will make it to show all possible cases of interactions with a system (assigning slots, invoking slots), and we will place it to a relevance tree (because speed of access is important for QCD systems), to clearly see what we can get mathematically.
That will show us if we can do such a thing without loss.
Well, since QCD systems belongs to quick access systems, their action maps are pretty much simple. That's why we love it.
We will monitor the integrity of access to slots using the mouse and keyboard, using an example of cold Alt slots, and this way we will satisfy hot slots as well, because they are just simpler.
There are two groups of actions - Vew and Set View - We are starting from simplest one - View slots in order to get familiar with its content. It is simplest isolation action. So, this way we are figuring combination of slots we want to obtain, looking throug them. Add to View - Then we add slots to the view to get the combination that we figured out - this way we are forming desired combination to work with it.
Same behavior can be extended to Set actions, this way we can send object to a slot, or send it to a combinations of slots (like if we need a single image reference for multiple objects in different slots)
I greyed out hotkeys for Set in case if we don't use V popup for this mode, and here is a problem.
We have to add Ctrl modifier in order to satisfy all cases, and, as you can see, we run out of possible hotkeys combinations, ending with monstrous Ctrl+Shift+Alt+N to send object to a multiple cold slots.
For sure, it is possible to make so, but it will be definitely not the best way of using it)
Also, as you can see, V popup menu mode allow Set mode just copy View mode corresponding shortcuts for the same types of actions, that is pretty much fluent as part of the quick access paradigm.
Now I feel myself like Numberphile =)
What do you think about such solution?
Well, since QCD systems belongs to quick access systems, their action maps are pretty much simple. That's why we love it.
We will monitor the integrity of access to slots using the mouse and keyboard, using an example of cold Alt slots, and this way we will satisfy hot slots as well, because they are just simpler.
![QCD Action map.png](https://archive.blender.org/developer/F8314407/QCD_Action_map.png)
There are two groups of actions - **Vew** and **Set**
**View** - We are starting from simplest one - View slots in order to get familiar with its content. It is simplest isolation action. So, this way we are figuring combination of slots we want to obtain, looking throug them.
**Add to View** - Then we add slots to the view to get the combination that we figured out - this way we are forming desired combination to work with it.
Same behavior can be extended to Set actions, this way we can send object to a slot, or send it to a combinations of slots (like if we need a single image reference for multiple objects in different slots)
I greyed out hotkeys for Set in case if we don't use V popup for this mode, and here is a problem.
We have to add Ctrl modifier in order to satisfy all cases, and, as you can see, we run out of possible hotkeys combinations, ending with monstrous **Ctrl+Shift+Alt+N** to send object to a multiple cold slots.
For sure, it is possible to make so, but it will be definitely not the best way of using it)
Also, as you can see, V popup menu mode allow Set mode just copy View mode corresponding shortcuts for the same types of actions, that is pretty much fluent as part of the quick access paradigm.
Now I feel myself like Numberphile =)
What do you think about such solution?
Your action map does a good job showing the different ways of interaction. For the mouse shortcuts I'll agree that having a popup come up under the mouse would provide a slight improvement of speed. The number shortcuts, however, have a problem. I can see that doing it from M is a bad idea because it requires two hands (plus some keyboards may not correctly send all the key combinations. Mine doesn't send M-Alt-6 and M-Alt-7 correctly), and if we try to just use the regular modifier keys it becomes very hard to accommodate the move object operations (even Shift+Alt is somewhat difficult). So your option of V, Alt+3 (just like the widget in 2.7) makes a lot of sense, but now we come to the problem: the widget in 2.7 is custom and not built in python with a regular UI. I can have a regular widget pop up, but I can't think of any way to override the view shortcuts with move object shortcuts while the widget is up and return the shortcuts back to normal when it closes. One thing that might be possible is to draw it all with Blender's OpenGL, but that's outside my current skill set. Now, maybe someone else knows how to achieve this, so I'll ask around, but for the time being I think the best option is to forget the move object shortcuts and just use the mouse on the V popup.
Your action map does a good job showing the different ways of interaction. For the mouse shortcuts I'll agree that having a popup come up under the mouse would provide a slight improvement of speed. The number shortcuts, however, have a problem. I can see that doing it from M is a bad idea because it requires two hands (plus some keyboards may not correctly send all the key combinations. Mine doesn't send M-Alt-6 and M-Alt-7 correctly), and if we try to just use the regular modifier keys it becomes very hard to accommodate the move object operations (even Shift+Alt is somewhat difficult). So your option of V, Alt+3 (just like the widget in 2.7) makes a lot of sense, but now we come to the problem: the widget in 2.7 is custom and not built in python with a regular UI. I can have a regular widget pop up, but I can't think of any way to override the view shortcuts with move object shortcuts while the widget is up and return the shortcuts back to normal when it closes. One thing that might be possible is to draw it all with Blender's OpenGL, but that's outside my current skill set. Now, maybe someone else knows how to achieve this, so I'll ask around, but for the time being I think the best option is to forget the move object shortcuts and just use the mouse on the V popup.
New version that more closely matches your action map.
[Collection_Manager_QCD_test_v2_1_1.zip](https://archive.blender.org/developer/F8317086/Collection_Manager_QCD_test_v2_1_1.zip)
In #69577#863505, @Imaginer wrote:
Your action map does a good job showing the different ways of interaction.
Thank you. As an engineer, I love ways to see systems transparently.
So your option of V, Alt+3 (just like the widget in 2.7) makes a lot of sense, but now we come to the problem: the widget in 2.7 is custom and not built in python with a regular UI.
Yeah, this is exactly the problem I'm trying to fix.
There is not so much needed to obtain proper QCD system for multirefrenced modeling workflow, so I'm trying to overcome it directly.
You provided Crtl modifier hotkey for Set actions, and it is the best you can do, because it makes such system complete and useful.
So, you are a life saver!
A great job, thank you so much for this!!
p.s. I will test a solution for some time before showing it to other users that need it)
> In #69577#863505, @Imaginer wrote:
> Your action map does a good job showing the different ways of interaction.
Thank you. As an engineer, I love ways to see systems transparently.
> So your option of V, Alt+3 (just like the widget in 2.7) makes a lot of sense, but now we come to the problem: the widget in 2.7 is custom and not built in python with a regular UI.
Yeah, this is exactly the problem I'm trying to fix.
There is not so much needed to obtain proper QCD system for multirefrenced modeling workflow, so I'm trying to overcome it directly.
You provided Crtl modifier hotkey for Set actions, and it is the best you can do, because it makes such system complete and useful.
So, you are a life saver!
A great job, thank you so much for this!!
p.s. I will test a solution for some time before showing it to other users that need it)
p.s. I will test a solution for some time before showing it to other users that need it)
Good idea. Let me know if you find any bugs or think of any improvements.
You provided Crtl modifier hotkey for Set actions, and it is the best you can do, because it makes such system complete and useful.
So, you are a life saver!
A great job, thank you so much for this!!
Thanks! My pleasure! :)
And who knows in time I may find a way to recreate that widget and workflow. Regardless, now we have a reference implementation that we can point to and say: this is the general idea. And it's already a good QCD system for anyone who wants to use it.
A couple things I think potentially need further development are: auto-numeration (Does the system I chose work well for you, and should we stick with a button to re-numerate?) and move to (Should we allow objects to be moved again after they're moved to a non-visible layer). And one final thing I need to add is saving the QCD layers to blend files, but I'm working on that plus saving the other isolation/enable all histories (Do these need to be saved?).
Once we're happy with the above I think it's worth it to include the QCD system in the next official release (2.83).
Thoughts?
> p.s. I will test a solution for some time before showing it to other users that need it)
Good idea. Let me know if you find any bugs or think of any improvements.
> You provided Crtl modifier hotkey for Set actions, and it is the best you can do, because it makes such system complete and useful.
> So, you are a life saver!
> A great job, thank you so much for this!!
Thanks! My pleasure! :)
And who knows in time I may find a way to recreate that widget and workflow. Regardless, now we have a reference implementation that we can point to and say: this is the general idea. And it's already a good QCD system for anyone who wants to use it.
A couple things I think potentially need further development are: auto-numeration (Does the system I chose work well for you, and should we stick with a button to re-numerate?) and move to (Should we allow objects to be moved again after they're moved to a non-visible layer). And one final thing I need to add is saving the QCD layers to blend files, but I'm working on that plus saving the other isolation/enable all histories (Do these need to be saved?).
Once we're happy with the above I think it's worth it to include the QCD system in the next official release (2.83).
Thoughts?
Hi!
Sorry for delay, I am deadly busy with my animation project.
I think I've got an interesting solution - what if to add a button near widget that will swap widget mode from View to Set and back, with ability to assign V shortcut to it.
This way we will not need a separate menu with separate gui, we will be able to use existing one, but for clearly splitted modes.
For example, to send selection to /2 slot it will be needed to press V, Alt+2, V (to enter and exit Set mode respectively)
Also it will be possible to use widget with only Shift and LMB for both modes and any possible cases.
I would definitely like to give a chance and test such a solution.
Do you think this is possible?
Hi!
Sorry for delay, I am deadly busy with my animation project.
I think I've got an interesting solution - what if to add a button near widget that will swap widget mode from View to Set and back, with ability to assign V shortcut to it.
This way we will not need a separate menu with separate gui, we will be able to use existing one, but for clearly splitted modes.
For example, to send selection to /2 slot it will be needed to press V, Alt+2, V (to enter and exit Set mode respectively)
Also it will be possible to use widget with only Shift and LMB for both modes and any possible cases.
I would definitely like to give a chance and test such a solution.
Do you think this is possible?
Sorry for delay, I am deadly busy with my animation project.
No problem. I've been busy with stuff as well.
As to your solution, I think it's possible. I'll work on it.
I've been thinking more about the possibility of recreating the move widget from 2.7, and I think that it is possible with a modal operator and OpenGL. The main problem here is my unfamiliarity with OpenGL, but in time I think I can do it. It probably won't be done soon though, so I'll work on it slowly in the background.
> Sorry for delay, I am deadly busy with my animation project.
No problem. I've been busy with stuff as well.
As to your solution, I think it's possible. I'll work on it.
I've been thinking more about the possibility of recreating the move widget from 2.7, and I think that it is possible with a modal operator and OpenGL. The main problem here is my unfamiliarity with OpenGL, but in time I think I can do it. It probably won't be done soon though, so I'll work on it slowly in the background.
@1D_Inc Here is a test of your most recent suggestion/solution.
Enjoy!
[Collection_Manager_QCD_test_v3_0_0.zip](https://archive.blender.org/developer/F8342624/Collection_Manager_QCD_test_v3_0_0.zip)
Aw, that's so more fluent now!
Addiction will take some time, but the same short shortcuts in both modes succeeded)
Keeping testing, I think about visibility problems - for example, do we have to operate on EC if we are using enumerated list, or should we see a collection we send object to.
Sending to a single turned off slot feels a bit clunky, since we are loosing selection from sight of view.
I try to investigate if it is reasonable to keep the receiving slot disabled if it was (for single or multiple sending)
Can we make such test for research purposes - add slot to visible when we are sending objects to it?
Aw, that's so more fluent now!
Addiction will take some time, but the same short shortcuts in both modes succeeded)
Keeping testing, I think about visibility problems - for example, do we have to operate on EC if we are using enumerated list, or should we see a collection we send object to.
Sending to a single turned off slot feels a bit clunky, since we are loosing selection from sight of view.
I try to investigate if it is reasonable to keep the receiving slot disabled if it was (for single or multiple sending)
Can we make such test for research purposes - add slot to visible when we are sending objects to it?
Aw, that's so more fluent now!
Addiction will take some time, but the same short shortcuts in both modes succeeded)
Good!
Sending to a single turned off slot feels a bit clunky, since we are loosing selection from sight of view.
I've felt that as well, but I haven't known which direction to go with a solution or whether a solution to that is actually needed.
Can we make such test for research purposes - add slot to visible when we are sending objects to it?
Sure, that's easy, but I think it will quickly mess up your viewing state.
Another possibility would be to allow movement regardless of whether they can seen.
I'm about 90% sure this can be done, but I haven't tested it yet.
> Aw, that's so more fluent now!
> Addiction will take some time, but the same short shortcuts in both modes succeeded)
Good!
> Sending to a single turned off slot feels a bit clunky, since we are loosing selection from sight of view.
I've felt that as well, but I haven't known which direction to go with a solution or whether a solution to that is actually needed.
> Can we make such test for research purposes - add slot to visible when we are sending objects to it?
Sure, that's easy, but I think it will quickly mess up your viewing state.
Another possibility would be to allow movement regardless of whether they can seen.
I'm about 90% sure this can be done, but I haven't tested it yet.
Hi. We are currently trying to cover complex production needs. We are working on Quck Content Display system.
In #69577#873463, @Imaginer wrote:
Sure, that's easy, but I think it will quickly mess up your viewing state.
Yes it will.
But it is hard to say if it will be that harmful.
I think this problem occurs because its easy to loose an active object due to indication limits, so it is hard to say if selection has gone to correct slot if a few are already taken.
Maybe another button for additive sending next to mode switch to test a solution?
Also nice design with crosses on nonexisting slot, didn't thought that is possible)
> In #69577#873728, @CobraA wrote:
> cheers.
Hi. We are currently trying to cover complex production needs. We are working on Quck Content Display system.
> In #69577#873463, @Imaginer wrote:
> Sure, that's easy, but I think it will quickly mess up your viewing state.
Yes it will.
But it is hard to say if it will be that harmful.
I think this problem occurs because its easy to loose an active object due to indication limits, so it is hard to say if selection has gone to correct slot if a few are already taken.
Maybe another button for additive sending next to mode switch to test a solution?
Also nice design with crosses on nonexisting slot, didn't thought that is possible)
@CobraA
Something similar for Bone Layers has always been in the back of my mind and it's been requested before, so I'll probably end up doing something, but it may end up as a separate addon. I'm also not quite sure how it should look and work, so if you have any ideas let me know. Glad you like the addon! 🙂
Also nice design with crosses on nonexisting slot, didn't thought that is possible)
Thanks. I needed something to keep everything aligned properly, so I thought an X would work nicely, but it could be anything. 🙂
Maybe another button for additive sending next to mode switch to test a solution?
I'd prefer to keep buttons to a minimum, but I have got a new version that adds the view layer when you move the object for you to test.
I'm thinking from my limited use that it's not great, but it does allow you unlimited movement. I'll see if I can find a solution to let you move selected objects from non-visible collections.
@CobraA
Something similar for Bone Layers has always been in the back of my mind and it's been requested before, so I'll probably end up doing something, but it may end up as a separate addon. I'm also not quite sure how it should look and work, so if you have any ideas let me know. Glad you like the addon! 🙂
@1D_Inc
> Also nice design with crosses on nonexisting slot, didn't thought that is possible)
Thanks. I needed something to keep everything aligned properly, so I thought an X would work nicely, but it could be anything. 🙂
> Maybe another button for additive sending next to mode switch to test a solution?
I'd prefer to keep buttons to a minimum, but I have got a new version that adds the view layer when you move the object for you to test.
I'm thinking from my limited use that it's not great, but it does allow you unlimited movement. I'll see if I can find a solution to let you move selected objects from non-visible collections.
[Collection_Manager_QCD_test_v3_1_0.zip](https://archive.blender.org/developer/F8347025/Collection_Manager_QCD_test_v3_1_0.zip)
Thanks)
For sure, we will try to reach minimum ui elements, so such buttons are temporal, just for testing solutions without reinstalling addons versions back and forth)
Thanks)
For sure, we will try to reach minimum ui elements, so such buttons are temporal, just for testing solutions without reinstalling addons versions back and forth)
I've tested for some time. Suddenly, such behavior feels... smoother)
I need to test this some more time to understand why the slot display seems to be better.
I would like to propose to turn off a slot from where selection has gone (in which the number of objects was reduced after the Set operation),
this will make possible to find appropriable slot to a selection via several switches, if it is possible to reproduce.
Also, it seems, you removed Ctrl hotkey modifier for Set operations.
I don't think it is needed to be removed - it is pretty much clean alternative way to work with ui widget directly.
When objects are sent with mouse operations, slot is selected directly with mouse, so it is possible to afford Ctrl and Ctrl+Shift hotkeys modifiers in that case, to get ability to Set without entering special mode.
QCD mode button (with V key assigned) is handy for numeric input to indicate Set and View modes split to keep shortcuts the same for that type of input, and also get around the separate popup ui problem.
It is also possible to use this button for mouse input operations, but operations with Ctrl hotkey modifier can be faster in some cases.
I've tested for some time. Suddenly, such behavior feels... smoother)
I need to test this some more time to understand why the slot display seems to be better.
I would like to propose to turn off a slot from where selection has gone (in which the number of objects was reduced after the Set operation),
this will make possible to find appropriable slot to a selection via several switches, if it is possible to reproduce.
Also, it seems, you removed Ctrl hotkey modifier for Set operations.
I don't think it is needed to be removed - it is pretty much clean alternative way to work with ui widget directly.
When objects are sent with mouse operations, slot is selected directly with mouse, so it is possible to afford Ctrl and Ctrl+Shift hotkeys modifiers in that case, to get ability to Set without entering special mode.
QCD mode button (with V key assigned) is handy for numeric input to indicate Set and View modes split to keep shortcuts the same for that type of input, and also get around the separate popup ui problem.
It is also possible to use this button for mouse input operations, but operations with Ctrl hotkey modifier can be faster in some cases.
I would like to propose to turn off a slot from where selection has gone (in which the number of objects was reduced after the Set operation),
this will make possible to find appropriable slot to a selection via several switches, if it is possible to reproduce.
So, when objects are moved out of a layer and the layer has no objects in it we hide it? That could be done, I think.
Also, it seems, you removed Ctrl hotkey modifier for Set operations.
Yeah, I did it to unify it with the keyboard state and present a clear representation of the modes to the user, but I can easily add the Ctrl modifier back to the GUI.
The separate modes may not be required anyway. I've been doing some experimenting with OpenGL (turns out blender's python bindings of it are fairly simple) and I think I'll be able to recreate the functionality of the widget from 2.7
The main problem I'm seeing is the loss of selection when moving objects to hidden QCD layers. I'm hoping I can find a way to preserve them, but we'll just have to see.
There are also a couple bugs I found when I downloaded a couple of the new demo files blender released, so I'll be fixing those, but other than that the Collection Manager and QCD system worked really nicely with one of the scenes from Spring.
Speaking of test files, do you know of any good ones I could download so I can get a feel of how the Collection Manager/QCD will handles in real world scenarios?
Hopefully I'll have some good stuff for you to test soon.
> I would like to propose to turn off a slot from where selection has gone (in which the number of objects was reduced after the Set operation),
> this will make possible to find appropriable slot to a selection via several switches, if it is possible to reproduce.
So, when objects are moved out of a layer and the layer has no objects in it we hide it? That could be done, I think.
> Also, it seems, you removed Ctrl hotkey modifier for Set operations.
Yeah, I did it to unify it with the keyboard state and present a clear representation of the modes to the user, but I can easily add the Ctrl modifier back to the GUI.
The separate modes may not be required anyway. I've been doing some experimenting with OpenGL (turns out blender's python bindings of it are fairly simple) and I think I'll be able to recreate the functionality of the widget from 2.7
The main problem I'm seeing is the loss of selection when moving objects to hidden QCD layers. I'm hoping I can find a way to preserve them, but we'll just have to see.
There are also a couple bugs I found when I downloaded a couple of the new demo files blender released, so I'll be fixing those, but other than that the Collection Manager and QCD system worked really nicely with one of the scenes from Spring.
Speaking of test files, do you know of any good ones I could download so I can get a feel of how the Collection Manager/QCD will handles in real world scenarios?
Hopefully I'll have some good stuff for you to test soon.
In #69577#877998, @Imaginer wrote:
So, when objects are moved out of a layer and the layer has no objects in it we hide it? That could be done, I think.
I think, that it will be interisting to hide slot that will still contain objects but has got lesser objects after Set operation - that will mean that objects has gone from it.
Yeah, I did it to unify it with the keyboard state and present a clear representation of the modes to the user, but I can easily add the Ctrl modifier back to the GUI.
That would be nice)
It is a shortcut, that also don't take any space, so if to chose between have it or don't, it will be nice to have it)
The separate modes may not be required anyway. I've been doing some experimenting with OpenGL (turns out blender's python bindings of it are fairly simple) and I think I'll be able to recreate the functionality of the widget from 2.7
The main problem I'm seeing is the loss of selection when moving objects to hidden QCD layers. I'm hoping I can find a way to preserve them, but we'll just have to see.
Yes, losing active/selection is definitely the issue. That's why I thought about switching back from EC to VV operations, but VV is not stored in View layer, so we are trying to make EC behavior better providing unhiding/hiding slots on Set opertions.
I already feel how tricky recreating 2.7 functionality can be)
So I tried to ask devs to make some API improvements to make it easier, but with no luck.
There are also a couple bugs I found when I downloaded a couple of the new demo files blender released, so I'll be fixing those, but other than that the Collection Manager and QCD system worked really nicely with one of the scenes from Spring.
Speaking of test files, do you know of any good ones I could download so I can get a feel of how the Collection Manager/QCD will handles in real world scenarios?
Hopefully I'll have some good stuff for you to test soon.
Well, we are using 2.79 on most product-dependent tasks since January, to avoid workflow issues of 2.8X to ruin our production process, 2.8X is banned in our company.
The good news is that there is no rush, and we have enough time to evolve solutions, proper design and testing.
About QCD using scenarios - it is intended "for handling dynamic context", and this range of tasks indeed is pretty much abstract.
But a nice case example to feel how it works is multirefrenced modeling , that covers almost every critical need of using such a system.
This post contains GIF of using QCD in a real production multirefrenced modeling workflow.
So, to simulate this case you need to get some simultaneous references in one place (like photoes, drawings, photoscans, laser scans, retopology objects, basemeshes, etc)
and try to navigate between them and their combinations as fast as possible, trying to concentrate on a model, it's references, and differences between them in fullscreen because of details.
I am thinking about example scenes, because I can't share our working files because of NDA, and placing 5-7 random objects in one place just can be far away from self-explanatory.
It just heavily depends on workflow process, since it is a workflow issue =)
In fact, the QCD system is the answer to the question "how complex model can you build in your software without getting ripped"
> In #69577#877998, @Imaginer wrote:
> So, when objects are moved out of a layer and the layer has no objects in it we hide it? That could be done, I think.
I think, that it will be interisting to hide slot that will still contain objects but has got lesser objects after Set operation - that will mean that objects has gone from it.
> Yeah, I did it to unify it with the keyboard state and present a clear representation of the modes to the user, but I can easily add the Ctrl modifier back to the GUI.
That would be nice)
It is a shortcut, that also don't take any space, so if to chose between have it or don't, it will be nice to have it)
> The separate modes may not be required anyway. I've been doing some experimenting with OpenGL (turns out blender's python bindings of it are fairly simple) and I think I'll be able to recreate the functionality of the widget from 2.7
> The main problem I'm seeing is the loss of selection when moving objects to hidden QCD layers. I'm hoping I can find a way to preserve them, but we'll just have to see.
Yes, losing active/selection is definitely the issue. That's why I thought about switching back from EC to VV operations, but VV is not stored in View layer, so we are trying to make EC behavior better providing unhiding/hiding slots on Set opertions.
I already feel how tricky recreating 2.7 functionality can be)
So I tried to ask devs to make some API improvements to make it easier, but with no luck.
> There are also a couple bugs I found when I downloaded a couple of the new demo files blender released, so I'll be fixing those, but other than that the Collection Manager and QCD system worked really nicely with one of the scenes from Spring.
> Speaking of test files, do you know of any good ones I could download so I can get a feel of how the Collection Manager/QCD will handles in real world scenarios?
> Hopefully I'll have some good stuff for you to test soon.
Well, we are using 2.79 on most product-dependent tasks since January, to avoid workflow issues of 2.8X to ruin our production process, 2.8X is banned in our company.
The good news is that there is no rush, and we have enough time to evolve solutions, proper design and testing.
About QCD using scenarios - it is intended "for handling dynamic context", and this range of tasks indeed is pretty much abstract.
But a nice case example to feel how it works is [multirefrenced modeling ](http://www.technocrazed.com/discover-amazing-cross-section-view-of-22-everyday-objects-cut-in-half), that covers almost every critical need of using such a system.
This [post ](https://developer.blender.org/T61492#766205) contains GIF of using QCD in a real production multirefrenced modeling workflow.
So, to simulate this case you need to get some simultaneous references in one place (like photoes, drawings, photoscans, laser scans, retopology objects, basemeshes, etc)
and try to navigate between them and their combinations as fast as possible, trying to concentrate on a model, it's references, and differences between them in fullscreen because of details.
I am thinking about example scenes, because I can't share our working files because of NDA, and placing 5-7 random objects in one place just can be far away from self-explanatory.
It just heavily depends on workflow process, since it is a workflow issue =)
In fact, the QCD system is the answer to the question "how complex model can you build in your software without getting ripped"
Yes, losing active/selection is definitely the issue.
Good news, I've fixed it so this doesn't matter anymore. I can now move objects to multiple non-visible layers in sequence, just like 2.7x.
I think, that it will be interisting to hide slot that will still contain objects but has got lesser objects after Set operation - that will mean that objects has gone from it.
Interesting. I don't think this will be necessary anymore with the above solution, but we may want it as well.
The good news is that there is no rush, and we have enough time to evolve solutions, proper design and testing.
Excellent.
Well, we are using 2.79 on most product-dependent tasks since January, to avoid workflow issues of 2.8X to ruin our production process, 2.8X is banned in our company.
Hopefully collections and QCD will soon no longer be an obstacle anymore :)
I am thinking about example scenes, because I can't share our working files because of NDA
Yeah, I suspected NDA might be an issue. I'll just have to keep my eyes out for complex scenes. Maybe I'll try blendswap. Because the thing is, I think I understand the abstract concepts quite well, but it's a different thing to get a feel for how well a technology implements those concepts, what it feels like to actually use the addon on a production scene, what works well and what little problems you run into that you wouldn't expect. This is for the whole addon of course, not just QCD.
But no worries. For the most part things are easy enough to test.
> Yes, losing active/selection is definitely the issue.
Good news, I've fixed it so this doesn't matter anymore. I can now move objects to multiple non-visible layers in sequence, just like 2.7x.
> I think, that it will be interisting to hide slot that will still contain objects but has got lesser objects after Set operation - that will mean that objects has gone from it.
Interesting. I don't think this will be necessary anymore with the above solution, but we may want it as well.
> The good news is that there is no rush, and we have enough time to evolve solutions, proper design and testing.
Excellent.
> Well, we are using 2.79 on most product-dependent tasks since January, to avoid workflow issues of 2.8X to ruin our production process, 2.8X is banned in our company.
Hopefully collections and QCD will soon no longer be an obstacle anymore :)
> I am thinking about example scenes, because I can't share our working files because of NDA
Yeah, I suspected NDA might be an issue. I'll just have to keep my eyes out for complex scenes. Maybe I'll try blendswap. Because the thing is, I think I understand the abstract concepts quite well, but it's a different thing to get a feel for how well a technology implements those concepts, what it feels like to actually use the addon on a production scene, what works well and what little problems you run into that you wouldn't expect. This is for the whole addon of course, not just QCD.
But no worries. For the most part things are easy enough to test.
In #69577#878279, @Imaginer wrote:
Interesting. I don't think this will be necessary anymore with the above solution, but we may want it as well.
Yes. I also see no obstacles here)
A kind of syntactic sugar applied to a workflow.
But no worries. For the most part things are easy enough to test.
For sure. It is mostly about speed of access, just in heavily distracting modeling conditions, so there should not be problems with testing process.
We also have time-tested 2.7 example which works pretty well.
Good news, I've fixed it so this doesn't matter anymore. I can now move objects to multiple non-visible layers in sequence, just like 2.7x.
Hopefully collections and QCD will soon no longer be an obstacle anymore :)
You really give us hope)
> In #69577#878279, @Imaginer wrote:
> Interesting. I don't think this will be necessary anymore with the above solution, but we may want it as well.
Yes. I also see no obstacles here)
A kind of syntactic sugar applied to a workflow.
> But no worries. For the most part things are easy enough to test.
For sure. It is mostly about speed of access, just in heavily distracting modeling conditions, so there should not be problems with testing process.
We also have time-tested 2.7 example which works pretty well.
> Good news, I've fixed it so this doesn't matter anymore. I can now move objects to multiple non-visible layers in sequence, just like 2.7x.
> Hopefully collections and QCD will soon no longer be an obstacle anymore :)
You really give us hope)
Alright, here is a new version with the selection problem fixed and a QCD move widget drawn in OpenGL with hotkey support. Let me know what you think and if, after trying it out, you still want to try out the auto enabling/disabling of QCD layers on move. Fair warning, the OpenGL widget is crude (I'll see about refining it later), but it should serve as a good prototype for the functionality, and proof that it's possible. Moving objects via V, LMB, V, Shift+LMB, V, Alt+3 and V, Shift+Alt+3 is now possible.
Alright, here is a new version with the selection problem fixed and a QCD move widget drawn in OpenGL with hotkey support. Let me know what you think and if, after trying it out, you still want to try out the auto enabling/disabling of QCD layers on move. Fair warning, the OpenGL widget is crude (I'll see about refining it later), but it should serve as a good prototype for the functionality, and proof that it's possible. Moving objects via V, LMB, V, Shift+LMB, V, Alt+3 and V, Shift+Alt+3 is now possible.
[Collection_Manager_QCD_test_v2_3_1.zip](https://archive.blender.org/developer/F8365908/Collection_Manager_QCD_test_v2_3_1.zip)
In #69577#878839, @Imaginer wrote:
Alright, here is a new version with the selection problem fixed and a QCD move widget drawn in OpenGL with hotkey support. Let me know what you think and if, after trying it out, you still want to try out the auto enabling/disabling of QCD layers on move. Fair warning, the OpenGL widget is crude (I'll see about refining it later), but it should serve as a good prototype for the functionality, and proof that it's possible. Moving objects via V, LMB, V, Shift+LMB, V, Alt+3 and V, Shift+Alt+3 is now possible.
Wow!
It looks nice enough and it works!
I love bigger size of slots, it is better for mouse operations, square shape make it better for subitizing, but maybe gaps between them is a bit huge. 1px gap should be enough, since they are bigger.
I would like to propose to grey out slots indicators that don't contain a selection, if it is possible. Yeah, I think we will face those detecting/indicating active/selection problem many more times)
Also love Ctrl direct combinations back, indeed, works like a syntactic sugar. It is definitely "nice to have" feature!
Switch mode button has gone, and I think we made enough to get rid of it)
In general, this GUI It is definitely a step forward in terms of usability)
Nice to see such realization)
> In #69577#878839, @Imaginer wrote:
> Alright, here is a new version with the selection problem fixed and a QCD move widget drawn in OpenGL with hotkey support. Let me know what you think and if, after trying it out, you still want to try out the auto enabling/disabling of QCD layers on move. Fair warning, the OpenGL widget is crude (I'll see about refining it later), but it should serve as a good prototype for the functionality, and proof that it's possible. Moving objects via V, LMB, V, Shift+LMB, V, Alt+3 and V, Shift+Alt+3 is now possible.
>
> [Collection_Manager_QCD_test_v2_3_1.zip](https://archive.blender.org/developer/F8365908/Collection_Manager_QCD_test_v2_3_1.zip)
Wow!
It looks nice enough and it works!
I love bigger size of slots, it is better for mouse operations, square shape make it better for subitizing, but maybe gaps between them is a bit huge. 1px gap should be enough, since they are bigger.
I would like to propose to grey out slots indicators that don't contain a selection, if it is possible. Yeah, I think we will face those detecting/indicating active/selection problem many more times)
Also love Ctrl direct combinations back, indeed, works like a syntactic sugar. It is definitely "nice to have" feature!
Switch mode button has gone, and I think we made enough to get rid of it)
In general, this GUI It is definitely a step forward in terms of usability)
Nice to see such realization)
Thanks! I'm probably going to keep it a fairly simple flat theme, but hopefully it'll get a little more stylish. :)
I would like to propose to grey out slots indicators that don't contain a selection, if it is possible. Yeah, I think we will face those detecting/indicating active/selection problem many more times)
Not exactly sure what you're asking here. Do you mean you want the button greyed out if there are no objects in that layer or is it that it should be greyed out if there are objects but none are selected?
If it's the latter I was planning on doing a filled circle/outline circle for selected objects/not selected objects similar to how it's represented on the widget in the 3D View header.
And actually, now that I think of it, I think I'm going to change the 3D View header widget so that you get a filled circle for all selected objects instead of just the active object.
Also love Ctrl direct combinations back, indeed, works like a syntactic sugar. It is definitely "nice to have" feature!
Switch mode button has gone, and I think we made enough to get rid of it)
As you might have noticed from the version number, I actually just went back to the branch with the regular popup and switched it out for my custom OpenGL one, so no need for modes and I got the Ctrl combination back without any extra work! :)
Here's a new version to test with a few improvements to the OpenGL drawing, and a new feature/bug fix that allows you to mark collections as non QCD Layers. The re-numerate button on the collection manager now will respect user defined non QCD Layers by default, and so won't assign them a number, and it now has a hotkey (Ctrl) to allow complete re-numeration discarding user defined non QCD layers. Plus a bug fix with the integration of QCD with the Collection Manager histories.
> Wow!
> It looks nice enough and it works!
Thanks! I'm probably going to keep it a fairly simple flat theme, but hopefully it'll get a little more stylish. :)
> I would like to propose to grey out slots indicators that don't contain a selection, if it is possible. Yeah, I think we will face those detecting/indicating active/selection problem many more times)
Not exactly sure what you're asking here. Do you mean you want the button greyed out if there are no objects in that layer or is it that it should be greyed out if there are objects but none are selected?
If it's the latter I was planning on doing a filled circle/outline circle for selected objects/not selected objects similar to how it's represented on the widget in the 3D View header.
And actually, now that I think of it, I think I'm going to change the 3D View header widget so that you get a filled circle for all selected objects instead of just the active object.
> Also love Ctrl direct combinations back, indeed, works like a syntactic sugar. It is definitely "nice to have" feature!
> Switch mode button has gone, and I think we made enough to get rid of it)
As you might have noticed from the version number, I actually just went back to the branch with the regular popup and switched it out for my custom OpenGL one, so no need for modes and I got the Ctrl combination back without any extra work! :)
Here's a new version to test with a few improvements to the OpenGL drawing, and a new feature/bug fix that allows you to mark collections as non QCD Layers. The re-numerate button on the collection manager now will respect user defined non QCD Layers by default, and so won't assign them a number, and it now has a hotkey (Ctrl) to allow complete re-numeration discarding user defined non QCD layers. Plus a bug fix with the integration of QCD with the Collection Manager histories.
[Collection_Manager_QCD_test_v2_5_0.zip](https://archive.blender.org/developer/F8370331/Collection_Manager_QCD_test_v2_5_0.zip)
Upon further consideration I'm going to keep the filled circle to indicate the active object, because you need that indication to work properly when adding objects to a layer as opposed to moving them.
I've done some polishing of the OpenGL widget and the object indication, and I think it works really well now. Oh, and if I didn't mention it before, we can technically draw just about anything in opengl for the popup move widget.
Another thing I think I forgot to mention is that you can move objects to whatever layers you want now (and keep moving them) regardless of whether the layers are visible.
Not trying to push you, feel free to think about stuff for as long as you want. :)
And if you could keep an eye out for any hangs or performance problems with the new OpenGL widget that would be great.
Upon further consideration I'm going to keep the filled circle to indicate the active object, because you need that indication to work properly when adding objects to a layer as opposed to moving them.
I've done some polishing of the OpenGL widget and the object indication, and I think it works really well now. Oh, and if I didn't mention it before, we can technically draw just about anything in opengl for the popup move widget.
Another thing I think I forgot to mention is that you can move objects to whatever layers you want now (and keep moving them) regardless of whether the layers are visible.
Not trying to push you, feel free to think about stuff for as long as you want. :)
And if you could keep an eye out for any hangs or performance problems with the new OpenGL widget that would be great.
[Collection_Manager_QCD_test_v2_6_0.zip](https://archive.blender.org/developer/F8374714/Collection_Manager_QCD_test_v2_6_0.zip)
In #69577#881204, @Imaginer wrote:
Upon further consideration I'm going to keep the filled circle to indicate the active object, because you need that indication to work properly when adding objects to a layer as opposed to moving them.
I think it is reasonable, because this is how it works all this time, and already solves a problem.
Anyway, we have the ability to check other solutions as well, to have a chance to bring some enhancements to that behavior, but it will always require a workflow tests.
I've done some polishing of the OpenGL widget and the object indication, and I think it works really well now. Oh, and if I didn't mention it before, we can technically draw just about anything in opengl for the popup move widget.
Yeah, OpenGL is actually, a freedom, because if you are making something in OGL, you have only OGL limits.
Another thing I think I forgot to mention is that you can move objects to whatever layers you want now (and keep moving them) regardless of whether the layers are visible.
That is a very powerful step, that brings a lot of consistency and control to a system.
Thank you so much for this!
Not trying to push you, feel free to think about stuff for as long as you want. :)
And if you could keep an eye out for any hangs or performance problems with the new OpenGL widget that would be great.
I didn't spotted such a thing yet, but I will try to do my best)
Well, my thoughts about system that we've got, and some issues I would like to mention and clarify.
"Slots" term instead of "Layers".
Let's call them QCD Slots, because QCD system is not related to a "common layer sytems", used in max/maya/autocad/photoshop/SPainter and other software.
Layers entities are used for storing static context data, that can have a short name, that represents it context (like "car" or "house"), so Collections is a representation of a common layer system in Blender.
Layers are something constant, so they are about scene setup.
Numeric slots are far away from such kind of concept, they are part of a "quick access system" which handles dynamic context, that cannot have a name to represent context directly (like "some part of a mesh that I need to work separately at this moment" or "retopology object that I have to brought into coordination with several references" or "a bunch of heavyweight objects from imported scene to fix and simplify, moving already fixed objects to another slot to control vertices count I saved")
Slots are something temporal and fickle, so they are about modeling process and preparations.
Previously, 2.79 layers were removed because they were called "Layers" without providing the ability to perform work intended for layer systems.
Calling those things as Slots, we are making clear that they are not intendent for any kind of work intended for any kind of layer systems.
Widget gamma fix, adjusting contrast.
I would like to propose soften gamma (that's the thing I meant by "graying out")
Here is a mockup and explanations:
Brighter slot backgrounds makes borders more visible, that helps to recognize slots faster, that is good for subitizing.
Active object distribution over slots is the main information we need to get from widget - we are using it to distribute an active object over slots, so, this information have to be the most readable. Active have to be the brightest one, while difference between occupied and empty slots is not needed to be that strong. As you can see from 2.7 example, such difference is actually tiny there, while active is marked with color, that have strong contrast power on a scale of contrast types.
Wider bounds and a gap between packs. If to place packs too close, they are percepted as a row of 10 instead of 5/5, that ruins the ability to percept a number properly. Subitizing works up to 4 elements in a row, 5 is the limit, so everything that exceeds 5 suppresses the ability to subitize a number, and you need to count them. By the way, here is a nice example:
As you can see, you can easily percept the difference between 2 and 3 hatches, between 3 and 4, but 5 is a problem, so you are crossing 4 and starting next mark.
Also, you can easily percept that every crossed mark have 4 hatches, and you didn't missed something. If every mark will contain 6-7 hatches, you will have a problem, and you will need to count each of them, to be sure if they are correct.
That's the way to feel the actual limit of the human perception subitizing ability =)
(Also row of 5 is nice to handle two packs, but that's the limit, because it there will be 3-4 packs, that would be a problem.)
Manual numeration.
I used to be opposed to being able to assign numbers manually, because of the teamwork issue - if someone assigned slots, they are lost and cannot be reassigned without project coordination.
They cease to be temporary with this approach - you spread 20 slots over 500 Collections, and that's it, they can't be touched, because were assigned by some reason, that is obvious only to one person.
But you made the button “Re-numerate QCD layers (slots)”, that makes it clear that their assignment is temporal, so I think this is a kind of solution)
Personaly, I like the ability of manual numeration, so that was mostly the question of a realisation, I will try to explore it for some more.
Thank you for this)
> In #69577#881204, @Imaginer wrote:
> Upon further consideration I'm going to keep the filled circle to indicate the active object, because you need that indication to work properly when adding objects to a layer as opposed to moving them.
I think it is reasonable, because this is how it works all this time, and already solves a problem.
Anyway, we have the ability to check other solutions as well, to have a chance to bring some enhancements to that behavior, but it will always require a workflow tests.
> I've done some polishing of the OpenGL widget and the object indication, and I think it works really well now. Oh, and if I didn't mention it before, we can technically draw just about anything in opengl for the popup move widget.
Yeah, OpenGL is actually, a freedom, because if you are making something in OGL, you have only OGL limits.
> Another thing I think I forgot to mention is that you can move objects to whatever layers you want now (and keep moving them) regardless of whether the layers are visible.
That is a very powerful step, that brings a lot of consistency and control to a system.
Thank you so much for this!
> Not trying to push you, feel free to think about stuff for as long as you want. :)
> And if you could keep an eye out for any hangs or performance problems with the new OpenGL widget that would be great.
I didn't spotted such a thing yet, but I will try to do my best)
Well, my thoughts about system that we've got, and some issues I would like to mention and clarify.
- "Slots" term instead of "Layers".
Let's call them QCD Slots, because QCD system is not related to a "common layer sytems", used in max/maya/autocad/photoshop/SPainter and other software.
Layers entities are used for storing static context data, that can have a short name, that represents it context (like "car" or "house"), so Collections is a representation of a common layer system in Blender.
Layers are something constant, so they are about scene setup.
Numeric slots are far away from such kind of concept, they are part of a "quick access system" which handles dynamic context, that cannot have a name to represent context directly (like "some part of a mesh that I need to work separately at this moment" or "retopology object that I have to brought into coordination with several references" or "a bunch of heavyweight objects from imported scene to fix and simplify, moving already fixed objects to another slot to control vertices count I saved")
Slots are something temporal and fickle, so they are about modeling process and preparations.
Previously, 2.79 layers were removed because they were called "Layers" without providing the ability to perform work intended for layer systems.
Calling those things as Slots, we are making clear that they are **not** intendent for any kind of work intended for any kind of layer systems.
- Widget gamma fix, adjusting contrast.
I would like to propose soften gamma (that's the thing I meant by "graying out")
Here is a mockup and explanations:
![QCD_Widget 3.png](https://archive.blender.org/developer/F8377820/QCD_Widget_3.png)
- **Brighter slot backgrounds** makes borders more visible, that helps to recognize slots faster, that is good for subitizing.
- **Active object distribution** over slots is the main information we need to get from widget - we are using it to distribute an active object over slots, so, this information have to be the most readable. Active have to be the brightest one, while difference between occupied and empty slots is not needed to be that strong. As you can see from 2.7 example, such difference is actually tiny there, while active is marked with color, that have strong contrast power on a scale of contrast types.
- **Wider bounds and a gap between packs**. If to place packs too close, they are percepted as a row of 10 instead of 5/5, that ruins the ability to percept a number properly. Subitizing works up to 4 elements in a row, 5 is the limit, so everything that exceeds 5 suppresses the ability to subitize a number, and you need to count them. By the way, here is a nice example:
![изображение.png](https://archive.blender.org/developer/F8377822/изображение.png)
As you can see, you can easily percept the difference between 2 and 3 hatches, between 3 and 4, but 5 is a problem, so you are crossing 4 and starting next mark.
Also, you can easily percept that every crossed mark have 4 hatches, and you didn't missed something. If every mark will contain 6-7 hatches, you will have a problem, and you will need to **count** each of them, to be sure if they are correct.
That's the way to feel the actual limit of the human perception subitizing ability =)
(Also row of 5 is nice to handle two packs, but that's the limit, because it there will be 3-4 packs, that would be a problem.)
- Manual numeration.
I used to be opposed to being able to assign numbers manually, because of the **teamwork issue** - if someone assigned slots, they are lost and cannot be reassigned without project coordination.
They cease to be temporary with this approach - you spread 20 slots over 500 Collections, and that's it, they can't be touched, because were assigned by some reason, that is obvious only to one person.
But you made the button “Re-numerate QCD layers (slots)”, that makes it clear that their assignment is temporal, so I think this is a kind of solution)
Personaly, I like the ability of manual numeration, so that was mostly the question of a realisation, I will try to explore it for some more.
Thank you for this)
That is a very powerful step, that brings a lot of consistency and control to a system.
Thank you so much for this!
Your welcome :D
if you could keep an eye out for any hangs or performance problems with the new OpenGL widget that would be great.
I didn't spotted such a thing yet
Wonderful, that's what I'm hoping for. :)
"Slots" term instead of "Layers".
Sure, and I agree it makes more sense, this isn't a hierarchical layer system.
Wider bounds and a gap between packs.
Sure, that's easy, and it looks much better in your mockup.
Manual numeration.
I agree with what you've said. I've always been in favor of at least partial manual numeration because auto numeration will only work on the first 20 collections leaving you without a way to apply the QCD system to other collections. I imagine that you would want to change the slots target collections multiple times in a project, if not multiple times in the same session. I think we've struck a nice balance allowing for easy numeration to just be there in the beginning, but flexible enough to allow any configuration you need as a project progresses. I have seen a couple projects where they use blank collections as groups for other collections with objects, so it makes no sense to force a blank collection to be a slot. And I think it's turned out to be very temporal and fluid.
Widget gamma fix, adjusting contrast.
Brighter slot backgrounds
Active object distribution
I can do all of that, but I'm wondering if we should hard code the colors for the entire widget or have them follow the current theme?
> That is a very powerful step, that brings a lot of consistency and control to a system.
> Thank you so much for this!
Your welcome :D
>> if you could keep an eye out for any hangs or performance problems with the new OpenGL widget that would be great.
>I didn't spotted such a thing yet
Wonderful, that's what I'm hoping for. :)
> "Slots" term instead of "Layers".
Sure, and I agree it makes more sense, this isn't a hierarchical layer system.
> Wider bounds and a gap between packs.
Sure, that's easy, and it looks much better in your mockup.
> Manual numeration.
I agree with what you've said. I've always been in favor of at least partial manual numeration because auto numeration will only work on the first 20 collections leaving you without a way to apply the QCD system to other collections. I imagine that you would want to change the slots target collections multiple times in a project, if not multiple times in the same session. I think we've struck a nice balance allowing for easy numeration to just be there in the beginning, but flexible enough to allow any configuration you need as a project progresses. I have seen a couple projects where they use blank collections as groups for other collections with objects, so it makes no sense to force a blank collection to be a slot. And I think it's turned out to be very temporal and fluid.
> Widget gamma fix, adjusting contrast.
> Brighter slot backgrounds
> Active object distribution
I can do all of that, but I'm wondering if we should hard code the colors for the entire widget or have them follow the current theme?
This is ok, I do the same often because of the language barrier)
I didn't thought about hardcoding theme, but we can get all those colors from blender theme, I guess.
I will look for corresponding theme colors.
This is ok, I do the same often because of the language barrier)
I didn't thought about hardcoding theme, but we can get all those colors from blender theme, I guess.
I will look for corresponding theme colors.
Currently, it is possile to setup visual appearance of header widget with UI prefrences (Themes - User Interface - Tool)
We can use Toolbar Item palette instead to decrease overall theme changes (Themes - UI - Toolbar Item)
This will make the toolbar text (left-side T key toolset) color dull, but at a level where your modeling is so complex that you need a QCD system, you already know all this text and do not need to display it constantly.
I think it is suitable solution to start from for both header and popup widgets at this point.
Currently, it is possile to setup visual appearance of header widget with UI prefrences (Themes - User Interface - Tool)
We can use Toolbar Item palette instead to decrease overall theme changes (Themes - UI - Toolbar Item)
This will make the toolbar text (left-side T key toolset) color dull, but at a level where your modeling is so complex that you need a QCD system, you already know all this text and do not need to display it constantly.
I think it is suitable solution to start from for both header and popup widgets at this point.
![QCD_THEME.png](https://archive.blender.org/developer/F8380354/QCD_THEME.png)
Okay, I've changed the terminology from Layers to Slots, updated the layout to have wider gaps, and implemented theme support. I have set it up to be consistent with how floating panels are themed, so the user can style it in an expected manner just like any other popup. However, I have also included support for the one non standard feature you wanted, having the icons other than the one denoting the active object fade slightly into the buttons background (this is hard coded and was accomplished by simply setting the icon to draw semitransparent with a value from 0-1 and can be changed easily if needed). While implementing theme support I found that there were times when you would move selected objects, but because no object was active there was no indication of movement from the UI. So to fix this I've updated the icons so that a line indicates the slot has objects, an empty circle indicates the slot has selected objects, and the filled circle still indicates the slot has the active object. If you have an idea for better icons I'm all ears, but I would like the the header and popup icons to match, and because the buttons on the header are so small, and the icons don't scale, the number of icons that work for the header is extremely limited.
The following theme elements are linked to the OpenGL widget.
Tool:
Text
Inner
Selected
Outline (The drawing of outlines was added during the development of theme support)
Menu Back
Text (Controls color for the title text and the X icons)
Inner
Outline
Tooltip
Text
Inner
Outline
The theme implementation can be modified if needed, but I think overall it works nicely.
One thing to note is that while this works properly with blender 2.82, blender 2.83 has changed stuff with it's color management and so currently the OpenGL widgets colors will be slightly off in intensity. This is known and being discussed here: https://developer.blender.org/T74139. When a course of action is decided on I'll make sure my addon conforms to it.
I also fixed a bug when adding objects to a slot (Shift-Click) where if there was no active object you could add it, but not remove it.
Okay, I've changed the terminology from Layers to Slots, updated the layout to have wider gaps, and implemented theme support. I have set it up to be consistent with how floating panels are themed, so the user can style it in an expected manner just like any other popup. However, I have also included support for the one non standard feature you wanted, having the icons other than the one denoting the active object fade slightly into the buttons background (this is hard coded and was accomplished by simply setting the icon to draw semitransparent with a value from 0-1 and can be changed easily if needed). While implementing theme support I found that there were times when you would move selected objects, but because no object was active there was no indication of movement from the UI. So to fix this I've updated the icons so that a line indicates the slot has objects, an empty circle indicates the slot has selected objects, and the filled circle still indicates the slot has the active object. If you have an idea for better icons I'm all ears, but I would like the the header and popup icons to match, and because the buttons on the header are so small, and the icons don't scale, the number of icons that work for the header is extremely limited.
The following theme elements are linked to the OpenGL widget.
* Tool:
* Text
* Inner
* Selected
* Outline (The drawing of outlines was added during the development of theme support)
* Menu Back
* Text (Controls color for the title text and the X icons)
* Inner
* Outline
* Tooltip
* Text
* Inner
* Outline
The theme implementation can be modified if needed, but I think overall it works nicely.
One thing to note is that while this works properly with blender 2.82, blender 2.83 has changed stuff with it's color management and so currently the OpenGL widgets colors will be slightly off in intensity. This is known and being discussed here: https://developer.blender.org/T74139. When a course of action is decided on I'll make sure my addon conforms to it.
I also fixed a bug when adding objects to a slot (Shift-Click) where if there was no active object you could add it, but not remove it.
Let me know what you think.
[Collection_Manager_QCD_test_v2_7_1.zip](https://archive.blender.org/developer/F8384349/Collection_Manager_QCD_test_v2_7_1.zip)
In #69577#883970, @Imaginer wrote:
Okay, I've changed the terminology from Layers to Slots, updated the layout to have wider gaps, and implemented theme support.
Nice!
While implementing theme support I found that there were times when you would move selected objects, but because no object was active there was no indication of movement from the UI. So to fix this I've updated the icons so that a line indicates the slot has objects, an empty circle indicates the slot has selected objects, and the filled circle still indicates the slot has the active object. If you have an idea for better icons I'm all ears, but I would like the the header and popup icons to match, and because the buttons on the header are so small, and the icons don't scale, the number of icons that work for the header is extremely limited.
Thats an interesting idea, if to take into account that we work with EC, so we can say how objects that will be sent with Set operation are distrubuted over slots. I will try to investigate the workflow behind it)
But instead of line I would propose a dot, sharing same color with empty circle, and size of an inner diameter of the empty circle.
(Empty, occupied, selected, active)
I have set it up to be consistent with how floating panels are themed, so the user can style it in an expected manner just like any other popup. However, I have also included support for the one non standard feature you wanted, having the icons other than the one denoting the active object fade slightly into the buttons background (this is hard coded and was accomplished by simply setting the icon to draw semitransparent with a value from 0-1 and can be changed easily if needed).
The following theme elements are linked to the OpenGL widget.
Tool:
Text
Inner
Selected
Outline (The drawing of outlines was added during the development of theme support)
Menu Back
Text (Controls color for the title text and the X icons)
Inner
Outline
Tooltip
Text
Inner
Outline
The theme implementation can be modified if needed, but I think overall it works nicely.
Sorry, but I didn't spotted changes in theme setup. It seems to be completely linked to UI - Tool.
The problem is that QCD widget used to have dim colors, because of precise contrast setup, so if it will use UI - Tool colors, a lot of things will turn dim in overall UI.
I colorized it to random colors to show how it influences overal interface
That's why I proposed UI - Toolbar Item instead UI - Tool, it doesn't spread so much over interface)
One thing to note is that while this works properly with blender 2.82, blender 2.83 has changed stuff with it's color management and so currently the OpenGL widgets colors will be slightly off in intensity. This is known and being discussed here: https://developer.blender.org/T74139. When a course of action is decided on I'll make sure my addon conforms to it.
That's also interesting, thanks) Hope such issues can be brought to a consistency in a single release, and there will be no more of them.
I also fixed a bug when adding objects to a slot (Shift-Click) where if there was no active object you could add it, but not remove it.
Indeed, works like a charm)
I also like that it can be sent to a disabled slot and back.
Also like it does not turn into active if an active one has been defined.
Spotted an interesting issue - popup QCD widged is about 1.2x larger on Windows (tested 8.1), and looks normal on Linux Mint where it have the same width as header widget.
I'll give a screenshots later.
Linux:
> In #69577#883970, @Imaginer wrote:
> Okay, I've changed the terminology from Layers to Slots, updated the layout to have wider gaps, and implemented theme support.
Nice!
> While implementing theme support I found that there were times when you would move selected objects, but because no object was active there was no indication of movement from the UI. So to fix this I've updated the icons so that a line indicates the slot has objects, an empty circle indicates the slot has selected objects, and the filled circle still indicates the slot has the active object. If you have an idea for better icons I'm all ears, but I would like the the header and popup icons to match, and because the buttons on the header are so small, and the icons don't scale, the number of icons that work for the header is extremely limited.
Thats an interesting idea, if to take into account that we work with EC, so we can say how objects that will be sent with Set operation are distrubuted over slots. I will try to investigate the workflow behind it)
But instead of line I would propose a dot, sharing same color with empty circle, and size of an inner diameter of the empty circle.
(Empty, occupied, selected, active)
![изображение.png](https://archive.blender.org/developer/F8387618/изображение.png)
> I have set it up to be consistent with how floating panels are themed, so the user can style it in an expected manner just like any other popup. However, I have also included support for the one non standard feature you wanted, having the icons other than the one denoting the active object fade slightly into the buttons background (this is hard coded and was accomplished by simply setting the icon to draw semitransparent with a value from 0-1 and can be changed easily if needed).
> The following theme elements are linked to the OpenGL widget.
> * Tool:
> * Text
> * Inner
> * Selected
> * Outline (The drawing of outlines was added during the development of theme support)
> * Menu Back
> * Text (Controls color for the title text and the X icons)
> * Inner
> * Outline
> * Tooltip
> * Text
> * Inner
> * Outline
> The theme implementation can be modified if needed, but I think overall it works nicely.
Sorry, but I didn't spotted changes in theme setup. It seems to be completely linked to UI - Tool.
The problem is that QCD widget used to have dim colors, because of precise contrast setup, so if it will use **UI - Tool** colors, a lot of things will turn dim in overall UI.
I colorized it to random colors to show how it influences overal interface
![изображение.png](https://archive.blender.org/developer/F8387562/изображение.png)
That's why I proposed **UI - Toolbar** Item instead **UI - Tool**, it doesn't spread so much over interface)
> One thing to note is that while this works properly with blender 2.82, blender 2.83 has changed stuff with it's color management and so currently the OpenGL widgets colors will be slightly off in intensity. This is known and being discussed here: https://developer.blender.org/T74139. When a course of action is decided on I'll make sure my addon conforms to it.
That's also interesting, thanks) Hope such issues can be brought to a consistency in a single release, and there will be no more of them.
> I also fixed a bug when adding objects to a slot (Shift-Click) where if there was no active object you could add it, but not remove it.
Indeed, works like a charm)
I also like that it can be sent to a disabled slot and back.
Also like it does not turn into active if an active one has been defined.
Spotted an interesting issue - popup QCD widged is about 1.2x larger on Windows (tested 8.1), and looks normal on Linux Mint where it have the same width as header widget.
I'll give a screenshots later.
Linux:
![QCD LIN.png](https://archive.blender.org/developer/F8387673/QCD_LIN.png)
Oh, no, it seems, I just messed up with overall UI scale (Preferences - Intrface - Resolution scale) on different machines.
Popup equals heard at 1.4 UI scale, usually I use 1.2 - 1.3. My bad =)
By the way, what scale of the user interface do you prefer to use?
Oh, no, it seems, I just messed up with overall UI scale (Preferences - Intrface - Resolution scale) on different machines.
Popup equals heard at 1.4 UI scale, usually I use 1.2 - 1.3. My bad =)
By the way, what scale of the user interface do you prefer to use?
While that works to some degree in the OpenGL widget, it does not work well in the header widget. They are just too similar, even with the color difference in the OpenGL widget I think there could be situations where you could mistake one for the other, but when it's on the header there is less of a size difference because everything's smaller and there is no color difference. Now, obviously we aren't required to keep the OpenGL widget and header widget in sync, but I think it's a good idea.
So, if we're keeping things consistent, that leaves us with two options I can think of, use the default blender icons that take the theme colors and fit in the header widget, or add a custom icon for the active object. The downside with the custom icon is that it won't take the color of the theme like the default blender icons, so I would probably have it as white with a black outline, but I don't think that is a major problem because it denotes something special anyway. If we go the custom icon route I was thinking of using a five pointed star to denote the active object and having the non selected objects as the empty circle and the selected objects as the filled circle.
Sorry, but I didn't spotted changes in theme setup. It seems to be completely linked to UI - Tool.
It is mostly. Because the OpenGL widget mimics a floating panel very closely it should use the same theme as well (that's what I think a user would expect). I think it's a bad idea to usurp another UI element's theme, aside from potentially ruining that element's colors, the user will have no idea that that's what controls the OpenGL widget's colors.
I don't think most users will mind the OpenGL widget conforming to the standard floating panel theme, but since you want more flexibility I suggest we provide a set of overrides in the addon's preferences. This will allow it to follow whatever theme is in use as well as allow for greater customization if a user wants it.
That's also interesting, thanks) Hope such issues can be brought to a consistency in a single release, and there will be no more of them.
Me too.
Indeed, works like a charm)
I also like that it can be sent to a disabled slot and back.
Also like it does not turn into active if an active one has been defined.
Great. This whole issue with the selection and moving objects to non active slots is very finicky. Hopefully, I've got everything working in a nice and consistent way now.
Spotted an interesting issue - popup QCD widged is about 1.2x larger on Windows (tested 8.1), and looks normal on Linux Mint where it have the same width as header widget.
Oh, no, it seems, I just messed up with overall UI scale (Preferences - Intrface - Resolution scale) on different machines.
Not entirely. Currently the OpenGL widget is drawn in absolute pixels and doesn't scale with the interface or monitors with different resolutions at all.
I should probably fix this.
By the way, what scale of the user interface do you prefer to use?
On Linux I use a Resolution scale of 1.0. Interestingly, I tried it on Windows (8) and even though it was set to 1.0 blender's ui was a different size (I'm thinking blender also takes the systems font dpi and maybe size into account).
(Although it's hard to tell, I'm sure the OpenGL widget was the same size on Windows because it's drawn in absolute pixels.)
> instead of line I would propose a dot
While that works to some degree in the OpenGL widget, it does not work well in the header widget. They are just too similar, even with the color difference in the OpenGL widget I think there could be situations where you could mistake one for the other, but when it's on the header there is less of a size difference because everything's smaller and there is no color difference. Now, obviously we aren't required to keep the OpenGL widget and header widget in sync, but I think it's a good idea.
So, if we're keeping things consistent, that leaves us with two options I can think of, use the default blender icons that take the theme colors and fit in the header widget, or add a custom icon for the active object. The downside with the custom icon is that it won't take the color of the theme like the default blender icons, so I would probably have it as white with a black outline, but I don't think that is a major problem because it denotes something special anyway. If we go the custom icon route I was thinking of using a five pointed star to denote the active object and having the non selected objects as the empty circle and the selected objects as the filled circle.
> Sorry, but I didn't spotted changes in theme setup. It seems to be completely linked to UI - Tool.
It is mostly. Because the OpenGL widget mimics a floating panel very closely it should use the same theme as well (that's what I think a user would expect). I think it's a bad idea to usurp another UI element's theme, aside from potentially ruining that element's colors, the user will have no idea that that's what controls the OpenGL widget's colors.
I don't think most users will mind the OpenGL widget conforming to the standard floating panel theme, but since you want more flexibility I suggest we provide a set of overrides in the addon's preferences. This will allow it to follow whatever theme is in use as well as allow for greater customization if a user wants it.
> That's also interesting, thanks) Hope such issues can be brought to a consistency in a single release, and there will be no more of them.
Me too.
> Indeed, works like a charm)
> I also like that it can be sent to a disabled slot and back.
> Also like it does not turn into active if an active one has been defined.
Great. This whole issue with the selection and moving objects to non active slots is very finicky. Hopefully, I've got everything working in a nice and consistent way now.
> Spotted an interesting issue - popup QCD widged is about 1.2x larger on Windows (tested 8.1), and looks normal on Linux Mint where it have the same width as header widget.
> Oh, no, it seems, I just messed up with overall UI scale (Preferences - Intrface - Resolution scale) on different machines.
Not entirely. Currently the OpenGL widget is drawn in absolute pixels and doesn't scale with the interface or monitors with different resolutions at all.
I should probably fix this.
> By the way, what scale of the user interface do you prefer to use?
On Linux I use a Resolution scale of 1.0. Interestingly, I tried it on Windows (8) and even though it was set to 1.0 blender's ui was a different size (I'm thinking blender also takes the systems font dpi and maybe size into account).
(Although it's hard to tell, I'm sure the OpenGL widget was the same size on Windows because it's drawn in absolute pixels.)
Now, obviously we aren't required to keep the OpenGL widget and header widget in sync, but I think it's a good idea
Yes, we are keeping sync and related to defaults icons/resources, trying to investigate what we can possibly get following that path. How much it allows us to reach.
By the way, what is line - is it an icon, or a text symbol, maybe? How did you made it?)
The same question about crosses for unexisting slots.
Color theme has got some special requirements, so it makes sense to make it local, because it is hard to find any kind of system in Blender that could have the same requirements to a visual appearance and contrast.
Is it possible to make local color override in addon prefs that influences both header and popup keeping their themes in sync?
Currently the OpenGL widget is drawn in absolute pixels and doesn't scale with the interface or monitors with different resolutions at all.
Yeah, I spotted the problem in a wrong way)
Yes, it drawn in pixels, so not a widget, but entire ui scale looks different in comparison to a widget on different monitor sizes and pixel density)
So the question is - can we make system ui scale preference influence widget size, or, for example, provide some fixed size values?
What are our possible abilities in resizing custom OGL stuff?
Can it be multiplied to some value or something?
I think it will be nice to reach sync also for width of header and popup widgets, or at least, keep their widths corresponding)
>Now, obviously we aren't required to keep the OpenGL widget and header widget in sync, but I think it's a good idea
Yes, we are keeping sync and related to defaults icons/resources, trying to investigate what we can possibly get following that path. How much it allows us to reach.
By the way, what is line - is it an icon, or a text symbol, maybe? How did you made it?)
The same question about crosses for unexisting slots.
Color theme has got some special requirements, so it makes sense to make it local, because it is hard to find any kind of system in Blender that could have the same requirements to a visual appearance and contrast.
Is it possible to make local color override in addon prefs that influences both header and popup keeping their themes in sync?
>Currently the OpenGL widget is drawn in absolute pixels and doesn't scale with the interface or monitors with different resolutions at all.
Yeah, I spotted the problem in a wrong way)
Yes, it drawn in pixels, so not a widget, but entire ui scale looks different in comparison to a widget on different monitor sizes and pixel density)
So the question is - can we make system ui scale preference influence widget size, or, for example, provide some fixed size values?
What are our possible abilities in resizing custom OGL stuff?
Can it be multiplied to some value or something?
I think it will be nice to reach sync also for width of header and popup widgets, or at least, keep their widths corresponding)
Yes, we are keeping sync and related to defaults icons/resources,
Good. And you're right a custom icon just doesn't work well (I tried it).
By the way, what is line - is it an icon, or a text symbol, maybe? How did you made it?)
The same question about crosses for unexisting slots.
For the header widget, both of those are icons. Unfortunately, text messes up the button sizes on the header widget and so can't be used. I use the Icon Viewer addon to get a nice grid view of all the available icons.
For the OpenGL widget all the "icons" are just shapes I draw in OpenGL.
Is it possible to make local color override in addon prefs that influences both header and popup keeping their themes in sync?
No. The header's colors are taken directly from the theme.
So the question is - can we make system ui scale preference influence widget size, or, for example, provide some fixed size values?
What are our possible abilities in resizing custom OGL stuff?
Can it be multiplied to some value or something?
OGL stuff can be drawn at any size. I just need to add some code to take the UI's Resolution Scale into account. I think I know what needs to be done and I'll try it out and get back to you.
I think it will be nice to reach sync also for width of header and popup widgets, or at least, keep their widths corresponding)
Yeah, I'll keep them about the same size.
> Yes, we are keeping sync and related to defaults icons/resources,
Good. And you're right a custom icon just doesn't work well (I tried it).
> By the way, what is line - is it an icon, or a text symbol, maybe? How did you made it?)
> The same question about crosses for unexisting slots.
For the header widget, both of those are icons. Unfortunately, text messes up the button sizes on the header widget and so can't be used. I use the Icon Viewer addon to get a nice grid view of all the available icons.
For the OpenGL widget all the "icons" are just shapes I draw in OpenGL.
> Is it possible to make local color override in addon prefs that influences both header and popup keeping their themes in sync?
No. The header's colors are taken directly from the theme.
> So the question is - can we make system ui scale preference influence widget size, or, for example, provide some fixed size values?
> What are our possible abilities in resizing custom OGL stuff?
> Can it be multiplied to some value or something?
OGL stuff can be drawn at any size. I just need to add some code to take the UI's Resolution Scale into account. I think I know what needs to be done and I'll try it out and get back to you.
> I think it will be nice to reach sync also for width of header and popup widgets, or at least, keep their widths corresponding)
Yeah, I'll keep them about the same size.
Added dpi/scaling support. Some widths and gaps may need a little tweaking, but it's pretty close to what we had previously and now gets sized according to the Resolution Scale in the preferences.
Added addon preferences with overrides for the OpenGL widget's theme. By default it will follow the theme for popups exactly, but you can override that and customize just about anything. You can even set how visible the non active icons are.
(check the check boxes to enable and allow you to edit the overrides)
Added dpi/scaling support. Some widths and gaps may need a little tweaking, but it's pretty close to what we had previously and now gets sized according to the Resolution Scale in the preferences.
Added addon preferences with overrides for the OpenGL widget's theme. By default it will follow the theme for popups exactly, but you can override that and customize just about anything. You can even set how visible the non active icons are.
(check the check boxes to enable and allow you to edit the overrides)
![preferences_2020-03-08_00-05-20.png](https://archive.blender.org/developer/F8394618/preferences_2020-03-08_00-05-20.png)
[Collection_Manager_QCD_test_v2_9_1.zip](https://archive.blender.org/developer/F8394622/Collection_Manager_QCD_test_v2_9_1.zip)
A very nice progress here!
Indeed, it is better that the gaps remain 1px regardless of the scale of the UI scale (maybe with 2px option for 4k monitors) othervise they are corrupted by aliasing, but it is nice to see popup respect UI scale.
Not sure about color overrides - popup is large enough to have a problems, but I will prefer to have such options yet, and try to figure out if they are really needed.
I really like that the system is fully operational and only tiny design issues are left.
That's just awesome)
Lovely!
A very nice progress here!
Indeed, it is better that the gaps remain 1px regardless of the scale of the UI scale (maybe with 2px option for 4k monitors) othervise they are corrupted by aliasing, but it is nice to see popup respect UI scale.
Not sure about color overrides - popup is large enough to have a problems, but I will prefer to have such options yet, and try to figure out if they are really needed.
I really like that the system is fully operational and only tiny design issues are left.
That's just awesome)
Lovely!
Also spotted some dots.
Can we try to use them instead of minus?
DECORATE icon
I like minus because it is not round, so you can clearly see where active/selected is, but it makes harder to see empty slots in my opinion.
That would be nice to make a comparison.
Also spotted some dots.
Can we try to use them instead of minus?
![изображение.png](https://archive.blender.org/developer/F8396533/изображение.png)
DECORATE icon
![изображение.png](https://archive.blender.org/developer/F8396552/изображение.png)
I like minus because it is not round, so you can clearly see where active/selected is, but it makes harder to see empty slots in my opinion.
That would be nice to make a comparison.
gaps remain 1px regardless of the scale of the UI scale (maybe with 2px option for 4k monitors)
I'll see what I can do.
Not sure about color overrides
You want a very specific custom theme for the widget. I think that using the regular popup theme works well in most cases, but there are times when part or all of the theme is not ideal. Overrides allow you to customize as much or as little as you desire.
So everybody can have what they want :)
I really like that the system is fully operational and only tiny design issues are left.
Me too. And on that note, I would like to propose committing this to master. We have lots of time to polish it once it's in master, but the cutoff for adding major new features to master for 2.83 is March 12. @BrendonMurphy What do you think about this?
Also spotted some dots.
Can we try to use them instead of minus?
We can try it, but I have doubts.
On full size buttons it would be fine, however, I don't think there is enough of a difference in size on the small buttons. I'm pretty sure what you're showing in your picture is the DECORATE icon with the RADIOBUT_ON and RADIOBUT_OFF icons, but the icons we're currently using are LAYER_ACTIVE and LAYER_USED not RADIOBUT_ON and RADIOBUT_OFF. Here is a comparison between DECORATE, LAYER_USED, LAYER_ACTIVE, and DOT.
This brings up the question of do we want to expand the buttons to full size to allow the use of any/all of the icons? Currently the buttons are scaled on the y axis so they will fit nicely with everything else in the header, but they could be bigger and hang down.
> A very nice progress here!
Thanks :)
> gaps remain 1px regardless of the scale of the UI scale (maybe with 2px option for 4k monitors)
I'll see what I can do.
> Not sure about color overrides
You want a very specific custom theme for the widget. I think that using the regular popup theme works well in most cases, but there are times when part or all of the theme is not ideal. Overrides allow you to customize as much or as little as you desire.
So everybody can have what they want :)
> I really like that the system is fully operational and only tiny design issues are left.
Me too. And on that note, I would like to propose committing this to master. We have lots of time to polish it once it's in master, but the cutoff for adding major new features to master for 2.83 is March 12.
@BrendonMurphy What do you think about this?
> Also spotted some dots.
> Can we try to use them instead of minus?
We can try it, but I have doubts.
On full size buttons it would be fine, however, I don't think there is enough of a difference in size on the small buttons. I'm pretty sure what you're showing in your picture is the DECORATE icon with the RADIOBUT_ON and RADIOBUT_OFF icons, but the icons we're currently using are LAYER_ACTIVE and LAYER_USED not RADIOBUT_ON and RADIOBUT_OFF. Here is a comparison between DECORATE, LAYER_USED, LAYER_ACTIVE, and DOT.
![dot_icon_comparison.png](https://archive.blender.org/developer/F8396835/dot_icon_comparison.png)
This brings up the question of do we want to expand the buttons to full size to allow the use of any/all of the icons? Currently the buttons are scaled on the y axis so they will fit nicely with everything else in the header, but they could be bigger and hang down.
Mostly disregard that last question. The header widget can only have slightly larger buttons. It turns out that blender will only allow the header to take up a specific amount of vertical space, anything past that it cuts off.
Mostly disregard that last question. The header widget can only have slightly larger buttons. It turns out that blender will only allow the header to take up a specific amount of vertical space, anything past that it cuts off.
Yeah, I've spotted LAYER_USED issue on my second screenshot, when I was trying to figure out what icons can be possibly used for slots.
I tried to make a mockup to get how dots will look like, and how much they will mess with perception recognition, but image I've got is far away from being self-representative)
So I'm in doubts)
Yeah, I've spotted LAYER_USED issue on my second screenshot, when I was trying to figure out what icons can be possibly used for slots.
I tried to make a mockup to get how dots will look like, and how much they will mess with perception recognition, but image I've got is far away from being self-representative)
So I'm in doubts)
I think that such progress definitely deserves to reach master, because multiref modeling in particular (and handling dynamic context in general)
is the reason we are using Blender daily to solve various complex problems that other programs don't allow, including entire "industry standards" family.
ps
the only issue I can see that it redefines nums keys to make QCD system actually work.
Some users that don't need QCD may not like that.
How do you think, is there a solution for that problem?
Maybe an option in prefs or something...
I think that such progress definitely deserves to reach master, because multiref modeling in particular (and handling dynamic context in general)
is the reason we are using Blender daily to solve various complex problems that other programs don't allow, including entire "industry standards" family.
ps
the only issue I can see that it redefines nums keys to make QCD system actually work.
Some users that don't need QCD may not like that.
How do you think, is there a solution for that problem?
Maybe an option in prefs or something...
the only issue I can see that it redefines nums keys to make QCD system actually work.
Some users that don't need QCD may not like that.
How do you think, is there a solution for that problem?
Maybe an option in prefs or something...
I think I can add a checkbox in the preferences to allow you to enable/disable QCD.
Good news! I've found a way to make custom icons respect the theme. This means we can have any icon we want for the active object. Example: (this started off as a white star)
What I ended up doing was multiplying the icons pixel data with the theme's color and essentially rebuilding the icon every time the theme changes. Took me a while to figure out, thankfully blender allows access to the pixel data of custom icons, but I got it working and now we have a lot more freedom.
> the only issue I can see that it redefines nums keys to make QCD system actually work.
> Some users that don't need QCD may not like that.
> How do you think, is there a solution for that problem?
> Maybe an option in prefs or something...
I think I can add a checkbox in the preferences to allow you to enable/disable QCD.
Good news! I've found a way to make custom icons respect the theme. This means we can have any icon we want for the active object. Example: (this started off as a white star)
![custom_icon_theme_support_example.png](https://archive.blender.org/developer/F8398642/custom_icon_theme_support_example.png)
What I ended up doing was multiplying the icons pixel data with the theme's color and essentially rebuilding the icon every time the theme changes. Took me a while to figure out, thankfully blender allows access to the pixel data of custom icons, but I got it working and now we have a lot more freedom.
Added a custom icon for the active object,a star for now, in the header widget. The OpenGL widget has not been updated yet (I'll do that once we decide on a final icon set).
Hopefully fixed the aliasing issue and added general scaling improvements. I actually didn't change the gap scaling between buttons because it wasn't causing the problem and I think it looks more natural for it to scale with the UI, but I can limit it to 1 or 2 if you still think it's necessary.
I'm also including a "dots" zip that uses DECORATE, LAYER_USED, and LAYER_ACTIVE for the header widget
the only issue I can see that it redefines nums keys to make QCD system actually work.
Some users that don't need QCD may not like that.
How do you think, is there a solution for that problem?
Maybe an option in prefs or something...
I think I can add a checkbox in the preferences to allow you to enable/disable QCD.
Upon further consideration this could be more trouble than I first thought. How big a chance is there that someone would use those hotkeys, but not need a QCD system?
Update.
* Added a custom icon for the active object,a star for now, in the header widget. The OpenGL widget has not been updated yet (I'll do that once we decide on a final icon set).
* Hopefully fixed the aliasing issue and added general scaling improvements. I actually didn't change the gap scaling between buttons because it wasn't causing the problem and I think it looks more natural for it to scale with the UI, but I can limit it to 1 or 2 if you still think it's necessary.
I'm also including a "dots" zip that uses DECORATE, LAYER_USED, and LAYER_ACTIVE for the header widget
> the only issue I can see that it redefines nums keys to make QCD system actually work.
> Some users that don't need QCD may not like that.
> How do you think, is there a solution for that problem?
> Maybe an option in prefs or something...
>>I think I can add a checkbox in the preferences to allow you to enable/disable QCD.
Upon further consideration this could be more trouble than I first thought. How big a chance is there that someone would use those hotkeys, but not need a QCD system?
[Collection_Manager_QCD_test_v2_9_4.zip](https://archive.blender.org/developer/F8400364/Collection_Manager_QCD_test_v2_9_4.zip)
[Collection_Manager_QCD_test_v2_9_4_dots.zip](https://archive.blender.org/developer/F8400365/Collection_Manager_QCD_test_v2_9_4_dots.zip)
Added a custom icon for the active object,a star for now, in the header widget. The OpenGL widget has not been updated yet (I'll do that once we decide on a final icon set).
Hopefully fixed the aliasing issue and added general scaling improvements. I actually didn't change the gap scaling between buttons because it wasn't causing the problem and I think it looks more natural for it to scale with the UI, but I can limit it to 1 or 2 if you still think it's necessary.
I'm also including a "dots" zip that uses DECORATE, LAYER_USED, and LAYER_ACTIVE for the header widget
Thank you)
I checked them, they are interesting to investigate)
Well, first - star is kind of a strong shape symbol, and it is not as neutral as circle, so I would prefer to not to use it.
I think that most of CG programs don't have stars in UI because of the same reason. It's too attractive.
Also filled star / filled circle system have lower contrast than expected. Shape contrast type have low contrast value on a scale of contrast types.
I checked the dots solution, it is nice to see both solutions together, very handy by the way - and yes, this contrast is also too low.
Basically, I think that minus/empty circle/filled circle works the best way. The only thing I would like to propose to change in that scheme is to try to make minus shorter, I will try to make a mockup to figure out if it works)
Upon further consideration this could be more trouble than I first thought.
Yes, I guess there will be troubles.
How big a chance is there that someone would use those hotkeys, but not need a QCD system?
The problem is that QCD system is built into Collection Manager, and those systems are needed for different stages and types of work.
QCD system is needed for complex modeling, to handle limited dynamic context with quick access, while Collections management is needed for final complex scene setup, to handle unlimited static context.
So there will be a lot of scene setup atrists, like visualizators, that will never perform multiref modeling, and they may not like hotkeys autoreassigning.
Personally, we will use slots keys a lot, even in edit mode, like in 2.7.
We are using (~ tilda) button for **wm.call_menu** [VIEW3D_MT_edit_mesh_select_mode] for decade for switching vertex-edge-face pressing1 - vertex mode 2 - edge mode 3 - face mode
Way better than ctrl+tab from 2.7 and almost fast as 1 2 3 from 2.8, but supports multiref modeling due to direct access to slots even from edit mode, and keeping slots access keys the same for both object and edit modes.
That's the most consistent solution we discovered.
But Im trying to avoid further negative reports from other users. I don't know how serious autoreassigning issue is, just know that there are people that will not like it.
> In #69577#889002, @Imaginer wrote:
> Update.
> * Added a custom icon for the active object,a star for now, in the header widget. The OpenGL widget has not been updated yet (I'll do that once we decide on a final icon set).
> * Hopefully fixed the aliasing issue and added general scaling improvements. I actually didn't change the gap scaling between buttons because it wasn't causing the problem and I think it looks more natural for it to scale with the UI, but I can limit it to 1 or 2 if you still think it's necessary.
>
> I'm also including a "dots" zip that uses DECORATE, LAYER_USED, and LAYER_ACTIVE for the header widget
Thank you)
I checked them, they are interesting to investigate)
Well, first - star is kind of a strong shape symbol, and it is not as neutral as circle, so I would prefer to not to use it.
I think that most of CG programs don't have stars in UI because of the same reason. It's too attractive.
![изображение.png](https://archive.blender.org/developer/F8400417/изображение.png)
Also filled star / filled circle system have lower contrast than expected. Shape contrast type have low contrast value on a scale of contrast types.
![изображение.png](https://archive.blender.org/developer/F8400448/изображение.png)
I checked the dots solution, it is nice to see both solutions together, very handy by the way - and yes, this contrast is also too low.
Basically, I think that minus/empty circle/filled circle works the best way. The only thing I would like to propose to change in that scheme is to try to make minus shorter, I will try to make a mockup to figure out if it works)
> Upon further consideration this could be more trouble than I first thought.
Yes, I guess there will be troubles.
> How big a chance is there that someone would use those hotkeys, but not need a QCD system?
The problem is that QCD system is built into Collection Manager, and those systems are needed for different stages and types of work.
QCD system is needed for complex modeling, to handle limited dynamic context with quick access, while Collections management is needed for final complex scene setup, to handle unlimited static context.
So there will be a lot of scene setup atrists, like visualizators, that will never perform multiref modeling, and they may not like hotkeys autoreassigning.
Personally, we will use slots keys a lot, even in edit mode, like in 2.7.
We are using ` (~ tilda) button for **wm.call_menu** [VIEW3D_MT_edit_mesh_select_mode] for decade for switching vertex-edge-face pressing
`1 - vertex mode
`2 - edge mode
`3 - face mode
Way better than ctrl+tab from 2.7 and almost fast as 1 2 3 from 2.8, but supports multiref modeling due to direct access to slots even from edit mode, and keeping slots access keys the same for both object and edit modes.
That's the most consistent solution we discovered.
![изображение.png](https://archive.blender.org/developer/F8400516/изображение.png)
But Im trying to avoid further negative reports from other users. I don't know how serious autoreassigning issue is, just know that there are people that will not like it.
I've tried, and it seems it is possible to map edit mode numeric keys to slots maually.
That's nice)
So, only object mode map can be provided with an addon.
I've tried, and it seems it is possible to map edit mode numeric keys to slots maually.
That's nice)
So, only object mode map can be provided with an addon.
Also filled star / filled circle system have lower contrast than expected.
Basically, I think that minus/empty circle/filled circle works the best way.
Yes, I was also surprised at how the star performed, and I agree the minus/empty circle/filled circle works the best for subitizing. Because the star is a strong symbol I thought it would be perfect for the active object, but it seems that theory did not hold up in practice :)
The problem is that QCD system is built into Collection Manager, and those systems are needed for different stages and types of work.
QCD system is needed for complex modeling, to handle limited dynamic context with quick access, while Collections management is needed for final complex scene setup, to handle unlimited static context.
So there will be a lot of scene setup atrists, like visualizators, that will never perform multiref modeling, and they may not like hotkeys autoreassigning.
Personally, we will use slots keys a lot, even in edit mode, like in 2.7.
I've tried, and it seems it is possible to map edit mode numeric keys to slots maually.
So, only object mode map can be provided with an addon.
Currently the keymaps are only added to object mode by default. I hadn't thought about adding them to other modes, but I guess it makes sense. From what you've said above it's probably best to provide a preference to completely disable QCD, both hotkeys, and UI. Or are you only worried about hotkeys in edit mode?
I've added a custom shorter minus icon to the header widget and fixed some bugs with undo.
> Also filled star / filled circle system have lower contrast than expected.
> Basically, I think that minus/empty circle/filled circle works the best way.
Yes, I was also surprised at how the star performed, and I agree the minus/empty circle/filled circle works the best for subitizing. Because the star is a strong symbol I thought it would be perfect for the active object, but it seems that theory did not hold up in practice :)
> The problem is that QCD system is built into Collection Manager, and those systems are needed for different stages and types of work.
> QCD system is needed for complex modeling, to handle limited dynamic context with quick access, while Collections management is needed for final complex scene setup, to handle unlimited static context.
> So there will be a lot of scene setup atrists, like visualizators, that will never perform multiref modeling, and they may not like hotkeys autoreassigning.
> Personally, we will use slots keys a lot, even in edit mode, like in 2.7.
> I've tried, and it seems it is possible to map edit mode numeric keys to slots maually.
> So, only object mode map can be provided with an addon.
Currently the keymaps are only added to object mode by default. I hadn't thought about adding them to other modes, but I guess it makes sense. From what you've said above it's probably best to provide a preference to completely disable QCD, both hotkeys, and UI. Or are you only worried about hotkeys in edit mode?
I've added a custom shorter minus icon to the header widget and fixed some bugs with undo.
[Collection_Manager_QCD_test_v2_9_7.zip](https://archive.blender.org/developer/F8401953/Collection_Manager_QCD_test_v2_9_7.zip)
I think the best option is provide the ability to disable QCD completely, including gui and object mode keys, and do not influence edit mode keys since there is no problem to set them manually, if they are needed.
Its operator is pretty much easy to setup, so I am not worried about edit mode.
But can they be disabled independently, as two checkboxes, for example, where gui checkbox influences keys checkbox availability? I know people that uses QCD as gui only, for keeping stuff around, and they were asking for this.
Personally, we will use it at full throttle, including edit mode manual setup. The only thing we need about edit mode is to keep slots that contains edited objects turned on during slots switching.
I think the best option is provide the ability to disable QCD completely, including gui and object mode keys, and do not influence edit mode keys since there is no problem to set them manually, if they are needed.
Its operator is pretty much easy to setup, so I am not worried about edit mode.
But can they be disabled independently, as two checkboxes, for example, where gui checkbox influences keys checkbox availability? I know people that uses QCD as gui only, for keeping stuff around, and they were asking for this.
Personally, we will use it at full throttle, including edit mode manual setup. The only thing we need about edit mode is to keep slots that contains edited objects turned on during slots switching.
Update for Master.
Added an isolate tree feature. This allows you to shift-click on an expansion operator (the little triangle) and it will collapse all other collections except for that collection, and its parents. It leaves the descendants unchanged. Expand/collapse all sublevels has been moved to ctrl-click. Collection_Manager_v1_10_0.zip
Update for Master.
Added an isolate tree feature. This allows you to shift-click on an expansion operator (the little triangle) and it will collapse all other collections except for that collection, and its parents. It leaves the descendants unchanged. Expand/collapse all sublevels has been moved to ctrl-click.
[Collection_Manager_v1_10_0.zip](https://archive.blender.org/developer/F8402933/Collection_Manager_v1_10_0.zip)
I think the best option is provide the ability to disable QCD completely, including gui and object mode keys,
But can they be disabled independently, as two checkboxes, for example, where gui checkbox influences keys checkbox availability? I know people that uses QCD as gui only, for keeping stuff around, and they were asking for this.
Okay, I'll add an option to disable QCD completely and a sub-option to just disable the hotkeys.
The only thing we need about edit mode is to keep slots that contains edited objects turned on during slots switching.
I'll see what I can do to make this possible.
> I think the best option is provide the ability to disable QCD completely, including gui and object mode keys,
> But can they be disabled independently, as two checkboxes, for example, where gui checkbox influences keys checkbox availability? I know people that uses QCD as gui only, for keeping stuff around, and they were asking for this.
Okay, I'll add an option to disable QCD completely and a sub-option to just disable the hotkeys.
> The only thing we need about edit mode is to keep slots that contains edited objects turned on during slots switching.
I'll see what I can do to make this possible.
In #69577#890255, @Imaginer wrote:
Update for Master.
Added an isolate tree feature. This allows you to shift-click on an expansion operator (the little triangle) and it will collapse all other collections except for that collection, and its parents. It leaves the descendants unchanged. Expand/collapse all sublevels has been moved to ctrl-click. Collection_Manager_v1_10_0.zip
A very nice feature)
I like the consistency it brings to a long lists handling.
Okay, I'll add an option to disable QCD completely and a sub-option to just disable the hotkeys.
Thank you! Maybe defaults should be GUI is on (to show that we have it) and keys are off (so as not to interfere with user settings)
I'll see what I can do to make this possible.
That would be nice, because, unfortunately, edit mode is not a protection for a collection to be turned off anymore.
It can make troubles, for example, for searching suitable references, located in different slots, or LOD states comarisons, because allow to loose an actual setup.
> In #69577#890255, @Imaginer wrote:
> Update for Master.
> Added an isolate tree feature. This allows you to shift-click on an expansion operator (the little triangle) and it will collapse all other collections except for that collection, and its parents. It leaves the descendants unchanged. Expand/collapse all sublevels has been moved to ctrl-click.
> [Collection_Manager_v1_10_0.zip](https://archive.blender.org/developer/F8402933/Collection_Manager_v1_10_0.zip)
A very nice feature)
I like the consistency it brings to a long lists handling.
> Okay, I'll add an option to disable QCD completely and a sub-option to just disable the hotkeys.
Thank you! Maybe defaults should be GUI is on (to show that we have it) and keys are off (so as not to interfere with user settings)
> I'll see what I can do to make this possible.
That would be nice, because, unfortunately, edit mode is not a protection for a collection to be turned off anymore.
It can make troubles, for example, for searching suitable references, located in different slots, or LOD states comarisons, because allow to loose an actual setup.
Update.
Finally committed this to master with a few improvements:
More consistent QCD slot editing.
Fixed bug with objects not being removed from non-QCD collections when moving to a QCD slot.
Initial attempt at saving QCD slots to blend files (works but will probably change in the future and be non-backwards compatible with this)
There are still some improvements to make to the QCD system, but now that it's in master there should be lots of time to make them, and I will hopefully be able to get a couple non-QCD related features in too. Collection_Manager_v2_0_0.zip
Maybe defaults should be GUI is on (to show that we have it) and keys are off (so as not to interfere with user settings)
I think it would allow easier discovery of the hotkeys if they're on by default. If users don't want them it will be easy to turn them off.
Update.
Finally committed this to master with a few improvements:
* More consistent QCD slot editing.
* Fixed bug with objects not being removed from non-QCD collections when moving to a QCD slot.
* Initial attempt at saving QCD slots to blend files (works but will probably change in the future and be non-backwards compatible with this)
There are still some improvements to make to the QCD system, but now that it's in master there should be lots of time to make them, and I will hopefully be able to get a couple non-QCD related features in too.
[Collection_Manager_v2_0_0.zip](https://archive.blender.org/developer/F8409454/Collection_Manager_v2_0_0.zip)
@1D_Inc
> Maybe defaults should be GUI is on (to show that we have it) and keys are off (so as not to interfere with user settings)
I think it would allow easier discovery of the hotkeys if they're on by default. If users don't want them it will be easy to turn them off.
In #69577#891782, @Imaginer wrote:
Update.
Finally committed this to master with a few improvements:
More consistent QCD slot editing.
Nice! That's just awesome news)
Fixed bug with objects not being removed from non-QCD collections when moving to a QCD slot.
Yes, it is important, since QCD numeration can be assigned manually for sending objects to a specific slot from any collection in a scene)
This will allow you to quickly clean complex scenes.
Initial attempt at saving QCD slots to blend files (works but will probably change in the future and be non-backwards compatible with this)
That's actually intersesting how it is organized. Are they stored as numeration to some kind of a custom data?
There are still some improvements to make to the QCD system, but now that it's in master there should be lots of time to make them, and I wi
{F8771884, layout=inline}{F9263928, layout=inline}
Location — 3D View (Object Mode)
Menu Location — Object->Collection->Collection Manager
Shortcut — M
BlenderArtists feedback thread:
https://blenderartists.org/t/release-addon-collection-manager-feedback/1186198
Workflow Video by @1D_Inc
https://www.youtube.com/watch?v=yiti0xWO7Wg
Latest Zip Downloads:
(minimum required blender version: 2.80)
Present in Blender 2.93:
Collection_Manager_v2_21_3.zip
Current Development (will go into Blender 3.0+):
Collection_Manager_v2_23_1.zip
Overview of Current Features:
Modifier Shortcuts:
Expansion Operator:
LMB - Expand/Collapse sub-collections.
Ctrl+LMB - Expand/Collapse all sublevels
Shift+LMB - Isolate collection tree.
Alt+LMB - Discard history.
Set Object Collection Operator:
LMB - Move object(s) to collection.
Shift+LMB - Add/Remove object(s) to/from collection.
Local RTOs:
LMB - Toggle collection RTO on/off
Shift+LMB - Isolate collection RTO/Restore previous state.
Shift+Ctrl+LMB - Isolate collection RTO leaving children unchanged/Restore previous state.
Ctrl+LMB - Toggle collection+children RTOs on/off.
Alt+LMB - Discard history.
Remove Operator:
LMB - Remove collection.
Ctrl + LMB Remove collection+children. (Not Yet Implemented)
Global RTOs:
LMB - Enable RTO for all collections/Restore previous state.
Shift+LMB - Invert RTO state for all collections.
Shift+Ctrl+LMB - Isolate Collections of Selected Objects. (2.92+ Version Only)
Shift+Alt+LMB - Disable Collections of Selected Objects. (2.92+ Version Only)
Ctrl+LMB - Copy/Paste RTO state from/to all collections.
Ctrl+Alt+LMB - Swap RTO states for all collections.
Alt+LMB - Discard history and copy/swap states.
Renumber QCD Slots:
LMB - Renumber the QCD slots from the slot designated 1 (breadth first)
Alt-LMB - Reset numbering and start from the beginning.
Ctrl-LMB - Switch the renumber pattern to linear.
Shift-LMB - Constrain renumbering to a branch.
(All options can be combined with each other)
QCD Shortcuts:
Move Widget:
V - Open move widget.
LMB - Move object to slot.
Shift+LMB - Add/Remove object to/from slot.
0-9 - Move object(s) to slot from 1 to 10 (0 = 10).
Alt+0-9 - Move object(s) to slot from 11 to 20 (0 = 20).
Shift+0-9 - Add/Remove object(s) to/from slot from 1 to 10 (0 = 10).
Shift+Alt+0-9 - Add/Remove object(s) to/from slot from 11 to 20 (0 = 20).
3D View:
0-9 - View QCD slot from 1 to 10 (0 = 10).
Alt+0-9 - View QCD slot from 11 to 20 (0 = 20).
Shift+0-9 - Toggle QCD slot view on/off from 1 to 10 (0 = 10).
Shift+Alt+0-9 - Toggle QCD slot view on/off from 11 to 20 (0 = 20).
Shift+= - Enable All QCD Slots.
=
- Isolate Collections of Selected Objects.-
- Disable Collections of Selected Objects.Shift+Alt+= - Disable All Non QCD Slots.
Ctrl+Alt+= - Disable All Collections.
Shift+Ctrl+= - Select All QCD Objects.
Alt+= - Discard QCD History.
H - Disable selected objects. -- If enabled in the preferences. (2.92+ Version Only)
Shift+H - Disable unselected objects. -- If enabled in the preferences. (2.92+ Version Only)
Alt+H - Restore disabled objects. -- If enabled in the preferences. (2.92+ Version Only)
3D View Header Widget:
LMB - View QCD slot.
Shift+LMB - Toggle QCD slot view on/off.
Ctrl+LMB - Move object(s) to slot.
Ctrl+Shift+LMB - /Add/Remove object(s) to/from slot.*Alt+LMB -*Select objects in slot.Ctrl+Shift+LMB - /Add/Remove object(s) in slot to/from selection.
3D View Header Widget - Quick View Toggles:
LMB - Enables all QCD slots.
Alt+LMB - Discard QCD slots history. (2.92+ Version Only)
LMB+Hold - Pops up a menu with all of the Quick View Toggles.
{F8424226}(Passive objects are objects that are selected but not active.)
Planned Features:
Potential Planned Features:
Glossary:
Chaining: Dependent on parents for whether an RTO can be active.
LMB: Left Mouse Button.
QCD: Quick Content Display.
QVT: Quick View Toggles.
RTO: Restriction Toggle Option.
RTO Short Forms:
EC: Exclude Checkbox. (Excludes the collection from the current view layer -- affects both 3d viewport and render -- non-chaining)
SS: Selectability. (Disables selection for the collection in all view layers -- affects 3d viewport -- chaining)
VV: Visibility. (Hides the collection from the current view layer -- affects 3d viewport -- chaining)
DV: Disable Viewports. (Disables the collection in all view layers -- affects 3d viewport -- chaining)
RR: Renderability. (Disables the collection from being rendered in all view layers -- affects render -- chaining)
HH: Holdout. (Masks out the collection from the view layer -- affects render -- non-chaining)
IO: Indirect Only. (Makes the collection only contribute indirectly (shadows/reflections) to the render for the current view layer -- affects render -- non-chaining)
Original Concept:
This is a collection manager that I created for my larger addon Advanced UI Menus (https://blenderartists.org/t/addon-advanced-ui-menus/592865). I believe I read somewhere that blender was looking for a better way to work with collections in the 3D Viewport; so, this is my solution to that problem.
This addon provides a popup window that includes a treeview (made out of a UIList and operators) with functions to add collections and subcollections, rename collections, move objects to collections, exclude collections, restrict selection on collections, hide collections, and remove collections. It correctly handles collection chains and allows you to isolate collections by shift-clicking, and you can move objects to multiple collections via shift-clicking as well. The addon will also show you what collections are visible and what collections the selected objects are in. In addition it will not allow objects to be removed from all collections entirely. All of the functionality is documented by tooltips, so if you open the collection manager and just hover over stuff you will be able to easily learn all of it's advanced functionality. And as a final note, the window will size itself based on the depth of collections so nothing gets squished.
Collection_Manager.zip
Added subscriber: @Imaginer
Added subscribers: @WilliamReynish, @BrendonMurphy
hi, this looks quite good, I'll test it out shortly :)
@WilliamReynish is this something you would be interested in?
Added subscriber: @1D_Inc
Well, Brendon, nice to see you are interested in solving an issue, thank you for invitation.
We are really appreciate that!
But there is a problem - to solve the problem, you need to determine exactly what the problem is.
This is not a “discomfort”, it is complete workflow problem and includes several issues that allow to perform complex work processes of a certain type in Blender, inaccessible to any other software.
Deep historic restoration relates to that workflow type, so several museums, like Smithsonian and Hermitage are currently involved in negotiations about multiple issues of complex workflows in 2.8
This solution, (like Pablo Vazquezwidget ) seems to solve nothing of them.
Sorry.
If to speak in collection management terms, without special workflow context - it feels much better than default.
We love ability to filer name - this is what we consider necessary by default for scenes that can easily contain thousands of collections.
It works only for disclosed paragraphs, so don't allow to find a collection in entire scene (like materials filtering does), but filtering idea it is a very nice step!
Also we love solid design of it. It is looking good, and handy. A good job!
It's UI confidently holds up to 7 levels of enclosure, and this is pretty much enough for most of cases. Default solution provides better unlimited capacity, but in a less presentable way.
Don't know if window resizing can solve that, it will also have a limit, so it is a usability solution vs capacity solution issue.
Isolating ability by pressing shift+hide (eye) button is also nice idea, but the problem is that it doesnot restores previous setup on second click.
There are several ways to view everyting in blender, but switch back to previous setup requires undo (which is dangerous and need accuracy) or managing View layers (which is long way, and also needs accuracy).
So there is no way currently to quiclky check up what is in some collection, and return to previous configured state, which is quite critical since there are dozens of them, and their content needs for attention.
Same thing for exclude collection checkbox .
Also would be nice to have "Restore on exit" checkbox, that will bring ability to eliminate all changes on window closing, like AutoCAD LAYWALK function's window have.
It also have numeration addressing broken, so M5 shortcut to send object to collection, visible by pressing 5 is also not working yet. We call this "M5" issue.
It is essential for creating temporal layouts, raking tons of unnamed items from imported scenes, or quick separation of exact contexts in complex projects.
Finished editing post. Sorry about my english, it is foreign for me)
Hi @1D_Inc I'm the creator of the Collection Manager addon. Thank you for the compliments.
This addon was designed with artists in mind, not deep historic restoration; however, since it sounds like the Collection Manager is close to what you are looking for, maybe I can work with you to improve it to accommodate your workflow.
First off the window will size its width to fit the collections accumulated depth, but blender does not allow it to do that while the window is open. If you manually add more child collections than the width will comfortably accommodate it will start to squish up, but if you close it and open it again, you will find that it has resized its width to fit its expanded contents.
You are correct that the second shift click does not restore the previous state, but enables all collections. It would be easy to make it restore the previous state, and would probably make more sense to do so. If no one objects to this behavior, I will implement it. If it does get implemented I will probably add a button to enable all collections at the top, The same goes for hiding.
I'm not familiar with AutoCAD, so I don't know about "Restore on exit". If you can describe it to me more in depth (what does it restore exactly? Visibility? Collections select status? New/deleted collections undone? Something else?), I can see about adding it.
I have no idea about this "M5" issue and I don't know if it's a problem with blender or my addon. If you can describe it in more detail I would be willing to see if something can be worked out to fix it.
The filtering is a byproduct of using a UIList. I didn't even expect it to get used (which was probably naive on my part). That said, I think there may be more that could be done to improve it. Again, if you can describe what you want in more detail I may be able to implement it.
You were right when you said that "To solve the problem, you need to determine exactly what the problem is." I don't know what the problem is. But if you are willing to explain it, I'm willing to try to solve it.
Hi! Nice to meet you)
Of course, a lot of things are designed for average workflows) It's whatever.
Average don't need all those proper tests with timings, actions per second, perception speed and so on.
However, hard workflows design includes averages, but average workflows design can't support hard.
Don't know, what about horizontal scrollbar? Is it possible?)
Well, I thing it would be nice mostly for outliner, as it allows to navigate the scene.
Check up this proposal , it can be interesting and fresh.
It works simple - checkbox allows to decline all visibility changes, that was made since window was open.
When M window closes - visibility changes made in M window has gone.
You can find video about LAYWALK command in Layer Maniphest topic post.
That's easy. Create 5 boxes, put them to 5 collections - press 1 2 3 on top row of keyboard numbers.
You will see that some collection, numbered as 1 2 or 3 is isolated when you pressing number key.
Those 1 2 3 thing are "slots". They are needed for a very important thing, called "Concave workflow".
So, selecting some box and pressing M5 should send that box to collection, that is visible by pressing 5.
Pressing Shift+M, 234 should also add it to collections in slots 2,3 and 4.
That's it)
Well, you already made an "Expand" button, that technically solves filtering issue - so we are already able to find matching pattern is all scene's collections, and even see it's enclosing level. That's good job!)
I guess you understand how useful it will be in 1000 collection's file. I think, it will allow to survive in such files at some point =)
Well, complex systems requires proper proposals and tests.
We've spent a year to define what's wrong with QCD system and how it can be repaired in an easiest way.
We've spent a decade to finally bring proper snap proposal.
You are making a nice job, fixing things at some point you can observe. You are already doing your best)
hi @1D_Inc thanks for the feedback. It's appreciated.
I guess as addons devs we can only do so much until proper decisions and functions are in place. I saw this some time ago with the original layer manager addon by fourmadmen. My argue then for the Layer Manager addon was simple: We don't have this functionality, here's something to help users on the way until it gets built in. It's incredible that it was 10 years ago. https://developer.blender.org/T18565
I'm about to remove the old Layer Manager addon from Blender as it's broken and unmaintained in it's current form. It was with this in mind that I asked @Imaginer to submit his addon here.
I see this as a good opportunity to both examine the new methods and make a reasonable attempt to provide something if needed. No doubt the core devs will come up with a solution and all will be well at some stage. Possibly they may use some of the elements in "Collections Manager" addon, maybe it will be completely different. Here we are providing thought and working concepts.
I would say unless there's anything else planned that we could promote this addon to Addons Contrib for wider testing and feedback in nightly builds some time in the near future. with the aim of supplying functionality until it's built in. Not to replace or be a complete solution to the layers issue. Just as a helper for users who might need or make use of some of the functions early.
Thanks
Added subscriber: @nokipaike
guys, if you can create "the old quick layer visual grid" ... you're riding.
an addon would not bother anyone, and would be very useful to those who manage many models and collections to "catalog quickly"
@1D_Inc
Not to my knowledge; at least I don't think I've ever seen a horizontal scrollbar on a UIList or popup. It would be a good solution, though. Maybe someday.
Yes, it's interesting. I think you've stated most of the points here and it seems like a lot of them will fit in nicely.
Neat post! The situation here is a little more complicated because of the way popups work and because you can add and remove layers, but I think I can come up with something that will satisfy. How about a button to clear visibility changes?
Some of the things in that post are out of the scope of this addon, but I may be able to add some of them into my addon Advanced UI Menus (it's my personal playground for anything that makes blender better/faster UI/Workflow wise)
About M5:
I think I understand, but I'm not sure yet how this can be integrated nicely into the collection manager, so I'll come back to that later after I've implemented some of the other improvements.
Nope! Total serendipity! :)
With the expand button I just thought someone might want to be able to look over all the collections without manually expanding stuff. Now that you mention it, I can see how it and filtering is useful in files with 1000s of collections. And speaking of filtering, I'm not sure where I saw this, but if you want to be able to filter on various collection attributes other than the name I think I could find a way to facilitate that.
@nokipaike
That may or may not fit in with this addon, I'll have to see, but I can always add it into Advanced UI Menus or submit it as a separate addon.
@BrendonMurphy
@1D_Inc has given me a lot of good suggestions for improvement. If it's alright with you I'd like to develop it outside of contrib for a while longer. I feel that I'll have more freedom to make large changes if I don't have to worry about keeping everything really tidy for blender.
Well, at least it will be a nice issue for reasearch)
Good to know. It allows to expand management flexibility drastically, but I think that it mostly fits to outliner, to make Blender 2.8 management better by default.
Thanks) There are multiple realizations of such ability possible. If you will make some, that you can, it can be tested for usability issues. You've got an idea, and this is a good point to start from!
Well, it's also Blender internal problem - M5 is an issue of Quick Content Display system (QCD) integration, that interconnects Autonumeration, Acces system and GUI with workflow semantics, that allow to perform a wide range of constructive workflows, so we are trying to fix it in core.
Lol, that was powerful sensitivity! That's awesome)
Yep, filtering after expand allows to filter everything, filtering works in a wildcard match way, so, basically, it is a very nice solution for managing heavyweight scenes)
I am not sure, that filtering collection attributes is needed, as far as collection's name stands for direct address access, and M filtering provides exactly that.
I am not a supporter of complication unless it is mandatory, so I’d better try to think about it some more.
Widget is also part of proper QCD system. It is related to those complex/constructive workflow problems from my first post.
As it was told, it seems to be impossible to solve it without interconnecting all three parts - Autonumeration, Acces system and GUI, so we really need it, but I agree with you - I don't think, that it can be solved as addon.
At least this particular one.
It is quite simple to solve, but Blender need to have people that performs complex constructive workflows in contact with core development.
I am a concept designer of wide range of tools, so I agree - any kind of research in development is best done in the sandbox, becuse it is hard to predict how deep research will go.
So we are making sandbox development and workflow tests all the time)
Update.
Made changes so that the previous state is restored when collections are un-isolated for the exclude and hide operators (Note: if you manually isolate a collection shift-clicking will restore all).
Added "restore all" operators for exclusion, select, and hide.
I'm thinking maybe it would be a good idea to allow isolation of selection and add in render visibility. Thoughts?
I will continue to implement the other improvements as I have time.
Concerning the QCD system/M5, I don't think it's out of the realm of possibility that an addon could provide a workflow similar to what you describe in your Layer Maniphest post. I may play around with some solutions.
Collection_Manager_1.zip
HI!
A way better, a way more useful! That's next achievement - now we have ability to quickly look through content of set of collections!
You've got a suspicious collection? Now you can check up what is in it - one click in, one click out. A shift-toggle isolation!
However, you can't navigate viewport while window is opened, so it would be nice to have as outliner ability, but I guess you feel how much control it already gives to you)
If you want to send object to some collection - now you can simply check if that collection deserves to accept that object by fast and furious checking it's content. Or find appropriate one by set of simple isolations by that shift-toggling feature.
What do you mean about "manually isolate"? I tried several ways, but can't get it.
Turning off all collections manually except one?
Anyway, Shift-toggling seems to be working great)
First of all, let's us give short names to all that Restriction Toggles mess to make conversation more clean =)
Exclude from layer checkbox - EC
Selectability - SS
Hide in viewport - VV
Disable in viewport - DV
Disable in renders - RV
Holdout - HH
Indirect only - IO
A bit about what we are managing.
I am in doubt about selectability (SS) and Renderability (RV) presence because they are not related to visibility,
but, as far as your addon yet is the only way to check up collection's content by shift-toggling isolation, so their presence can be useful at some point.
Basically, visibility shift-toggling isolation allow you decide if collection deserves turning SS or RV off by checking it's content. And this is good and useful!
There are three ways to control collection's visibility in Blender 2.8 - Exclude checkbox (EC), Hide in Viewport (VV) and Disable in viewport (DV).
We has got just two of them (EC and VV) in Manager™.
And that can be tricky - turning on VV hiding eye will not appear collection's object in viewport, because it can be disabled by DV.
So, turning on VV have to also influence DV, or it is needed to provide DV in manager, or... even both?
Hard to say. But observing and isolation of DV in the same way as VV is also needed, as far as it influences visibility - and requires same type of control.
That's just awesome! You are making a great job, and your progress is astonishing, thank you for this!
I would like also propose some default changes -
Open Manager in expanded state by default. This will allow filtering immediately, and it is easy to collapse if needed.
Remembering it's last expanding state would be gorgeous in case of multiple operations with the same collection, for example sending to same collection 10 different objects one by one, by opening Manager 10 times, and closing it for obtaining viewport navigation.
Make the Filter Field constantly open, since it does not take up much space, only one line. So hiding it does not save much space)
There are solutions in Blender that hides filtering line - for example, in materials list.
But there are the only way in our practice to make list of materials so long, that it's filtering is needed - it is our "All mats to active object" and "Selected mats to active object" scripts, that allow to create entire scene's material library from selected cube to manage materials and copy between scenes. By the way, together with "Mats Unclone", that solves ".001", ".005" mats suffixes, it is a handy solution, that solves all material management issues, but even it's result don't requires filtering so often.
On the contrary, collections are all about long lists of names to filter.
Your filtering is good, so there is no need to hide something that is so good.
I know. That's why we have a long negotiations with core developers about that misconception. So I am not sure if it will be even good for you to spend much time for this.
That's for your consideration.
A bit about Restore buttons naming and behavoiur.
I think your restore buttons also requires for shift-toggling control to be called "Restore" (otherwise, they are "Turn on" buttons).
But it is often needed to look up for entire scene, and go back to setup.
I would like to propose their behaviour in some other way, without shift, taking VV button as example.
I will try to explain:
This way we've got quick toggling switch between global VV=ON and stored VVX setup - so we can observe entire scene and go back to setup just pressing single button. In a toggle way.
2 States GIF:
So next pressing will turn VV=ON globally, and write new VVX to switch between new VVX and VV=ON.
This way we has got ability to reset visibility globally and create new VV layout to switch.
That behaviour will look like this:
5 states GIF:
I think you'll find that if you isolate a collection, close the window, do stuff, open the window again, and shift-click, it will restore the collections to the previous state. 😄
Yep. That one.
Then when you shift-click, it will enable everything.
Excellent idea!
The goal of my addon is to manage collections, not just visibility. Selectability (SS) needs to be there at least to some extent, and given that you make a case for swapping Hide in Viewport (VV) and Renderability (RV) I'm inclined to think that Renderability (RV) belongs in the Collection Manager as well.
As you have stated, this is kind of a mess that blender has given us and I'm not sure what the best solution is to keep things feeling light and quick, but still provide all the needed functionality.
I'll try to figure something out that nicely handles it.
I think it would be better to keep it non-expanded by default, so the user is not flooded with detail. I think I can get filtering to work without expanding, but if I can't, I'll try having it expanded by default and see how everyone likes it.
This is tricky because the window will close if you move the mouse out of it (so it's very easy to make mistakes), even if I change the popup window to not close until you click outside of it (unfortunately this adds a giant useless ok button at the bottom) the usability doesn't get much better because neither allows you to interact with the 3D View. The same problem would exist for a simple operator; however, if I make an operator where the first click saves the visibility/selectability? (need to decide what this should affect) and the second click restores the saved state, that might work. It's not an ideal solution, but it would provide consistent results and allow interaction with the 3D View. Thoughts?
I think I can do that 😄, but unfortunately I don't think I can restore where you had scrolled to. Note: this will make the above point about initial expansion state mostly inconsequential.
Sure. I hid it first because I didn't originally think it would get used, and I didn't know if it would work properly; since this is not the case I'll try having it open by default.
Yes and no. The outliner provides a right-click menu that allows you to perform some actions even if you haven't enabled that Restriction Toggle and it allows easy enable/disable of Restriction Toggles; mine doesn't.
If I provide a way to enable/disable the Restriction Toggles from the Collection Manager then it might make sense to do that, however I would like certain things to be available by default, so I'm not sure if that's viable or not. I'll play around with it.
This sounds like good functionality. But I'm not sold on the highlighting and the highlighting may get out of sync with the outliner, so I'll have to see.
Well, we are in the research development now, so we can freely create any experimental solutions, including overloading the user interface for testing purpose, in order to subsequently achieve minimalistic design by refactoring.
Also, as far as we are addon, we are not obliged to be synchronized that tight with the outliner.
This provides an additional degree of freedom at that point.
Still thinking...
I guess, first it can be "quit without saving changes" prototype button called "Restore Quit", placed somewhere, that will allow to feel the behaviour and test it.
It is hard to say how much useful it can be without having such prototype to test.
Update.
Fixed top row of buttons so all of them toggle between all enabled and restore to what you had. This should implement everything for that, except the highlighting.
Added a way to show hide the restriction toggles (just like in the outliner, but it isn't synced to the outliner).
Added restriction toggles and their all enabled / restore toggles above, so now the possible restriction toggles include:
Exclude from layer checkbox - EC
Selectability - SS
Hide in viewport - VV
Disable in viewport - DV
Disable in renders - RV
*note shift clicking works on all the restriction toggles
Expanded state is now remembered
Filtering is shown by default.
Filtering will now work regardless of what is expanded.
Added basic View Layer manipulation including: enable view layer for rendering, switch view layer, rename view layer, add view layer, remove view layer.
The reason I added View Layers is because excluded status depends on view layer and I found setting up compositing in a sane manner to be a complete pain, now it's much easier 😄
Yeah, the "quit without saving changes" button is a tough one. I'll probably tackle that next.
Collection_Manager_2.zip
Mein Gott, you made it, and das ist gorgeous!
Now we can observe scene and restore what we had just in a few clicks, to compare what is visible with entire scene!
It is incredibly powerful and flexible now with shift-toggling isolation ability, that allow to observe single collection's content))
A bit about what we've done. Here is simple picture.
There are 3 main states possible for any Restriction Toggles Option during scene setup.
By default, in Blender, it was too easy to lose the current setup in order to see the contents of one element or to see the whole scene.
So we made that actions reversible (as toggles), protecting current setup from being lost, providing an additional degree of freedom to scene setup process, which gives us full control over it.
Let's call them isolation toggle (shift-clicking isolation on icons) and enabling toggle (clicking on turning everything buttons)?
I think that's good decision at this point, since View layer became an essential part of scene setup, and your addon allow to overview such setups in way more flexible way.
It is not clean what "enabled of disabled rendering on this view layer" checkbox influences, or maybe I'm lost in the interface to find what it is related to.
Currently I've spotted that enabling toggle ignores nesting elements for EC, other Restriction Toggles Options (RTO?) seems to behave ok.
I need time for testing, but I'm so glad that we already have so much control)
By the way, I wonder if you like what we got.
Are these features useful for your workflow?)
That checkbox controls whether the view layer will be rendered when you do a render or press F12.
Let's say you have a scene with two collections and you want them in separate View Layers for compositing, you have to isolate them in each View Layer, but now you can't see your entire scene. So you make a View Layer that shows you everything, but you only need it in the viewport, not for the final render (and you don't want the added render time). So now you can easily disable rendering of the View Layer with that checkbox (you can also find that checkbox in the View Layer Properties tab under the View Layer panel in the Properties Editor).
Yeah, it seems that's because of the way blender automatically changes children when you exclude/un-exclude. To fix it I had to have it loop through in reverse order when making the restore point and then reverse the history so it would be in the correct order for the actual restore. Thanks for finding this.
I also found and fixed a couple other bugs relating to the enabling toggles and I've tentatively added the highlighting.
Let me know if I've introduced any new bugs or regressions :P
I'm very happy with what we've got. Thanks for asking 😄
I think these features will be useful to everyone's workflow, but yes, I can see myself using many, if not all, of them.
Collection_Manager_3.zip
Removed subscriber: @WilliamReynish
Got it, found it! A wise solution)
Yes, EC enabling toggle work awesome now.
It is very useful, as EC seems to be the only way to check single collection's content regardless of it's nesting level.
Highlighting is also great - now we can be sure what RTO's was turned on manually in order to observe their content, reducing chances to lose initial setup.
I don’t know how tricky it was to do it, but I'm glad you nailed it!
Completely agree. That's just gorgeous.
It seems that our work has the same level of complexity, which allows us to observe problems on the same wavelength, this is a rare luck in development.
Thank you for this)
Slight Update.
Fixed a regression with the enabling toggles where you couldn't look around the scene without losing the history.
Collection_Manager_4.zip
hi, I think we need to expose this to more people. I would suggest we promote this to addons contrib tpo expose to a greater number of people and gain more feedback.
@Imaginer your free to add this to contrib. thanks for the hard work your putting into this.
I'm happy with the maturity that this addon has attained, and so I've added the Collection Manager to the addons contrib repo, per @BrendonMurphy's suggestion, and created a blenderartists page for additional feedback from the community https://blenderartists.org/t/contrib-addon-wip-collection-manager-feedback/1186198. This doesn't mean I've forgotten about the feedback and suggestions here and I still intend to continue development as usual. For now here's a new picture in case anyone's interested, but hasn't downloaded it yet. The current plan is to start experimenting with the "restore on quit" feature next.
Added subscriber: @MetinSeven-1
A small organizational request.
While I with python developers working in sandbox, we keeping version numeration, and also providing some short latest update description in commented section.
For example, 1D_Scripts header for 0.10.22 version:
Can we have version numeration? It is very useful for testing.
For example, I've got that ignoring nesting EC behaviour also for isolation toggle, trying to investigate it in previous versions, but all of them are displayed as 1.0, (not, for example, 1.0.4), so it is hard to be sure what version I am currently running)
Removed subscriber: @MetinSeven-1
Sorry about that. This was taken from a larger project and I completely forgot about version numbering. I'll start increasing the version numbers :)
I'm not keen on having the history at the top of the init file though, it's already got a gpl license header and I find files that start with a huge comment section are hard to read. If it's found absolutely necessary I'll add it, but it's in contrib now so any changes from now on will have git logs.
Thanks)
Yes, we are making history header because our toolsets are multytools in single python file, so it was necessary for understanding what tool was made or fixed in downloaded file.
Git logs are ok for Bollection manager case)
So, it seems isolation toggle also have EC nesting issue, that was fixed in enabling toggle.
Keeping testing.
A question - can you fix EC issue for isolation toggle? I can try to make a video about addon's functionality after that.
I think so. I had tested it a while ago on a simple case and it seemed to work fine, but after your last comment I tried it on a more complex setup and I think I see the bug. So far I have left the EC toggle with the same behavior as in the outliner, but it's proving to be a real pain so I'm going to override the default behavior and make sure that only the checkbox you click on gets activated/deactivated. The default behavior also makes it harder to tell if there are bugs, so that's another reason I'm trying the override.
A video would be awesome! Thanks!
I haven't had much time to work on this in the last little while, but I did implement a suggestion from the blenderartists feedback thread and found a bug in blender's python api in the process. Bug report is here: https://developer.blender.org/T71112
So the next update will have the new feature from blenderartists and then the one after will have a fix for the EC issues.
Update.
Changes:
New collection is selected on add.
Remove collection button has moved to the far right side.
Collection_Manager_5.zip
Update.
Changes:
Hopefully fixed the exclusion toggle's behaviour.
Added the shortcut to the location in bl_info.
Collection_Manager_6.zip
Yes, seems to be working properly now!
I will think about how to demonstrate such features. I guess it will require some complex scene setup.
Thanks)
Great!
Update.
Changes:
Sync UI List selection to active collection.
Fix bug with operators and the undo stack.
Collection_Manager_7.zip
Update.
Added a new "Phantom Mode" to mimic the "Restore on quit" functionality requested by @1D_Inc.
Note: I've put in some safeguards, but it may still be able to get out of sync and do weird stuff if you make changes outside the collection manager while in phantom mode.
Collection_Manager_8.zip
Sounds nice!
Meanwhile, I've spotted that collection filtering works in case-sensitive mode.
For example, "Rim" and "rim" are different search requests.
Can it be changed to non-case-sensitive?
Also, an interesting implementation of a Phantom mode)
I will test it)
I'll look into the case-sensitive filtering. What's your OS, and do you know if your file system is set to be case-sensitive or case-insensitive?
I am not sure that this is OS-dependent.
I use Linux Mint, Arch and and Win 8.1
Testing on Mint
I'm pretty sure it is OS-dependent. See blender has a helper function for filtering by name, UI_UL_list.filter_items_by_name, which internally uses python's fnmatch.fnmatch, and that internally uses os.path.normcase to normalize the string. But here's what's in the documentation for os.path.normcase:
https://docs.python.org/3.7/library/os.path.html#os.path.normcase
So I believe it's case insensitive on Windows, but case sensitive everywhere else. (I'm pretty sure I tested it on Win 8 and it's insensitive. I mainly develop on Arch).
Also, I think blender follows the OS for case sensitivity, so I'm doubtful blender will want to change this.
The good news is that UI_UL_list.filter_items_by_name is pretty simple and I can just re-implement it to be case-insensitive.
So do we want to enforce case-insensitivity everywhere?
Wow, that OS-dependency was completely unexpected)
Well, Blender already use such insensitivity everywhere, and it works pretty much well.
Also, Collections works in a static context, collections filtering is used to navigate in a static context, which means that the semantic meaning of a word to filter is more important than its spelling.
If we need to find, for example "house"-related items, we will be interested in any of them, regardless of the way they are written - this way we are filtering not for just regular string (set of characters), but for a context.
So, yes, I think case-insensitive systems work better for the contextual (high) level of abstraction.
I know, right?
Update:
Fixed a bug with filtering where it wouldn't pick up a name change until after you closed and recalled the popup.
Made filtering case-insensitive.
Collection_Manager_9.zip
@1D_Inc Interesting UI tweaks by Bookyakuno over on blender artists: https://blenderartists.org/t/contrib-addon-wip-collection-manager-feedback/1186198/21 (a second version is a couple of posts down).
I'm thinking it might be a better idea to combine all the buttons on the row under the view layer like Bookyakuno did (although ordered more like the second version), but as to the collections in the UIList I think it would be better to keep all the visibility controls next to each other in a group. And I'm not sure that displaying the number of objects in a collection is actually needed, or at the very least it needs to be more explicit telling the user what that number represents.
Thoughts?
I think it is too early to compress the interface. It looks weird.
Your design is now more understandable, accurate and consistent.
Interesting, that he puts VV visibility on left side. This isstructural display misconception
Here are our RTOs (restriction toggle options)
About ability to place some of them in vertical linear column:
Also, does Bukyakuno's design just seem to ... duplicate the outliner?
We don't have a goal to "put proper outliner to M button", so we are "asking for proper outliner" and "making collection management addon".
I'm currently busy with global proposal about Collections and QCD content management systems .
How to define if outliner is designed properly? It's simple - the more proper the outliner, the easier CM addon will be.
Currently CM addon is prety much heavyweight, but this means that we are solving too much problems, left over core development.
Wouldn't it be better to ask core developers just to finally make a proper outliner rather than persistently making our own?
In the end, we are all interested in allowing Blender to be used out of the box)
I was mostly thinking about just moving the add collection operators and phantom mode operator to the top bar and condensing it like this (not touching anything else layout wise):
This would reduce the amount of vertical space used and maybe make it feel a bit cleaner, but if you think it's to early for that I'll leave it as is. The other thing I was considering is the greying out of collections when they're hidden in the viewport.
Now that you mention it and compare them directly, I can see a lot of similarities.
No, I'm definitely not trying to replace the outliner with this, but by the same token, a proper outliner wouldn't negate the need for a collection manager. And yes, the less hoops I have to jump through to get the functionality I want in the CM addon the better.
Well, if we are faced with the need to almost completely copy the outliner into an addon for convenient collection management, this proves that the collection management system in the Blender has serious problems.
We have got very good solutions to problems in the course of research that deserve implementation at a core level. I think your development deserves that.
As for the addon, this will greatly facilitate it, allowing you to get rid of at least the phantom mode. We'll see.
I think it’s worth a try, so I will take on this task.
Another task to solve.
While working with complex scenes here is a problem to define what is hidden in order to manage and observe hidden content.
We has got RTOs buttons, that allow to temporairly show entire content of a cathegory via single LMB click.
Is it possible to make another behaviour for Shift+LMB click to invert current cathegory state?
Here is a picture:
I know that it can be tricky for VV and DV, since they are structure dependent, but any kind of invertion implementation will make it possible at least to test such a solution.
I think so; it should be fairly easy. I'll take a look at it soon.
That would be awesome! Thanks)
An else one feature, that can be interesting.
Filtering by name gives us strong static contextual separation. I think, dynamic contextual separation support is also needed.
That means, that it would be nice to have ability to filter collections by selection (the "Filter Selected" button) to review the list of collections that contains current selection. Expand/Collapse button resets filtering.
Nice example - select all objects that forms car, filter list by selection to be sure that all selected objects belongs to car-related collections, review content of non car-related collections if filtered list has got some.
Filter collections by selection should be possible, but I'm not sure about having the Expand/Collapse button reset filtering. I'll look into this too.
Yes, that's one can be doubtable, but this is only an assumption.
There have to be some ability to reset selection filtering, it can be a second click on "Filter Selected" button, which makes this button work in toggle mode with blue highlighting.
By the way, I noticed that this cross does not clear the filter field.
Can you confirm?
I like this idea better. It'll be more in line with official blender if I add a toggle button to the right side of the filter bar.
Yes. I've noticed that too. But it seems to work on other UILists, so I'm not sure if it's a blender bug or if I'm missing something in my code. I've also noticed that filters on things like vertex groups or materials update immediately, but mine only updates after you press enter.
Update.
Changes:
Added full view layer support to restoration/isolation toggles and refactored their histories to facilitate this. (Ironically, blender seems to have a bug in 2.81 with view layers and toggles)
Fixed a bug with histories not being properly saved/restored in some toggles.
Added invert functionality to the restore toggles when you Shift-Click.
Updated Tooltips to be more consistent and explanatory.
Collection_Manager_10.zip
Aww, that's amazing!
I alredy like it)
I love how clean the result is from the inversion of structurally independent EC operations.
But it looks like I missed some control clarity - we has got Shift action for isolation ability, it is easy to remember, but inverting ability is a separate type of behaviour, that is not perceived as an "alternative shift operation".
So, maybe it will be better to set Control instead of Shift modifier on inverting ability, I will try to investigate whether my premises are reasonable, based on amount of mistakes I will make during tests.
Meanwhile we are trying to investigate why Collections are so hard to manage by default.
In fact, to depict that fact to make it clear, to see the essence of the problem.
We said earlier that there are too many RTO options per se, so I tried to make a scheme of their typing and relationships.
And yes, here we go (I also decided to rename RV to RR):
From a business point of view, any management system is characterized by at least two parameters
The dependence is almost linear - the simpler the system, the more effective its management, and on the contrary, the more flexible the system, the more complex and multi-level management it requires for effective circulation.
It also directly, through speed, affects the amount of product produced.
As far as I can tell, when creating the Collections system, the main task was to provide for the maximum possible flexibility of the system.
Flexibility was taken as the only good, but such a rating system is somewhat far from practical.
This is why we have never encountered such complex systems in other software, and therefore we need an effective collection management system.
That is the reason we are here.
I wouldn't worry too much about using Ctrl/Shift, they're just modifier keys. If we had it so that you did Shift for EC and Ctrl for VV then that would be bad, but they're used consistently within they're own little groups. I'm also thinking that I'll add an Enable/Disable All Children function to the isolation toggles using the Ctrl key. Currently blender does that by default for EC when clicking, and while I find they're current implementation annoying, I think it's useful functionality to have.
For sure, nested isolation is needed, but suddenly there is a default outliner collection Ctrl+LMB isolation ability.
It works pretty much weird, as far as it works only for 4 RTO's (marked as dark blue on typing scheme), works as single LMB for EC in inverted way and loses current setup during unisolation, so I thought that it have to be reconciled.
It's a question of unified behavior.
Previously I thought about suggesting it like this:
Thus, the Shift-containing combinations apply to both isolation modes (simple and nesting), Ctrl allows to control entire level, Alt playes negative, alternative role.
But the problem is in differences of stucture-dependent and structural-independent RTOs behavior.
Im still trying to design proper behavior for invert action of VV and DV visibilities, it is hard as they are structure-dependent.
For EC nested isolation is possible in pure form, starting from desired level, so its behavior is nice and predictable.
For VV or DV it will isolate entire collection starting from core, and I can't say it is bad or useless, as it will give ability to observe the entire collection branches.
Since we have three types of visibility control that behaves differently, it is hard to say if it will work properly, or make any kind of predictable design.
It seems, such solutions can be only tested on practice.
What do you think about this?
There were another thoughts about unified behavior - this one don't include Alt, don't contain toggle action for Ctrl, but allow to add or remove some branches to/from current setup (D and E pictures are changed).
I am not sure if it can works similar to current Ctrl+LMB isolation in outliner.
We are trying to design a viable management for a complex system, so here we can easily create a sophisticated system or miss something.
Yes, your second one is what I was planning, current setup plus Ctrl-click turns nested on/off. I hadn't thought of picture C, but it looks useful, so I can look into adding it after D and E.
Here is a dilemma.
If to make it as an isolation (other collections will temporarily turn off), it will make impossible to add/remove nested visibility to current scene setup (outliner-compatible behavior).
If to make it as local nesting control (other collections will stay intact), it will make impossible to check up entire collection's content in toggle way (simple control behavior).
Support for both - more complex shortcuts, or maybe checkbox.
I can't solve this system at the moment.
No, we can't solve these kinds of usability problems in the abstract without implementing ideas, testing them, and then further refining them. I'll put out an initial implementation of the nested toggle and then we can go from there.
As for the collection chains of VV and DV visibilities, I agree, invert is going to be a problem. I forgot about the collection chains when implementing it for those controls. And you're right, their structure makes it hard. We'll just have to try to find a way to make it as predictable and useful as possible, but it may end up not being very useful for those toggles.
I also added invert to SS and RR, and they share the chain problem. I'm not even sure if inverting them would serve any benefit.
Well, okay. In any case, there is only one way to test the solution - practice.
About SS and RR - we are trying to make a solid system, so it may not be effective in all aspects, but it definitely should be predictable)
Chaining and nesting management solutions are always challenging.
I will try to design proper invert behavior for chaining RTOs.
Yeah, sounds good. I'll think on it as well.
After all these dilemmas, I tried to create an action map that could contain all the components for any possible action.
It looks like this, can be interesting to see.
Still thinking about invertion of Chaining RTOs.
I think that this task can't be solved mathematically, so we can't make its behavior better that it is now.
From the usability point of view inverting Chaining RTOs (like VV or DV) gives us an idea of if the scene has visibility disabled root collections, that contains objects, so let it be like this.
Not sure I entirely understand your action map (all I could find with that name was Cathy Moore's business training, which I don't think fits?), but it's sorta interesting.
And if you think the visibility RTOs are good like this for now then I don't mind leaving them, but I don't see any value to inverting things like SS or RR, so maybe we should remove their invert functions?
Also, what's a good ballpark for heavy collection use in a project? 1000? 2000? More?
The problem is to determine possible situations that we may encounter mathematically, determine our opportunities, and prioritize opportunities over possible situations.
In this picture, I tried to collect all the possible options that can be involved in some action with the collection. To map what we basically can do with collections. To define our opportunities.
Inverting is useful for any kind of massive actions, for example to make invisible (unselectable, unrenderable, irradiantive, masking) 490 collections of 500, by setting up 10 collections and inverting scene state.
Inverting SS and RR (and other Chaining RTOs) are useful for linear (unchained) collection structure (a scene of 500 non-nested collections that is easily possible).
We provide predictable opportunities, which gives us confidence that if we encounter such situations, we will cope with them.
There is no need to remove the inversion locally, since it does not conflict with anything, and literally, don't take up space.
We are confidently working with 4000-8000 layers in AutoCAD just daily.
Blender can handle up to 50,000 objects, but with current problems with the default management system, handling even 50 collections can be quite a challenge (got a collection - can't check it's content without losing scene state).
The problem is that the number of collections in projects is growing not because of plan or free will, but because of situation.
Thus, when performing complex projects at some point, the user simply faces the fact of the need to manage hundreds/thousands of collections. Just like in AutoCAD, just like everywhere else.
We are currently working on expanding management limits, so the number of collections for reliable management depends on our success.
I think, if we will be able to handle 200, we will be close to be able to handle any amount, as far as rules will be the same.
The limit of 500 fits into the situation, but it looks like an extreme case.
However, It's like copying 50 assets with 10 collections in each into a single scene. Can’t say that such a situation is far from being possible.
I think we are really missing the ability to clone a View layer.
You make some good points, so I'll leave the inversion alone.
I'm interested in this so that I can keep an eye on how well the collection manager performs under heavy, but realistic, loads. In case you're interested, here is a little script I made to quickly setup thousands of collections to test with. It doesn't have a hotkey so you'll have to call it from blender's operator search menu (just typing 1 should bring it up) or call it from the python console (bpy.ops.view3d.add_thousands_collections).
add_thousand_collections.py
It turns out that collection operations like isolation in blender are currently very slow with 1500 collections in a flat list, but if they're in a nested configuration with each collection only having 5 or 6 children it's much faster.
This seems to be a blender problem, not a problem with my addon.
Blender seems to be having problems with View Layers and their Restriction Toggles at the moment, so I'm going to leave this alone for now. If it's needed, I'll look into adding it when those are fixed and they have more stable and consistent behavior.
Well,
Before entering the boss’s room, the very first desire is to save the game’s progress.
Before editing a complex setup of multi gigabyte scenes containing thousands of collections made by someone, the very first desire is to make a copy of the setup for modifications, leaving the original as a backup.
This is the basic self-preservation instinct for survival in complex projects, kind a strange to hear silence around this)
I almost finished the alpha version of my Collections proposal, I will include view layer copy and perfomance problems in it.
It's nice that we noticed them on time.
Ah! Cloning the View Layer is how you'd save the collections' view state. Good Idea!
But that won't work until the View Layer bug is fixed (see below). I don't want to support it with a hack unless absolutely necessary.
I've also submitted a bug with regard to RT performance for things like isolate and enable all.
View Layer bug report: blender/blender#72084
Performance bug report: blender/blender#72086
Yes)
View Layer concept fits so beautifully there, as if it was created specifically for this by design)
Well, I can see, that some of your reports were claimed as feature request, not a bug.
It's ok, there is the difference in bug detection:
So most of issues that we can face during making CM can be claimed as feature requests.
This is normal, because they are considered from the point of view of the design of the current system, so, at first, we need to offer a system update that will better satisfy massive production needs.
Some issues may require deep core changes, so there must be a deep reasons for this.
That's why I preparing global proposal, that contains complete description of a robust collection management system, that will hopefully clarify the reasons behind the solutions.
Meanwhile, it's nice that you make such reports, they will be useful in any case.
hi, It's time for some decisions.
Do we go with what we have now for Blender 2,82?
Given there's some "Limitations" that may or may not be resolved in the near future or for quite some time, we can document these.
It's easy to add a warning "beta - see preferences" and describe the limitations there.
"May not work with view layer visibility"
"May take time to compute on scenes with over 500 collections when hiding visibility"
It seems some of the issues are somewhat outside of the addon, being limitations in how it can work with Blender's internal structure. These issues are in Blender also without the addon.
So what to do here?
Initially I was looking for a replacement for the older Layer Manager addon. We had this in Blender from 2.4x to 2.7x to fill a gap, improve usability and offer functionality until we moved on to collections.
Now we have CM, offering new functionality and usability that may end up being all we have in this area for 2.8 series. I would like to see it in release sooner rather than later. By exposing CM users will have an opportunity to use this new functionality and provide feedback that may help the future decisions.
Well, I think it is kind a political question in some way.
During CM research we discovered a series of serious issues considering collection management design and behavior at the Blender's core level.
I am currently preparing global Proposal about content management systems in Blender, generalizing all of such issues, it takes almost all time.
This way the Proposal supports CM development and CM proves the Proposal's concepts.
The Proposal's alpha is almost ready, so I plan to launch it next week for consideration by the developers.
Do we have this week?
About feedback - the subject area of the addon is so complex that it took us a whole year only to formulate the basic concepts that need to be satisfied for the needs of massive production.
It is quite difficult to find users who can be involved in production of such a scale to be interested in solving problems of this level, and we still have a nice ideas to realize, that allow to form a solid core of an addon (like filter selected, nesting control, etc).
Anyway, we made a nice progress considering collection management, and we already have realization, that solves some critical issues.
Do you like the solutions that CM provides?
@1D_Inc From what I understand, from talking to @BrendonMurphy in irc, we have until the end of bcon 1 (Dec. 12) to submit it for release, but he would prefer it to be submitted a little earlier (around Monday, Dec. 9) so that it has a chance for a little review.
I'm thinking that we're pretty close to having the basic features for effective collection management implemented, and that what we have would be very useful to people. For me, the only must-have feature for an initial release would be the basic toggle children functionality (which I've implemented, but not pushed yet). Is there any must-have functionality you can think of for a first initial release?
I'm still undecided about whether it should be included in this release, so I look forward to your thoughts and your Proposal. And if it does get submitted, there's still about 8 weeks for polishing and bug fixing just no new features for 2.82. However, we can continue to develop new features here (I'll upload zips), just not add them to the release (I can setup a separate git repo for further development and then include new features for 2.83)
hi. If you can add and push the toggle children function to contrib. thanks.
Both @1D_Inc and yourself have already invested significant time in this. You've both worked well during the design process and showed a willingness to seek and solve issues as best as possible. Currently I believe you have done near as much as is possible to ensure a valid and useful tool. I'm very happy with the results and as discussed in irc, my feelings are we should release with 2.82. It's obvious that your prepared to address any issues over the coming release cycle progression. We can only put forward the best that we can. I'm also aware of the design limitations through no fault of the addon. again, we are putting forward the best we can.
If you can get the final committed to contrib, we can work forward from there.
Hi. I think CM can be commited to the contrib.
Some conditions I would like to propose.
It's better for familiarization, it has a lower entry threshold, also looking good enough. There will be no problems for users to start using compressed version if it will be made in further.
I thought about placing the EC on the left in a straight column, as it is global and non-chaining, but it will not change much, and need/can to be tested later.
It is an experimental behavior, so realization is currently unclear, and it also contradicts default behavior. I'm not sure that we will find the best implementation by the deadline, it will take more time for additional workflow research.
We know that we need it, but we don’t know how it will work best. I would suggest postponing the implementation so that users are not used to a dubious solution. Global shortcuts/behavior is needed to be discused with core devs,
during the discussion of the Proposal. It will also take more time.
I think it deserves attention, because (on my opinion) it can be made to the Dec 9. Are you ok with such a plan?
@BrendonMurphy
Ok, I've pushed the basic toggle children function to contrib. I didn't push immediately because I had been thinking about including another commit in the push, but it isn't finished and I may not include it anyway.
@1D_Inc
It's already in contrib. It's the 2.82 official release we're looking at now :)
Yeah. No arguments there. I do like the compressed version, but that can come anytime.
I think this needs to be in the release. It's behavior matches what's default for EC in the outliner and it's really useful.
This I think is experimental and needs testing and I would prefer to leave it out of the initial release.
I think I can do it. No promises, but I'll try.
Well, okay then)
By the way, here is a picture about how Action map is supposed to be used.
Currently, each action that we have provided or plan to provide can be associated with it as a combination of components.
This does not mean that we must provide all possible combinations - if we have a map, this does not mean that we must visit every village.
This means that we can predict a better route in further.
Update.
Changes:
Add basic toggle children functionality.
Add Filter By Selected functionality.
Collection_Manager_11.zip
It occurred to me that the isolation toggle should be highlighted, the same as the enabling toggle, when there is history to restore. This makes it much clearer what state you are in and will help us to spot any bugs that may crop up with how isolation is handled. Because this is a somewhat large change I wanted to have it tested here before committing, so I'm posting a zip with the changes here.
While testing this I found that the SS RT did not chain properly, so I've also fixed that.
Collection_Manager_Isolation_Highlight_Test.zip
@BrendonMurphy found a bug with phantom mode with the isolation highlight test. Please change line 1169 in operators.py from:
phantom_history[rto+"_history"] = history.get(view_layer,
- [ ]
).copy()to:
phantom_history[rto+"_history"] = history.get(view_layer,
{}
).copy()A very nice idea with highlighting!
Actually, didn't know that this is possible.
Also tried selection filtering. Indeed, it is as useful as I imagined - now we can check the selection for consistency!
I like how it discovers object's cumulativity (if it is placed in several collections).
Definitely love it =)
Replaced my token.
As it turned out, fire here means "Burninate", instead of "Hot!", sorry =)
hi, this is now ready to land.
@Imaginer first remove from contrib, 2nd add to release same as brush menus.
Any issue let me know and I'll commit for you.
Changed status from 'Open' to: 'Resolved'
closing as resolved. any further updates may happen as general maintenance. Major new functions and we can create a new task.
tagging: #71560
Changed status from 'Resolved' to: 'Open'
re-opening as a design task for any future changes and discussions. at the request of @Imaginer
Thanks @BrendonMurphy
Thanks!
The toggles are actually just operators that are icon only (emboss=False), so they can have the same features as any other operator.
Wonderful :)
No problem! I actually didn't know what "Burninate" meant until I looked it up today (for anyone wondering, basically "Kill With Fire").
I had just thought it meant something like "You're on fire!" i.e. doing great, so you learn something new every day.
It seems, I found a bug - disabling Phantom mode removes all RTOs from GUI until new subcollection is created.
Can it be confirmed?
Currently, a Phantom mode is a hack, a "temporal clone of a Vew Layer for modifications" that we made because we can't clone View Layer for modifications legally, because cloning View Layer in a regular way requires some hacks.
@1D_Inc I can't seem to trigger it on my end. From your gif, it kinda looks like it's getting an error around when the exclude checkbox would be drawn and so it cuts off everything after it too. Are there any python errors in a terminal?
Yes and no. Yes, cloning the View Layer and switching to a new "Phantom Mode" View Layer might be a bit easier and more expressive than manually saving it, but all the toggles histories are being saved as well. The real hack with Phantom Mode, and all the histories, is that regular blender doesn't know about them, and so could corrupt their states.
Wow, yes, actually, writing. 2.82, linux mint
Yes) Also, I mean that the ability of making legal clone of View Layer can replace Phantom mode by its scope.
If we will get those changes in API that will allow regular cloning a View Layer, Phantom mode can be realized as a regular rewritable View Layer called "Phantom mode" or, better " CM= [View layer name used as base for creating temporal state]".
We made such a thing for transformation orientations - instead of using default feature that makes a lot of separate transformation orientations, we made an addon that works with single rewritable transformation orientation, called "1DTEMP".
This way will be able to store our temporal view layer data legally.
I think it will be ok to temporairly remove a Phantom mode if it will take too much efforts to make it work reliably, because we can explain the necessity of VLayer cloning feature concept in words.
@1D_Inc Actually, it turns out that bug was already fixed in master, I just hadn't released a new zip yet.
I don't think there's any need for that. It's had a couple small hiccups, but overall I think it's been remarkably stable.
Changes since version 11:
Add isolation toggle highlighting.
Fix bugs associated with isolation toggle highlighting and Phantom mode.
Small cleanup of a missed print statement.
Collection_Manager_12.zip
Installed v12 (1.8.1)
I think, it may be better to name them respestively to direct versions, or maybe both, like
Collection_Manager_1-8-1_v12?
This will allow to see what file is installed)
Phantom mode now don't disable buttons, but disables their functionality.
Launching addon - ok, entering PM - ok, exit from PM - every option is broken and unaccessible, but global RTOs (enabling toggle) are ok.
Update:
Fixed bug with toggle buttons broken after leaving Phantom Mode.
Fixed bug with rto history not being properly restored after leaving Phantom Mode.
@1D_Inc How about this for naming?
Collection_Manager_13_v1_8_2.zip
Yes, now it works nice) Thank you!
Much better! Now we can be sure which version is installed.
Can I ask you to put a BA feedback tread link into description?
https://blenderartists.org/t/release-addon-collection-manager-feedback/1186198
Also, what about Ctrl+Shift respective nesting isolation toggle? Can we give a try?
Done.
Yes. I'll add it to a future dev branch and post a zip here. I can't promise that I'll have time over the next couple days, though. I'll just have to see how things go.
Ok, for sure.
Well, here is a huge problem of a system type definition .
The problem is that Collections system and Layers/QCD are completely different types of systems .
In 2.79 there are only Layers/QCD - so there are only RAM system, that was designed to be a RAM system and works nice like a RAM system, just like any Quick Content Display system (QCD).
The old Layer manager add-on was an attempt to remake RAM system into some limited HDD system, giving static names to dynamic context slots.
You know, sometimes HDD systems in computers are used as a RAM, for swap files, so there was a reverse example, and this is always a compromise solution.
At some point a lot of people started thinking, that Layers/QCD is nothing more than a bad limited HDD system, because they never used it properly - for handling dynamic context during complex multi-referenced modeling in combinational access way, as far as Layers/QCD was the only system for making scene setup - that is completely different goal, that differs from complex multi-referenced modeling.
So a strange thing happened in 2.8 - HDD (Collections) system replaced RAM (Layers/QCD) system, instead of adding HDD to a RAM=)
Here is an explanation between differences of purposes of those systems, and how they are usually combined together.
https://devtalk.blender.org/t/layers-maniphest/6578/115?u=1d_inc
In this topic, we are trying to improve the Collections system so that it better matches its main goal - the complex scene setup.
@1D_Inc Here's the test of nested isolation. It's implemented for all the toggles.
Collection_Manager_future_dev_1_9_0.zip
Oh, yes, it works just awesome)
Now we can isolate not only single collection, but also entire branch, or subbranch of collections in toggle way)
So, we has got the ability to explore collections scene setup in much more deep and flexible way)
Also like shortcuts, I think it was a nice idea to assign simple isolation to Shift+LMB, nested isolation to Shift+Ctrl+LMB, and control nested to Ctrl+LMB.
I tried it, it feels natural, and, on my mind, is pretty much easy to remember, as complex action requires more complex shortcut, and everything, that contain Shift is about isolations.
It also makes me doubt Shift + LMB for enabling invertion, because we are definitely forcing Shift for isolation actions.
That's why I was proposing Ctrl+LMB for enabling invertion. This is not critical, but will look more appropriate in my opinion.
Currently it takes some additional memory to remember, that Shift key modificator behaves differently for local and global RTOs.
Do you feel the same?
Excellent! :)
Good. I agree.
I don't really have a preference. Something else to think about is that currently everything that uses Shift as a hotkey remembers history, while if you Ctrl-Click on an isolation toggle it's a permanent action.
A good point)
I will think about relevancy)
Well, anyway, it seems, we has got free CTRL+LMB shortcut for Global RTOs.
How about to fill it with something breakthrough?
As you may know, currently it is pretty much hard to predict what will be rendered after you press the render button, because RR state is totally implicit - there is no way to see it in viewport.
From other side, VV is totally explicit, as it is dislayed in viewport, and also is controllable by hotkeys there - H, Alt+H, Shift+H hotkeys allow to setup VV states directly.
But VV is not renderable at all, excluding preview render, so VV is temporal by it's nature.
So, RTOs like RR has got only renderability, while VV - flexible setup and display without any influence to renderability.
I think, that would be nice to have ability to view, setup and control implicit RTOs (RR, HH, IO) with states of explicit one (VV, DV, EC).
The workflow I propose is pretty much simple - setup scene visibility, and then just copy it to renderability to get predictable result on final render.
And all we need for this is the ability to copy RTO values between columns, and I think it is nice ability to fill CTRL+LMB shortcut.
Basically, this is the Photoshop eyedropper tool used to manage global RTOs setups:
I can see here a couple of troubles, for example,
But, in general, I think the ability to see just immediately in viewport what you will get after pressing render button deserves that research)
What do you think?
I like breakthrough things. :)
There's some interesting ideas here.
I think having the option to copy is a great idea, but I wouldn't use highlighting for it. Copy - Paste is such a quick operation that you don't need an indication, plus it could be confused with a history state.
I don't see a use for swapping, but if you have a use for it I can add it. Swapping brings up another potential issue - applying states. Currently, when you isolate something, or do an enable all, it sort of locks in the history of the last state. And while you can clear this by clicking on a toggle, it would be nice to be able to use e.g. ALT+RMB to forget history/apply state. Also, with the multi-color highlighting, it would be nice, but I don't think it's currently possible. And with the "Tracker Curfew" in effect I doubt a patch to allow it would get accepted right now (but if you do come across a way to get multi-color highlighting, let me know).
For this, I think it would be better to have a "show what will be rendered" function, rather than copying and pasting. The problem with this, at the moment, is the application to objects - like you mentioned. Objects aren't really supported right now, but they may be in the future. For now I would suggest the Collection Manager should only operate on collections, except for special cases like removing collections with objects, and if/when objects get proper support we can include them in things like "show what will be rendered" and copying.
On a slightly different topic, I need to spend some time bug fixing and polishing what will go into 2.82, so I won't get to the stuff above for a bit. But I think things are developing nicely. :)
Thanks)
Yes, I also think it would not be critical, because such kind of actions are too quick.
Aw, let me explain this technique.
The difference between copy and swap actions is the same, that between destructive and non-destructive actions.
Copy action is a single direct action = setup > copypaste.
Swap is a double action = swap to see > setup > swap back.
Here is a scheme with all possible actions with copy and swap.
As you can see here, swap allow to make changes to implicit RTO, keeping explicit RTO values untouched:
Well, we will do our best - I will propose this and explain the concept behind it.
Well, that is a nice idea for separate mode, I guess)
But the goal of copy/swap is a bit deeper, than to see what will be rendered.
The main goal of this tool is the ability to observe and edit implicit RTOs as explicit RTOs, including such unobvios things like HH and IO, and, of course, without loosing an actual setup, due to the swap ability.
I understand.
Is it possible to reach objects RTOs, if to make a separate addon, that contains only global RTOs with copy and swap abilities, for concept testing purposes?
We will need some realization as proof of concept at some point, just to show that it would be useful to have such abilities.
For sure, it is going great!
Since copy/swap is a sandbox research, we can't have any deadlines for that, unlike the situation with 2.82.
So the only thing I would like to know if you like such kind of idea.
I made a gif about swap action.
Hope it will explain the mechanics behind it.
We are making implicit setup temporarily visible with first swap, then editing setup while it is visible, and then deploying it back with second swap, keeping things non-destructive.
Thanks. That clears things up nicely. I'll put swapping on my new features list.
Thank you)
Update.
Unless any major bugs are found, here is a zip of the version that will be in the official release of 2.82. 😁
Bugs fixed/polish added since the last zip (v1_8_2):
Fixed the popup window’s auto-sizing when it’s first opened.
Fixed an error when popping up info notices.
Simplified the remove operator.
Fixed a minor error regarding selection.
Thanks to everyone who provided feedback/reported bugs. Now it’s on to 2.83. 🙂
Collection_Manager_14_v1_8_8.zip
Updated the task description here to better suit a Design task. Let me know if it works or not.
Such a gorgeous news!
So much work has been done here.
I like new description, so accurate, short and consistent now)
I would like to propose to add a appropriate hotkey modifier to functions description, because most of such functions can be accessible only that way.
Maybe, as separate list of shortcuts in Shortcut - Description form to keep basic description clean, like that:
Local RTOs:
//LMB - simple collection on/off operation
Shift+LMB - single isolation toggle
Shift+Ctrl+LMB - nesting isolation toggle
Ctrl+LMB - nesting control***Global RTOs:***LMB - Global enabling toggle
Shift+LMB - Global inverting toggle
[ Ctrl+LMB - Copypaste column values ]
[ Alt+LMB - Swap column values ]//
[...]- planned / to do
Such list will be also short, useful, pretty much consistent, and will allow new users to dive into the addon's functionality.
About bugs - I keeping testing, but already found that nesting local isolation on Shift+Ctrl isnt working on 2.82 beta, it makes just single isolation.
Can you confirm that?
Good idea. I'll add that.
Probably my fault. The latest zip (v1_8_8) I posted is what will be in 2.82 and doesn't include nested isolation. And I forgot to include the zip for v1_9_0, which does include it, under the current download section of the task. But v1_9_0 and any zips with new features will be for 2.83 and beyond. I'll update the task to better reflect this.
If you are referring to v1_9_0, I did find a bug in it regarding isolation and I hope to have a fix out soon.
Okay.
About description - it can be a bit unobvious what are, actually, local RTOs, global RTOs, expansion operator and so on, so I guess it would be helpful to mark with frames and sign them on a special addon's screenshot.
Maybe it will be better to put clean screenshot with downloads in the begining of a description before overview (to see it without scrolling, as far as it is a face of the the addon), and add a special screenshot in the end, righ after shortcuts, to explain the anatomy of the addon.
How do you think?
Let me try it with having small cutouts next to the categories and see if that works. If that's clear enough I don't see a problem just having the screenshot at the bottom with the downloads.
How's that?
Well, here is a problem - a lot of things are visually doubling each other.
For examle, all RTOs, select object collection operator versus filter collection by selection, and all those 50 shades of gray crosses over inteface ...
I think it is important to show exact location
I would like to propose it that way
I'll admit, that looks better. I'll add it to the task description with a few tweaks, for example, what you term "filter by name" actually inverts the filtering.
Yes, with this screenshot it looks more loud and clear)
I am not sure about red Invert filtering, because we have invert actions that works in other way, that can be confusing.
Also, it is name-related one, so it is more like "search by name", or "find by string" or maybe simlpy "search" or "find"?
Nope. It's a built in blender function we get for free and when you press it it inverts the UIList's filter. So for example if you're filtering collections by selected objects and you press the invert filter button it will show you all the collections that don't have the selected objects. The text field before it is what filters by name, so maybe it needs some red text in the image too.
Aw. Maybe, I got something wrong, I will check it)
By the way, I've seen a request for "find and replace" renaming function for collections, because new default find and replace works with objects names only.
It can be fixed one day, but anyway such functionality can be interesting in terms of collections management.
No worries!
Not sure how exactly that'll work, but I'll add it to the list of potential features.
Yes, it will be a nice place for it.
At least, it deserves to be kept in mind this way)
Update for 2.82:
Changes:
Fixed tooltip for local render RTO.
Fixed bug with isolate/restore state when there is only one RTO to restore.
Collection_Manager_15_v1_8_9.zip
Cool!
Meanwhile, we are trying to hack cloning view layer concept, to define possibility conditions and obtain some kind of a realization in research way.
It is tough one, so we decided to make it separately from CM addon paradigm at this point.
I will tell, if we will get some nice results)
Also known issue - view layers are not preserved when copying a scene.
Maybe, problem of copying view layers influences a bit deeper...
Cool. Sounds like you'll have an interesting time ;)
Let me know what you find out.
Update:
Official addition of nested isolation.
Integrated fixes from the 2.82 release branch.
Fixed bug from previous 1.9 version with setting RTO isolation status.
This will be going into official blender 2.83+:
Collection_Manager_v1_9_2.zip
Hooray!
That's awesome news)
Hard to say, we are also trying to get Blender 2.8x selection finally fixed.
It is completely offtopic, but here is a solution we've found .
It can be interesting since it influence almost any kind of mesh editing.
Continuing our view layer cloning research as well as part of a MASC addon
https://youtu.be/REfhZMdqV8k
Remember that we have v1.8.9 in 2.82 already. It's just the new development that's now all going into 2.83+. But yes, I think what we end up with for 2.83 will be a real powerhouse. :)
Yes, that is interesting. I'll have to remember that. And it occurs to me that Ctrl-Right Mouse (extrude to cursor) would benefit from being a press event as well.
Looking good.
Exactly! But unfortunately, it breaks lasso selection.
I using it with press event, and thinking about proper proposal. Maybe, delay threshold to lasso.
Thanks. Since QCD system is almost completely destroyed, and there is no more ability to control slots combinations with perception speed providden by the subitizing ability, people are trying to retrieve combinational control even with such unobvious way.
It is pretty much weak concept, in comparison with a proper QCD system, since you cannot control what is actually hidden in view layer (by obtaining combination information directly, without scrolling all that lists in outliner), and useful view layers number is very limited (more than 5-7 is hard to use, remember and control), but such an implementation at least raises the issue of copying view layers to explore.
Ah, I see. Try setting it to a release event then. That should work. I actually don't know why the click event is causing trouble; I suspect it's a bug.
I'm actually working on a test implementation of a QCD system for the Collection Manager in a separate branch. Thank's for reminding me, I'd kinda forgotten about it with everything else going on recently.
@1D_Inc Here is a test implementation for QCD to try out. It has hotkeys and allows you to manage QCD Layers to some degree from the QCD tab in the collection manager. This is just a basic proof of concept for now.
Hotkeys:
Collection_Manager_QCD_test_v1_0_0.zip
Wow.
I didn't found more examples of successfull implementation of such a system in entire industry.
A QCD system research? I think it will be definitely just as epic as tough one. I am glad to hear even that it is going)
Blender 2.8 already have a QCD system (when pressing number corresponding collection is displayed)
Everything that has a limit of 20 - refers to the QCD system (hotkeys, autonumeration, widgets, etc)
There are ruins, but they works, and it has got some huge inconsistences.
For example
Those things cannot be fixed with addons, it is a core workflow design problem, and it is completely separate task, considering dynamic context management.
All I can propose at the moment is to try to fix M5 issue, to make objects sending to a collection that is invoked by pressing correspondig number in CM.
That will help to solve that issue, that just ruins our workflow.
Test example - open a new scene, create a cube and 6 simple flatlist collections.
Disable CM addon.
Select cube, press M5 - cube has gone
Press 5 - collection 5 appears, there is no cube
Press 4 - collection 4 appears, here is a cube. It has gone to a wrong collection.
Correct behaviour should be - press M5 to send a cube, press 5 to view collection to see a cube.
That's M5 issue.
You currently made a separate"layers", that can contain objects, but it will be hard to control them, since such "layers" is a completely separate paradigm.
QCD is better to build on a collection engine - it already works like this (some collections has got predictable numbers, assigned by autonumeration, you can access them with those numbers, and it is ok), such a system is just needed to be polished, clarified, specified, and get proper GUI to shine in glory.
In short - you've tried to build it on much deeper level than it actually needs)
It is not a problem to build a proper QCD system in current Blender 2.8 realization - we already have some significant part of it that works.
It is a problem to take a few simple right steps to make it work properly, so it is more workflow design issue than, actually, development problem.
Just like clunky LMB selection issue that can be fixed with couple of lines, but breaks any kind of organic hardsufrace modeling, and lasts a year.
Did you know that SS, DV and RR are, actualy, not stored in view layer?
Yes, I'm looking forward to it.
I think these can be fixed fairly easily with an addon, actually.
I'll try a second approach more closely built off of collections.
Well my first approach allows for a lot of flexibility, so maybe it's more than needed, but it might prove useful. We can compare once I've built the second.
Yes. That's why I've been a bit hesitant with cloning and it's related to my bug report: blender/blender#72084
New version of first QCD test:
Collection_Manager_QCD_test_v1_1_0.zip
Look in the top right corner of the 3D View for the new ui. See tooltips for instructions. It's based off of that link to collection_quickies you mentioned earlier, so thank's for that :)
@nokipaike You might be interested in this latest QCD test as well.
I've tried it)
Well, I am not sure that there should be a dedicated QCD mode - default behavior is nice.
Let me explain why.
Almost every kind of work in CG contains or even consists from converting a dynamic context (ideas, concepts, sketches, references, versions and other temporal data) to a static context (final models, scenes or products):
So, basically, every production process can be expressed using this scheme:
QCD as a system is needed for very a special task - complex multirefrenced modeling, and Collections management is needed for complex scene setups.
And, as it is shown on a sheme, this is completely different steps of a production.
When you modeling a complex asset you don't care about scene setup to get slot access speed, and when you assembling final scene, you don't care about slot access speed to get scene setup.
So those production steps are made in different files.
Complex modeling requires a lot of reference trash around to navigate between them, such as pictures, photoscans, drawings, LODs, variations, model parts, retopology objects, that should never get the final scene.
This way, making a separate QCD mode makes no sense, it just have nothing to presevre, as far as scene is prerared exclusevly for such kind of a modeling.
From other side, complex scene sometimes needs a cleanups, so QCD there is used for qick sending objects to a specified prepared collection, that will be placed somewhere in complex scene setup later.
Like sorting content or filtering it out. This way, dedicated QCD mode is harmful for that purpose.
So I would like to propose to split QCD and CM addons, because they are needed for different steps of production, and have completely different requirements to a realization.
I believe, the best way of making proper QCD system is focusing on default QCD abilities, providden by default numeric input and autonumeration - we were fighting to preserve its best realization a lot ,
because switching modes is pretty much distracting, and it will be hard to design a invoke keymap behavior better than we has got.
The only thing I would like to propose for Collection Manager is to try to fix M5 issue, to provide ability to send an object to a proper collection.
So do you have an access to autonumeration result in API?
Can you obtain a name of a collection, that is isolated when pressing number 5, for example?
GUI is nice by the way, its like meetin old good friend that helped a lot)
But Alt keys are swapped. It is needed to be fixed for consistency - alt+3 should be under 3, alt+8 should be under 8.
It is needed for excluding counting them from a workflow.
I've only done small scenes, but I have often just done everything in one. So I think we should try for something that allows you to work with whatever level of detail is needed at the time.
For now it's of more benefit to keep them together. If, when we decide on the final implementation, it makes sense to separate them we can do it then.
I don't think so. But I can probably calculate the correct numeration myself. I'm actually not really a fan of autonumeration.
Potentially. I'd need more information on what you're hoping to do.
Sorry, I'm not sure what you mean here.
Overall you've made some good points, I'm not sure I agree with all of them, but this is still just the beginning of development. Let me do my second implementation and then we'll hopefully have a better idea how to go forward.
And I'm glad you like the GUI :)
Well, I currently thinking about QCD abilities, trying to design proper workflow.
Some of my thoughts at the moment:
For example, you can invoke some slot with N(number) andAlt+N
but can't add slots to visible with Shift+N and Alt+Shift+N to quickly form or modify a Combination of slots, that is our main goal.
We are making QCD to setup and control combinations.
So, I would like to propose just make a QCD Collection with 20 numeric collections in it without any kind of special mode.
It will be clean as concept, slots will be easy to access both from Nums (because of fixed addresses) and Outliner, and accesible in Blender even if addon is not installed.
Special button will create such Collection.
Let me explain a beautiful logic behind that.
First five are hot slots - they are commonly used, have smallest integers and the best key locations.
First Alt+five slots are cold slots - it’s nice to store here some data corresponding to hot slots.
Hot slot is above cold, so it is a pair, and it is fluent to set or invoke them.
For example, if hot slot 2 contains mesh, cold slot /2 (alt+2) contains it's retopo or base mesh, or reference, or part that may be needed - some data corresponding to the hot slot.
This way, QCD system consists from 10 pairs of 20 slots.
Other 10 slots (6-0, /6 -/0) are reserved slots.
They also have pairs, so slot 8 is above slot /8, and it is fluent, but they are used mostly for keeping everything that is not that important, due to less accessible keys.
So you can move pair from hot+cold (for example 2/2) to reserved (for example, 9/9) without losing the logical connection between them, if it is not urgently needed anymore.
As a result, pairs are extremely easy to set with numbers and detect visually.
This is the way it works)
Ah, I see now. Thanks. I've fixed this for both implementations now. (And yes it is beautiful)
I'm not going to do this right now because it's functionality is very close to the first implementation.
Here is implementation #2 (which I think I prefer). I believe it solves most of your problems, except maybe auto-numeration could use some work. :)
Features:
Collection_Manager_QCD_test_v2_0_0.zip
Wow! That is, actually, a very close solution!!
I need to use it for some time, but I already love how much direct it is.
Yes, since we are using EC, which can be stored in View Layer, we can use QCD system even in complex scenes, just creating empty VL for QCD session, keeping scene setup untouched, if it is needed at some point)
Awww, that feeling of combinational control... like feeling power ))
I need to dive in it, but the only thing I can propose already is about holding M.
What about to left M completely for collection manager, and use V for assigninig QCD slots, with separate domino GUI and keys reading?
It looks unoccupied and innocent in object mode, since vertex paint has gone from it.
CM and QCD systems are both content management systems, but they are semanically separated, as far as they follows different goals. I think that semantic difference can be also realized as hotkey difference, because both systems are used for different ways of content management.
😀
Switching hotkeys is easy. I can separate it out to two different ones. Having it all on M maybe has little more meaning as a hold over from 2.7 and it's one less key to remember, but I'm not set on it. And I'm not exactly sure what you mean by domino GUI.
Aw, domino GUI is a QCD GUI. It was called domino, because it also using subitizing ability to percept numbers.
When we are using CM we assigning collections with boxes
Via pressing V we can bring a separate window with QCD GUI to assign slots to a selection.
Because it is a bit... complex to set, for example, 2 3 /5 slots to a selection via holding M and pressing 2 3 alt+5 buttons.
This is definitely a two-handed type of operation, I would like to propose to avoid that.
ok, that's clearer. But why not just Shift-Click on the QCD GUI in the 3D View, that will move objects, rather than bringing up a new window? And I know Shift-Click is probably a bad hotkey for that, we can change it later.
Well, here we need to build an actions map.
I will make it to show all possible cases of interactions with a system (assigning slots, invoking slots), and we will place it to a relevance tree (because speed of access is important for QCD systems), to clearly see what we can get mathematically.
That will show us if we can do such a thing without loss.
Well, since QCD systems belongs to quick access systems, their action maps are pretty much simple. That's why we love it.
We will monitor the integrity of access to slots using the mouse and keyboard, using an example of cold Alt slots, and this way we will satisfy hot slots as well, because they are just simpler.
There are two groups of actions - Vew and Set
View - We are starting from simplest one - View slots in order to get familiar with its content. It is simplest isolation action. So, this way we are figuring combination of slots we want to obtain, looking throug them.
Add to View - Then we add slots to the view to get the combination that we figured out - this way we are forming desired combination to work with it.
Same behavior can be extended to Set actions, this way we can send object to a slot, or send it to a combinations of slots (like if we need a single image reference for multiple objects in different slots)
I greyed out hotkeys for Set in case if we don't use V popup for this mode, and here is a problem.
We have to add Ctrl modifier in order to satisfy all cases, and, as you can see, we run out of possible hotkeys combinations, ending with monstrous Ctrl+Shift+Alt+N to send object to a multiple cold slots.
For sure, it is possible to make so, but it will be definitely not the best way of using it)
Also, as you can see, V popup menu mode allow Set mode just copy View mode corresponding shortcuts for the same types of actions, that is pretty much fluent as part of the quick access paradigm.
Now I feel myself like Numberphile =)
What do you think about such solution?
Your action map does a good job showing the different ways of interaction. For the mouse shortcuts I'll agree that having a popup come up under the mouse would provide a slight improvement of speed. The number shortcuts, however, have a problem. I can see that doing it from M is a bad idea because it requires two hands (plus some keyboards may not correctly send all the key combinations. Mine doesn't send M-Alt-6 and M-Alt-7 correctly), and if we try to just use the regular modifier keys it becomes very hard to accommodate the move object operations (even Shift+Alt is somewhat difficult). So your option of V, Alt+3 (just like the widget in 2.7) makes a lot of sense, but now we come to the problem: the widget in 2.7 is custom and not built in python with a regular UI. I can have a regular widget pop up, but I can't think of any way to override the view shortcuts with move object shortcuts while the widget is up and return the shortcuts back to normal when it closes. One thing that might be possible is to draw it all with Blender's OpenGL, but that's outside my current skill set. Now, maybe someone else knows how to achieve this, so I'll ask around, but for the time being I think the best option is to forget the move object shortcuts and just use the mouse on the V popup.
New version that more closely matches your action map.
Collection_Manager_QCD_test_v2_1_1.zip
Thank you. As an engineer, I love ways to see systems transparently.
Yeah, this is exactly the problem I'm trying to fix.
There is not so much needed to obtain proper QCD system for multirefrenced modeling workflow, so I'm trying to overcome it directly.
You provided Crtl modifier hotkey for Set actions, and it is the best you can do, because it makes such system complete and useful.
So, you are a life saver!
A great job, thank you so much for this!!
p.s. I will test a solution for some time before showing it to other users that need it)
Good idea. Let me know if you find any bugs or think of any improvements.
Thanks! My pleasure! :)
And who knows in time I may find a way to recreate that widget and workflow. Regardless, now we have a reference implementation that we can point to and say: this is the general idea. And it's already a good QCD system for anyone who wants to use it.
A couple things I think potentially need further development are: auto-numeration (Does the system I chose work well for you, and should we stick with a button to re-numerate?) and move to (Should we allow objects to be moved again after they're moved to a non-visible layer). And one final thing I need to add is saving the QCD layers to blend files, but I'm working on that plus saving the other isolation/enable all histories (Do these need to be saved?).
Once we're happy with the above I think it's worth it to include the QCD system in the next official release (2.83).
Thoughts?
I am in testing process.
You already made so much to allow our company to survive.
Can you answer pesonal question on BA?
Yes. Done.
I'm happy I could help. :D
Hi!
Sorry for delay, I am deadly busy with my animation project.
I think I've got an interesting solution - what if to add a button near widget that will swap widget mode from View to Set and back, with ability to assign V shortcut to it.
This way we will not need a separate menu with separate gui, we will be able to use existing one, but for clearly splitted modes.
For example, to send selection to /2 slot it will be needed to press V, Alt+2, V (to enter and exit Set mode respectively)
Also it will be possible to use widget with only Shift and LMB for both modes and any possible cases.
I would definitely like to give a chance and test such a solution.
Do you think this is possible?
No problem. I've been busy with stuff as well.
As to your solution, I think it's possible. I'll work on it.
I've been thinking more about the possibility of recreating the move widget from 2.7, and I think that it is possible with a modal operator and OpenGL. The main problem here is my unfamiliarity with OpenGL, but in time I think I can do it. It probably won't be done soon though, so I'll work on it slowly in the background.
@1D_Inc Here is a test of your most recent suggestion/solution.
Enjoy!
Collection_Manager_QCD_test_v3_0_0.zip
Aw, that's so more fluent now!
Addiction will take some time, but the same short shortcuts in both modes succeeded)
Keeping testing, I think about visibility problems - for example, do we have to operate on EC if we are using enumerated list, or should we see a collection we send object to.
Sending to a single turned off slot feels a bit clunky, since we are loosing selection from sight of view.
I try to investigate if it is reasonable to keep the receiving slot disabled if it was (for single or multiple sending)
Can we make such test for research purposes - add slot to visible when we are sending objects to it?
Good!
I've felt that as well, but I haven't known which direction to go with a solution or whether a solution to that is actually needed.
Sure, that's easy, but I think it will quickly mess up your viewing state.
Another possibility would be to allow movement regardless of whether they can seen.
I'm about 90% sure this can be done, but I haven't tested it yet.
Added subscriber: @CobraA
Just found out about this great addon from the 2.82 release page,I wish if we could have something similar for "Bone Layers", cheers.
Hi. We are currently trying to cover complex production needs. We are working on Quck Content Display system.
Yes it will.
But it is hard to say if it will be that harmful.
I think this problem occurs because its easy to loose an active object due to indication limits, so it is hard to say if selection has gone to correct slot if a few are already taken.
Maybe another button for additive sending next to mode switch to test a solution?
Also nice design with crosses on nonexisting slot, didn't thought that is possible)
@CobraA
Something similar for Bone Layers has always been in the back of my mind and it's been requested before, so I'll probably end up doing something, but it may end up as a separate addon. I'm also not quite sure how it should look and work, so if you have any ideas let me know. Glad you like the addon! 🙂
@1D_Inc
Thanks. I needed something to keep everything aligned properly, so I thought an X would work nicely, but it could be anything. 🙂
I'd prefer to keep buttons to a minimum, but I have got a new version that adds the view layer when you move the object for you to test.
I'm thinking from my limited use that it's not great, but it does allow you unlimited movement. I'll see if I can find a solution to let you move selected objects from non-visible collections.
Collection_Manager_QCD_test_v3_1_0.zip
Thanks)
For sure, we will try to reach minimum ui elements, so such buttons are temporal, just for testing solutions without reinstalling addons versions back and forth)
I've tested for some time. Suddenly, such behavior feels... smoother)
I need to test this some more time to understand why the slot display seems to be better.
I would like to propose to turn off a slot from where selection has gone (in which the number of objects was reduced after the Set operation),
this will make possible to find appropriable slot to a selection via several switches, if it is possible to reproduce.
Also, it seems, you removed Ctrl hotkey modifier for Set operations.
I don't think it is needed to be removed - it is pretty much clean alternative way to work with ui widget directly.
When objects are sent with mouse operations, slot is selected directly with mouse, so it is possible to afford Ctrl and Ctrl+Shift hotkeys modifiers in that case, to get ability to Set without entering special mode.
QCD mode button (with V key assigned) is handy for numeric input to indicate Set and View modes split to keep shortcuts the same for that type of input, and also get around the separate popup ui problem.
It is also possible to use this button for mouse input operations, but operations with Ctrl hotkey modifier can be faster in some cases.
So, when objects are moved out of a layer and the layer has no objects in it we hide it? That could be done, I think.
Yeah, I did it to unify it with the keyboard state and present a clear representation of the modes to the user, but I can easily add the Ctrl modifier back to the GUI.
The separate modes may not be required anyway. I've been doing some experimenting with OpenGL (turns out blender's python bindings of it are fairly simple) and I think I'll be able to recreate the functionality of the widget from 2.7
The main problem I'm seeing is the loss of selection when moving objects to hidden QCD layers. I'm hoping I can find a way to preserve them, but we'll just have to see.
There are also a couple bugs I found when I downloaded a couple of the new demo files blender released, so I'll be fixing those, but other than that the Collection Manager and QCD system worked really nicely with one of the scenes from Spring.
Speaking of test files, do you know of any good ones I could download so I can get a feel of how the Collection Manager/QCD will handles in real world scenarios?
Hopefully I'll have some good stuff for you to test soon.
I think, that it will be interisting to hide slot that will still contain objects but has got lesser objects after Set operation - that will mean that objects has gone from it.
That would be nice)
It is a shortcut, that also don't take any space, so if to chose between have it or don't, it will be nice to have it)
Yes, losing active/selection is definitely the issue. That's why I thought about switching back from EC to VV operations, but VV is not stored in View layer, so we are trying to make EC behavior better providing unhiding/hiding slots on Set opertions.
I already feel how tricky recreating 2.7 functionality can be)
So I tried to ask devs to make some API improvements to make it easier, but with no luck.
Well, we are using 2.79 on most product-dependent tasks since January, to avoid workflow issues of 2.8X to ruin our production process, 2.8X is banned in our company.
The good news is that there is no rush, and we have enough time to evolve solutions, proper design and testing.
About QCD using scenarios - it is intended "for handling dynamic context", and this range of tasks indeed is pretty much abstract.
But a nice case example to feel how it works is multirefrenced modeling , that covers almost every critical need of using such a system.
This post contains GIF of using QCD in a real production multirefrenced modeling workflow.
So, to simulate this case you need to get some simultaneous references in one place (like photoes, drawings, photoscans, laser scans, retopology objects, basemeshes, etc)
and try to navigate between them and their combinations as fast as possible, trying to concentrate on a model, it's references, and differences between them in fullscreen because of details.
I am thinking about example scenes, because I can't share our working files because of NDA, and placing 5-7 random objects in one place just can be far away from self-explanatory.
It just heavily depends on workflow process, since it is a workflow issue =)
In fact, the QCD system is the answer to the question "how complex model can you build in your software without getting ripped"
Good news, I've fixed it so this doesn't matter anymore. I can now move objects to multiple non-visible layers in sequence, just like 2.7x.
Interesting. I don't think this will be necessary anymore with the above solution, but we may want it as well.
Excellent.
Hopefully collections and QCD will soon no longer be an obstacle anymore :)
Yeah, I suspected NDA might be an issue. I'll just have to keep my eyes out for complex scenes. Maybe I'll try blendswap. Because the thing is, I think I understand the abstract concepts quite well, but it's a different thing to get a feel for how well a technology implements those concepts, what it feels like to actually use the addon on a production scene, what works well and what little problems you run into that you wouldn't expect. This is for the whole addon of course, not just QCD.
But no worries. For the most part things are easy enough to test.
Yes. I also see no obstacles here)
A kind of syntactic sugar applied to a workflow.
For sure. It is mostly about speed of access, just in heavily distracting modeling conditions, so there should not be problems with testing process.
We also have time-tested 2.7 example which works pretty well.
You really give us hope)
Alright, here is a new version with the selection problem fixed and a QCD move widget drawn in OpenGL with hotkey support. Let me know what you think and if, after trying it out, you still want to try out the auto enabling/disabling of QCD layers on move. Fair warning, the OpenGL widget is crude (I'll see about refining it later), but it should serve as a good prototype for the functionality, and proof that it's possible. Moving objects via V, LMB, V, Shift+LMB, V, Alt+3 and V, Shift+Alt+3 is now possible.
Collection_Manager_QCD_test_v2_3_1.zip
Wow!
It looks nice enough and it works!
I love bigger size of slots, it is better for mouse operations, square shape make it better for subitizing, but maybe gaps between them is a bit huge. 1px gap should be enough, since they are bigger.
I would like to propose to grey out slots indicators that don't contain a selection, if it is possible. Yeah, I think we will face those detecting/indicating active/selection problem many more times)
Also love Ctrl direct combinations back, indeed, works like a syntactic sugar. It is definitely "nice to have" feature!
Switch mode button has gone, and I think we made enough to get rid of it)
In general, this GUI It is definitely a step forward in terms of usability)
Nice to see such realization)
Thanks! I'm probably going to keep it a fairly simple flat theme, but hopefully it'll get a little more stylish. :)
Not exactly sure what you're asking here. Do you mean you want the button greyed out if there are no objects in that layer or is it that it should be greyed out if there are objects but none are selected?
If it's the latter I was planning on doing a filled circle/outline circle for selected objects/not selected objects similar to how it's represented on the widget in the 3D View header.
And actually, now that I think of it, I think I'm going to change the 3D View header widget so that you get a filled circle for all selected objects instead of just the active object.
As you might have noticed from the version number, I actually just went back to the branch with the regular popup and switched it out for my custom OpenGL one, so no need for modes and I got the Ctrl combination back without any extra work! :)
Here's a new version to test with a few improvements to the OpenGL drawing, and a new feature/bug fix that allows you to mark collections as non QCD Layers. The re-numerate button on the collection manager now will respect user defined non QCD Layers by default, and so won't assign them a number, and it now has a hotkey (Ctrl) to allow complete re-numeration discarding user defined non QCD layers. Plus a bug fix with the integration of QCD with the Collection Manager histories.
Collection_Manager_QCD_test_v2_5_0.zip
Aw. I need to think about this concept for a while.
Upon further consideration I'm going to keep the filled circle to indicate the active object, because you need that indication to work properly when adding objects to a layer as opposed to moving them.
I've done some polishing of the OpenGL widget and the object indication, and I think it works really well now. Oh, and if I didn't mention it before, we can technically draw just about anything in opengl for the popup move widget.
Another thing I think I forgot to mention is that you can move objects to whatever layers you want now (and keep moving them) regardless of whether the layers are visible.
Not trying to push you, feel free to think about stuff for as long as you want. :)
And if you could keep an eye out for any hangs or performance problems with the new OpenGL widget that would be great.
Collection_Manager_QCD_test_v2_6_0.zip
I think it is reasonable, because this is how it works all this time, and already solves a problem.
Anyway, we have the ability to check other solutions as well, to have a chance to bring some enhancements to that behavior, but it will always require a workflow tests.
Yeah, OpenGL is actually, a freedom, because if you are making something in OGL, you have only OGL limits.
That is a very powerful step, that brings a lot of consistency and control to a system.
Thank you so much for this!
I didn't spotted such a thing yet, but I will try to do my best)
Well, my thoughts about system that we've got, and some issues I would like to mention and clarify.
Let's call them QCD Slots, because QCD system is not related to a "common layer sytems", used in max/maya/autocad/photoshop/SPainter and other software.
Layers entities are used for storing static context data, that can have a short name, that represents it context (like "car" or "house"), so Collections is a representation of a common layer system in Blender.
Layers are something constant, so they are about scene setup.
Numeric slots are far away from such kind of concept, they are part of a "quick access system" which handles dynamic context, that cannot have a name to represent context directly (like "some part of a mesh that I need to work separately at this moment" or "retopology object that I have to brought into coordination with several references" or "a bunch of heavyweight objects from imported scene to fix and simplify, moving already fixed objects to another slot to control vertices count I saved")
Slots are something temporal and fickle, so they are about modeling process and preparations.
Previously, 2.79 layers were removed because they were called "Layers" without providing the ability to perform work intended for layer systems.
Calling those things as Slots, we are making clear that they are not intendent for any kind of work intended for any kind of layer systems.
I would like to propose soften gamma (that's the thing I meant by "graying out")
Here is a mockup and explanations:
As you can see, you can easily percept the difference between 2 and 3 hatches, between 3 and 4, but 5 is a problem, so you are crossing 4 and starting next mark.
Also, you can easily percept that every crossed mark have 4 hatches, and you didn't missed something. If every mark will contain 6-7 hatches, you will have a problem, and you will need to count each of them, to be sure if they are correct.
That's the way to feel the actual limit of the human perception subitizing ability =)
(Also row of 5 is nice to handle two packs, but that's the limit, because it there will be 3-4 packs, that would be a problem.)
I used to be opposed to being able to assign numbers manually, because of the teamwork issue - if someone assigned slots, they are lost and cannot be reassigned without project coordination.
They cease to be temporary with this approach - you spread 20 slots over 500 Collections, and that's it, they can't be touched, because were assigned by some reason, that is obvious only to one person.
But you made the button “Re-numerate QCD layers (slots)”, that makes it clear that their assignment is temporal, so I think this is a kind of solution)
Personaly, I like the ability of manual numeration, so that was mostly the question of a realisation, I will try to explore it for some more.
Thank you for this)
Your welcome :D
Wonderful, that's what I'm hoping for. :)
Sure, and I agree it makes more sense, this isn't a hierarchical layer system.
Sure, that's easy, and it looks much better in your mockup.
I agree with what you've said. I've always been in favor of at least partial manual numeration because auto numeration will only work on the first 20 collections leaving you without a way to apply the QCD system to other collections. I imagine that you would want to change the slots target collections multiple times in a project, if not multiple times in the same session. I think we've struck a nice balance allowing for easy numeration to just be there in the beginning, but flexible enough to allow any configuration you need as a project progresses. I have seen a couple projects where they use blank collections as groups for other collections with objects, so it makes no sense to force a blank collection to be a slot. And I think it's turned out to be very temporal and fluid.
I can do all of that, but I'm wondering if we should hard code the colors for the entire widget or have them follow the current theme?
Finished editing. Apologies for the accidental early posting of the above comment.
This is ok, I do the same often because of the language barrier)
I didn't thought about hardcoding theme, but we can get all those colors from blender theme, I guess.
I will look for corresponding theme colors.
Currently, it is possile to setup visual appearance of header widget with UI prefrences (Themes - User Interface - Tool)
We can use Toolbar Item palette instead to decrease overall theme changes (Themes - UI - Toolbar Item)
This will make the toolbar text (left-side T key toolset) color dull, but at a level where your modeling is so complex that you need a QCD system, you already know all this text and do not need to display it constantly.
I think it is suitable solution to start from for both header and popup widgets at this point.
Okay, I've changed the terminology from Layers to Slots, updated the layout to have wider gaps, and implemented theme support. I have set it up to be consistent with how floating panels are themed, so the user can style it in an expected manner just like any other popup. However, I have also included support for the one non standard feature you wanted, having the icons other than the one denoting the active object fade slightly into the buttons background (this is hard coded and was accomplished by simply setting the icon to draw semitransparent with a value from 0-1 and can be changed easily if needed). While implementing theme support I found that there were times when you would move selected objects, but because no object was active there was no indication of movement from the UI. So to fix this I've updated the icons so that a line indicates the slot has objects, an empty circle indicates the slot has selected objects, and the filled circle still indicates the slot has the active object. If you have an idea for better icons I'm all ears, but I would like the the header and popup icons to match, and because the buttons on the header are so small, and the icons don't scale, the number of icons that work for the header is extremely limited.
The following theme elements are linked to the OpenGL widget.
The theme implementation can be modified if needed, but I think overall it works nicely.
One thing to note is that while this works properly with blender 2.82, blender 2.83 has changed stuff with it's color management and so currently the OpenGL widgets colors will be slightly off in intensity. This is known and being discussed here: https://developer.blender.org/T74139. When a course of action is decided on I'll make sure my addon conforms to it.
I also fixed a bug when adding objects to a slot (Shift-Click) where if there was no active object you could add it, but not remove it.
Let me know what you think.
Collection_Manager_QCD_test_v2_7_1.zip
Nice!
Thats an interesting idea, if to take into account that we work with EC, so we can say how objects that will be sent with Set operation are distrubuted over slots. I will try to investigate the workflow behind it)
But instead of line I would propose a dot, sharing same color with empty circle, and size of an inner diameter of the empty circle.
(Empty, occupied, selected, active)
Sorry, but I didn't spotted changes in theme setup. It seems to be completely linked to UI - Tool.
The problem is that QCD widget used to have dim colors, because of precise contrast setup, so if it will use UI - Tool colors, a lot of things will turn dim in overall UI.
I colorized it to random colors to show how it influences overal interface
That's why I proposed UI - Toolbar Item instead UI - Tool, it doesn't spread so much over interface)
That's also interesting, thanks) Hope such issues can be brought to a consistency in a single release, and there will be no more of them.
Indeed, works like a charm)
I also like that it can be sent to a disabled slot and back.
Also like it does not turn into active if an active one has been defined.
Spotted an interesting issue - popup QCD widged is about 1.2x larger on Windows (tested 8.1), and looks normal on Linux Mint where it have the same width as header widget.
I'll give a screenshots later.
Linux:
Oh, no, it seems, I just messed up with overall UI scale (Preferences - Intrface - Resolution scale) on different machines.
Popup equals heard at 1.4 UI scale, usually I use 1.2 - 1.3. My bad =)
By the way, what scale of the user interface do you prefer to use?
While that works to some degree in the OpenGL widget, it does not work well in the header widget. They are just too similar, even with the color difference in the OpenGL widget I think there could be situations where you could mistake one for the other, but when it's on the header there is less of a size difference because everything's smaller and there is no color difference. Now, obviously we aren't required to keep the OpenGL widget and header widget in sync, but I think it's a good idea.
So, if we're keeping things consistent, that leaves us with two options I can think of, use the default blender icons that take the theme colors and fit in the header widget, or add a custom icon for the active object. The downside with the custom icon is that it won't take the color of the theme like the default blender icons, so I would probably have it as white with a black outline, but I don't think that is a major problem because it denotes something special anyway. If we go the custom icon route I was thinking of using a five pointed star to denote the active object and having the non selected objects as the empty circle and the selected objects as the filled circle.
It is mostly. Because the OpenGL widget mimics a floating panel very closely it should use the same theme as well (that's what I think a user would expect). I think it's a bad idea to usurp another UI element's theme, aside from potentially ruining that element's colors, the user will have no idea that that's what controls the OpenGL widget's colors.
I don't think most users will mind the OpenGL widget conforming to the standard floating panel theme, but since you want more flexibility I suggest we provide a set of overrides in the addon's preferences. This will allow it to follow whatever theme is in use as well as allow for greater customization if a user wants it.
Me too.
Great. This whole issue with the selection and moving objects to non active slots is very finicky. Hopefully, I've got everything working in a nice and consistent way now.
Not entirely. Currently the OpenGL widget is drawn in absolute pixels and doesn't scale with the interface or monitors with different resolutions at all.
I should probably fix this.
On Linux I use a Resolution scale of 1.0. Interestingly, I tried it on Windows (8) and even though it was set to 1.0 blender's ui was a different size (I'm thinking blender also takes the systems font dpi and maybe size into account).
(Although it's hard to tell, I'm sure the OpenGL widget was the same size on Windows because it's drawn in absolute pixels.)
Yes, we are keeping sync and related to defaults icons/resources, trying to investigate what we can possibly get following that path. How much it allows us to reach.
By the way, what is line - is it an icon, or a text symbol, maybe? How did you made it?)
The same question about crosses for unexisting slots.
Color theme has got some special requirements, so it makes sense to make it local, because it is hard to find any kind of system in Blender that could have the same requirements to a visual appearance and contrast.
Is it possible to make local color override in addon prefs that influences both header and popup keeping their themes in sync?
Yeah, I spotted the problem in a wrong way)
Yes, it drawn in pixels, so not a widget, but entire ui scale looks different in comparison to a widget on different monitor sizes and pixel density)
So the question is - can we make system ui scale preference influence widget size, or, for example, provide some fixed size values?
What are our possible abilities in resizing custom OGL stuff?
Can it be multiplied to some value or something?
I think it will be nice to reach sync also for width of header and popup widgets, or at least, keep their widths corresponding)
Good. And you're right a custom icon just doesn't work well (I tried it).
For the header widget, both of those are icons. Unfortunately, text messes up the button sizes on the header widget and so can't be used. I use the Icon Viewer addon to get a nice grid view of all the available icons.
For the OpenGL widget all the "icons" are just shapes I draw in OpenGL.
No. The header's colors are taken directly from the theme.
OGL stuff can be drawn at any size. I just need to add some code to take the UI's Resolution Scale into account. I think I know what needs to be done and I'll try it out and get back to you.
Yeah, I'll keep them about the same size.
Added dpi/scaling support. Some widths and gaps may need a little tweaking, but it's pretty close to what we had previously and now gets sized according to the Resolution Scale in the preferences.
Added addon preferences with overrides for the OpenGL widget's theme. By default it will follow the theme for popups exactly, but you can override that and customize just about anything. You can even set how visible the non active icons are.
(check the check boxes to enable and allow you to edit the overrides)
Collection_Manager_QCD_test_v2_9_1.zip
A very nice progress here!
Indeed, it is better that the gaps remain 1px regardless of the scale of the UI scale (maybe with 2px option for 4k monitors) othervise they are corrupted by aliasing, but it is nice to see popup respect UI scale.
Not sure about color overrides - popup is large enough to have a problems, but I will prefer to have such options yet, and try to figure out if they are really needed.
I really like that the system is fully operational and only tiny design issues are left.
That's just awesome)
Lovely!
Also spotted some dots.
Can we try to use them instead of minus?
DECORATE icon
I like minus because it is not round, so you can clearly see where active/selected is, but it makes harder to see empty slots in my opinion.
That would be nice to make a comparison.
Thanks :)
I'll see what I can do.
You want a very specific custom theme for the widget. I think that using the regular popup theme works well in most cases, but there are times when part or all of the theme is not ideal. Overrides allow you to customize as much or as little as you desire.
So everybody can have what they want :)
Me too. And on that note, I would like to propose committing this to master. We have lots of time to polish it once it's in master, but the cutoff for adding major new features to master for 2.83 is March 12.
@BrendonMurphy What do you think about this?
We can try it, but I have doubts.
On full size buttons it would be fine, however, I don't think there is enough of a difference in size on the small buttons. I'm pretty sure what you're showing in your picture is the DECORATE icon with the RADIOBUT_ON and RADIOBUT_OFF icons, but the icons we're currently using are LAYER_ACTIVE and LAYER_USED not RADIOBUT_ON and RADIOBUT_OFF. Here is a comparison between DECORATE, LAYER_USED, LAYER_ACTIVE, and DOT.
This brings up the question of do we want to expand the buttons to full size to allow the use of any/all of the icons? Currently the buttons are scaled on the y axis so they will fit nicely with everything else in the header, but they could be bigger and hang down.
Mostly disregard that last question. The header widget can only have slightly larger buttons. It turns out that blender will only allow the header to take up a specific amount of vertical space, anything past that it cuts off.
Yeah, I've spotted LAYER_USED issue on my second screenshot, when I was trying to figure out what icons can be possibly used for slots.
I tried to make a mockup to get how dots will look like, and how much they will mess with perception recognition, but image I've got is far away from being self-representative)
So I'm in doubts)
I think that such progress definitely deserves to reach master, because multiref modeling in particular (and handling dynamic context in general)
is the reason we are using Blender daily to solve various complex problems that other programs don't allow, including entire "industry standards" family.
ps
the only issue I can see that it redefines nums keys to make QCD system actually work.
Some users that don't need QCD may not like that.
How do you think, is there a solution for that problem?
Maybe an option in prefs or something...
I think I can add a checkbox in the preferences to allow you to enable/disable QCD.
Good news! I've found a way to make custom icons respect the theme. This means we can have any icon we want for the active object. Example: (this started off as a white star)
What I ended up doing was multiplying the icons pixel data with the theme's color and essentially rebuilding the icon every time the theme changes. Took me a while to figure out, thankfully blender allows access to the pixel data of custom icons, but I got it working and now we have a lot more freedom.
Update.
I'm also including a "dots" zip that uses DECORATE, LAYER_USED, and LAYER_ACTIVE for the header widget
Upon further consideration this could be more trouble than I first thought. How big a chance is there that someone would use those hotkeys, but not need a QCD system?
Collection_Manager_QCD_test_v2_9_4.zip
Collection_Manager_QCD_test_v2_9_4_dots.zip
Thank you)
I checked them, they are interesting to investigate)
Well, first - star is kind of a strong shape symbol, and it is not as neutral as circle, so I would prefer to not to use it.
I think that most of CG programs don't have stars in UI because of the same reason. It's too attractive.
Also filled star / filled circle system have lower contrast than expected. Shape contrast type have low contrast value on a scale of contrast types.
I checked the dots solution, it is nice to see both solutions together, very handy by the way - and yes, this contrast is also too low.
Basically, I think that minus/empty circle/filled circle works the best way. The only thing I would like to propose to change in that scheme is to try to make minus shorter, I will try to make a mockup to figure out if it works)
Yes, I guess there will be troubles.
The problem is that QCD system is built into Collection Manager, and those systems are needed for different stages and types of work.
QCD system is needed for complex modeling, to handle limited dynamic context with quick access, while Collections management is needed for final complex scene setup, to handle unlimited static context.
So there will be a lot of scene setup atrists, like visualizators, that will never perform multiref modeling, and they may not like hotkeys autoreassigning.
Personally, we will use slots keys a lot, even in edit mode, like in 2.7.
We are using
(~ tilda) button for **wm.call_menu** [VIEW3D_MT_edit_mesh_select_mode] for decade for switching vertex-edge-face pressing
1 - vertex mode2 - edge mode
3 - face modeWay better than ctrl+tab from 2.7 and almost fast as 1 2 3 from 2.8, but supports multiref modeling due to direct access to slots even from edit mode, and keeping slots access keys the same for both object and edit modes.
That's the most consistent solution we discovered.
But Im trying to avoid further negative reports from other users. I don't know how serious autoreassigning issue is, just know that there are people that will not like it.
I've tried, and it seems it is possible to map edit mode numeric keys to slots maually.
That's nice)
So, only object mode map can be provided with an addon.
Yes, I was also surprised at how the star performed, and I agree the minus/empty circle/filled circle works the best for subitizing. Because the star is a strong symbol I thought it would be perfect for the active object, but it seems that theory did not hold up in practice :)
Currently the keymaps are only added to object mode by default. I hadn't thought about adding them to other modes, but I guess it makes sense. From what you've said above it's probably best to provide a preference to completely disable QCD, both hotkeys, and UI. Or are you only worried about hotkeys in edit mode?
I've added a custom shorter minus icon to the header widget and fixed some bugs with undo.
Collection_Manager_QCD_test_v2_9_7.zip
I think the best option is provide the ability to disable QCD completely, including gui and object mode keys, and do not influence edit mode keys since there is no problem to set them manually, if they are needed.
Its operator is pretty much easy to setup, so I am not worried about edit mode.
But can they be disabled independently, as two checkboxes, for example, where gui checkbox influences keys checkbox availability? I know people that uses QCD as gui only, for keeping stuff around, and they were asking for this.
Personally, we will use it at full throttle, including edit mode manual setup. The only thing we need about edit mode is to keep slots that contains edited objects turned on during slots switching.
Update for Master.
Added an isolate tree feature. This allows you to shift-click on an expansion operator (the little triangle) and it will collapse all other collections except for that collection, and its parents. It leaves the descendants unchanged. Expand/collapse all sublevels has been moved to ctrl-click.
Collection_Manager_v1_10_0.zip
Okay, I'll add an option to disable QCD completely and a sub-option to just disable the hotkeys.
I'll see what I can do to make this possible.
A very nice feature)
I like the consistency it brings to a long lists handling.
Thank you! Maybe defaults should be GUI is on (to show that we have it) and keys are off (so as not to interfere with user settings)
That would be nice, because, unfortunately, edit mode is not a protection for a collection to be turned off anymore.
It can make troubles, for example, for searching suitable references, located in different slots, or LOD states comarisons, because allow to loose an actual setup.
Update.
Finally committed this to master with a few improvements:
There are still some improvements to make to the QCD system, but now that it's in master there should be lots of time to make them, and I will hopefully be able to get a couple non-QCD related features in too.
Collection_Manager_v2_0_0.zip
@1D_Inc
I think it would allow easier discovery of the hotkeys if they're on by default. If users don't want them it will be easy to turn them off.
Nice! That's just awesome news)
Yes, it is important, since QCD numeration can be assigned manually for sending objects to a specific slot from any collection in a scene)
This will allow you to quickly clean complex scenes.
That's actually intersesting how it is organized. Are they stored as numeration to some kind of a custom data?