← All ideas

Fluid UI & Workflows: Customizable and User-oriented Interaction Mechanisms

Update: Checkout quick favorites in 2.8 . Cool but not great!

Fluid UI & Workflows:

Customizable and User-oriented Workflows, Shortcuts, UI Elements, Automations, and Interaction Mechanisms

Custom Pie Menus for Sculpt Mode

Demonstration GIF showcasing user-made Pie Menus for sculpt mode. CTRL + RMB

Background:

As Blender moves towards a mean, clean, lean UI in 2.8, while keeping in sight the Workflow mentality, we have seen fundamental changes to both the UI and interaction mechanisms in 2.8. At this point it is imperative to look back at the pros and cons of previous design in more detail. The reason for which is that even though the current UI system can be at time intrusive, unnecessary, dysfunctional or even stupid there are still some major benefits that comes with these shortcomings. For example even though the Tool Shelf takes up unnecessary space in most cases, yet having immediate access to some properties and operators is nice!

Through this writing I will propose a system that I will generally refer to as Fluid UI. Through this system user will be able to create fully customizable UI components, be it pie menus, regular menus, modal operators, tool panels and tabs, etc. In addition users can create non-UI elements that can be executed on demand such as triggering multiple operators in a particular order. This idea is brought to life by utilizing and referencing the current capabilities of the software or 3rd party addons such as UI elements, panels, properties and operators.

The main purpose is to keep the UI mean, clean, and lean and maintain the speed and the shortcut miracle that Blender is known for and also expand upon these ideas in 2.8 by going beyond shortcuts giving users full customization abilities.

Furthermore this allows the developers/designers to focus on keeping the UI functional and user friendly while ensuring users that maximum customization is possible and their beloved tools, sliders, and checkboxes can be access as the users see fit.

Pie Menu Editor (PME):

What I'm about to describe is already implemented as a commercial addon called Pie Menu Editor , and in fact the idea of this proposal comes after using this addon for more than a year. I have to clarify that I'm in no way associated with the developer of this addon and will not be rewarded in any way by writing this post. Regardless I think the idea of this addon is brilliant, it has made my life easier, and I have wondered why is it not already implemented in Blender. As such I will reference it a lot and use some of its content to explain the ideas. This proposal is basically: hey blender... integrate this into the main branch please!

Capabilities:

Preferences Tab

I propose to officially add and support a new tab to Preferences that allows the user to create new context-sensitive or persistent Workflow Elements , allowing them to visually combine panels, operators, properties, etc.

The user should have open access (as they already have through the Python API) to the following Widgets in a user friendly manner such as context menu:

  • Simple Python Code (Similar to Drivers)
  • Operators
  • Properties
  • UI Panels
  • UI Templates
  • Scripts
  • etc.

Users should be able to use the above in creating Workflow Elements (ZBrush does this to some degree with their UI boxes).

Workflow Elements:

Workflow elements are both UI and non-UI components that allow the user to display a UI element or execute some operation, be it running operator(s), changing some properties, displaying a panel, or running a script file. Below are some Workflow Elements broken down into two categories of UI oriented and Non-UI oriented components.

UI Workflow Elements

  • Pie Menu: Nested pie menus.

Pme vid pie.png

  • Regular Menu: Multi-column menus which can be called by using the assigned hotkey or used as a sub-menu.

Pme vid menu.png

  • Side Panel: Create a group of panels and add it to the new or existing category (tab).

Pme vid pg.png

  • Pop-up Dialog: A layout of widgets that can be displayed in pie menus, dialogs, panels or toolbars.

Pme vid popup.png

  • Custom Properties: Create custom properties (widgets).

Pme vid property.png

  • Modal Operators: Create interactive tools.

Pme vid modal.png

  • Toolbars: Custom toolbars using the preferences area.

Pme vid pie.png

  • Extended Panels: Custom properties and widgets added to existing Blender panels.

Pme vid pie.png

Non-UI Workflow Elements

  • Sticky Key: Allows to assign on-press and on-release commands to the hotkey, which can be used to temporarily activate some tool or mode.

Pme vid sticky.png

  • Stack Key: Allows to stack commands and cycle between them using the assigned hotkey.

Pme vid stack.png

  • Macro Operator: Allows to create new tools using existing Blender tools without coding.

Pme vid macro.png

List content and videos taken entirely from PME Wiki

Adding Widgets:

Widgets are essentially small snippets of Python code, operators, properties, panels, templates, or full fledged executable scripts. The user should be able to add Widgets to their Workflow Elements easily through some form of interaction such as the ones below adopted from PME:

  • RMB Context Menu
    1. RMB on some widget
    2. Fluid UI » Add as Button
    3. Select the slot for the widget
  • Last Action
    1. Do some action in Blender
    2. Ctrl ⇧ Shift Accent grave
    3. Select the slot for the widget
  • Info Area
    1. Select some actions in Info area
    2. Ctrl ⇧ Shift Accent grave
    3. Select the slot for the selected actions.
  • Slot Editor : Using Slot Editor you can add almost any widget to a workflow element.

enter image description here

  1. Command: Python code that will be executed when the user clicks the button.

print("Hello World!") 2. Property: Path to the object's property which will be displayed as a widget. bpy.context.object.name 3. Menu: Open/execute the menu, popup or operator when the user clicks the button. Or draw a popup dialog inside the current popup dialog or pie menu. 4. Hotkey: Blender's hotkey that will be used to find and execute an operator assigned to it when the user clicks the button. 5. Custom: Python code that will be used to draw custom layout of widgets. L.box().label(text, icon=icon, icon_value=icon_value)

List taken entirely from PME Wiki

As mentioned in the comments it would be great to have a drag and drop + search feature to populate a Workflow Element canvas. "I might suggest as has been mentioned in some other proposals; make all the tools/UI modular, in such a way as to make presets for a given tool which the User can drag the icon (from a shelf; where operator presets are saved) to a <del>Pie-Menu Editor</del> Fluid UI Editor and drop it where desired." This way users can quickly define the layout of their elements. Something similar to the video below but with properties, button, operators, panels, etc. instead of text and images and of course inside Blender :)

Import & Export:

Fluid UI can give birth to a whole new sharing ecosystem by allowing users to import and export their Workflow Elements using human readable file conventions such as JSON or XML. Users can easily test others workflows, share, modify and expand upon each others' Workflow Elements and experience different perspective in approaching problems such as shading, animation, or retopology.

Examples:

These examples are intended to show a glimpse of what is possible to achieve using this system. These are some of the Pie Menus that I have created to utilize in my own Sculpting workflow. Others will be able to create something completely different based on their needs.

Example 1: Object Display, Viewport Shading, and Basic Camera Pie Menu

Displays a combination of different panels, templates, and operators combined in one pie menu. These include the Shading panel from Properties Shelf, Display panel from Object Tab, Viewport Color and Viewport Specular from active object's active material, and some operators related to camera and Only Render .

Custom Pie Menus for Object Display & Viewport Settings

Example 2: Sculpt Panels Pie Menu

Displays how panels from the Tool Shelf can be referenced inside a pie menu for headache free access to the functionality while utilizing the entire 3D viewport space. It is worth noting how these panels can be viewed in both persistent mode and immediate mode (disappearing after a click).

Custom Pie Menus for Sculpt Mode

Example 3: Pivot, Origin, Cursor, Snap

Displays how using a single pie menu assigned to shortcut . user is has customized a menu to quickly change and adjust pivot, cursor, and origin options and can quickly snap the object based on different criteria. Furthermore this example shows how 3rd party addons (in this case blenderaddonlist.blogspot.com/2014/09/addon-quick-origin.html can be integrated in Workflow Elements .

Snap, Pivot, Cursor, and Origin Operations

Conclusion:

Wells that is it! Thanks for reading. Please refer to the youtube channel of PME to see all these ideas and more in action.

Special thanks to the creator of PME who has brought this crazy concept to life already. Hoping to see this happen in 2.8!

Untitled-1.jpg

100%

Development Status: Open

Upvote 34 Downvote 0
91jnar19
2 Jul 2018

9 Comments

roaoao

I propose to officially add and support a new tab to Preferences that allows the user to create new context-sensitive or persistent Workflow Element

+1. Or new area types for add-ons.

2
91jnar19 Author

@roaoao: indeed. it's a shame that addons can't have their own dedicated area. I would also be happy with an "addon area" where you can switch between addons in a single area. similar to curve/driver in graph editor.

i've had terrible experiences with performance when using python api for BGL. maybe a new are type would help that!

mcolinp

YES, YES, YES, YES, YES!!!!!

Likely the best thorough UI workflow proposal I've seen so far. The user customizable UI elements combing functions and features into Pie menus & Widgets; YES PLEASE!!!

2
91jnar19 Author

@mcolinp: Thanks! I personally think this will be a killer feature in 2.8. Elevating Blender to a pro-level, fully customizable system.

1
mcolinp

@ranj9119: I might suggest as has been mentioned in some other proposals; make all the tools/UI modular, in such a way as to make presets for a given tool which the User can drag the icon (from a shelf; where operator presets are saved) to a Pie-Menu Editor and drop it where desired.

1
91jnar19 Author

@mcolinp: Added some more text + a video to the proposal based on this suggestion. I think it's a great idea!

1
mcolinp

@ranj9119: After I saw this; I came across this great tutorial which includes some custom scripts which accomplish many aspects of what we are looking for. Though the user customization is still missing here:

Tutorial: youtube.com/watch

Website: youtube.com/redirect

Python Scripts and Config Files: youtube.com/redirect

Enjoy!!

-**I really like his implementation of the basic Material Widget; which allows one to proceed with the large portion of Material needs from a single dialog. Only later needing to even open the Node Editor when getting really deep into the Special Material needs. It seems it it mainly aimed at Cyles for now: but I Could imagine this being useful as well for Eevee. Imagine using this simple dialog; which creates a single material that works in both Cycles & Eevee. Then allowing some modularity of outputs via the Node Editor to put the final touches on Materials for specific Engine Targets.

kit03

Great idea, I would love it !

1
Fudushae

Customizable Rmb (Ctrl , Alt, Shift, & combinations of these keystrokes ) menus would allow VERY FAST access tools (keep mouse movements with the vicinity of the 3d viewport as much as possible) aka a more efficient workflow. One of flaws imo with right click select as the default workflow in Blender is of course no Rmb context menus in the many editors with exception of buttons & value sliders. Which is odd to have this function relegated to these ui elements but not brought over to the empty (insert key) + Rmb. There will always be a limitation to hotkeys due to the vast amount of tools; please Blender, theres only so much you can delegate to this to the point where features are not communicated effectively to user of these shortcuts. Plus quick menus containing these tools/options and more can teach users the shortcuts to specific or frequently used actions/features because it tells you so in the context menu. This proposal makes me yearn of my 3ds Max days where I could customize my Rmb (Ctrl , Alt, Shift variants) menus. One of the only things I craved moving from 3ds Max to Blender.

1