Custom Manipulators: General Design & Functionality #47345
Labels
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
14 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#47345
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
There are a number of features that should be supported but further design work is needed before they can be implemented properly. Everyone is welcome to join the discussion by proposing more ideas or solutions, by creating mockups or by just giving some own input.
Scope of Widgets
Description
When should a tool use a widget?
Examples:
Spin tool is an example where widgets make a lot of sense (you rotate around an axis, so direct manipulation is useful).
The issue with Smooth & UV-Rotate is that using a 3D manipulator for these is using manipulator simply as a way to access buttons in the view-port.
An issue with bevel/inset depends on the kind of manipulator used. Having a single manipulator in the view doesn't directly relate to the edge, and again - its more a replacement for accessing buttons in the tool-bar.
Proposed Solutions
Suggest not to use manipulators if they are simply an alternate access to buttons.
As for bevel/inset: we could make the bevel edges themselves into manipulators, so you could click on beveled edge and drag it.
Toggling Visibility of Widgets
Description
Currently, only the widgets of the active object are drawn. While this works for most cases, being able to precisely control which widgets are visible and which not can be useful.
For example, in future, a camera could have widgets for the focal length, sensor size, depth of field distance, ... If all are visible all the time it's easy to accidentally manipulate them.
Proposed Solutions
Open Topics
Numerical Input
Description
It should be possible for users to input precise values to manipulate a widget (and thus the value it represents). This way they can keep their locus of attention in the viewport, avoiding having to search for a button in the UI.
Proposed Solutions
Snap System
Users may want to snap manipulators to other elements in the scene, eg:
Note that currently holding Ctrl sets
WM_MANIPULATOR_TWEAK_SNAP
but each manipulator needs to implement this.Proposed Solutions
Key Framing
When the cursor is over a manipulator, do we want to support I-Key to keyframe that setting (DOF, lense for eg).
Theme Colors
Manipulators now use theme colors, there are basic preset colors to use: (HIGHLIGHT, PRIMARY, SECONDARY, A, B).
Where A/B are for other controls.
Currently they're hard coded in manipulators but they can be set however we like.
Changed status to: 'Open'
Added subscriber: @JulianEisel
Added subscriber: @Blendify
Added subscriber: @bliblubli
For numerical input, would it be possible to just have the normal mouse input until a number is pressed. If a number is pressed, then it has the priority and hitting tab allows to switch between the different parameters (like for example the x, y and z coordinates).
It would have following benefits:
Added subscriber: @blend-it
Added subscriber: @Januz
Added subscriber: @Cenda
Added subscriber: @ideasman42
Added subscriber: @JonathanWilliamson
Initially I liked the panel option more, but the issue with this is that the options for the widgets would no longer be directly (both visually and contextually) associated with their corresponding values. For this reason I think the toggle button, similar to the Snap Widget. I do worry about UI bloat with this, though, which could become quite prevalent if there are many widgets.
As for numerical input, I feel this is a bit unnecessary (at least initially). One of the many benefits of a widget workflow is specifically to get away from more specific, numerical inputs and instead let the artist work visually directly on the tool. That's not to say that numerical input options are bad, or to be avoided, but I certainly wouldn't put a priority on it.
Another possible solution: more widgets!
(I made up the focal length one)
There could be a modal op that allows to configure widgets. In this op widgets would get a small label besides them with an eye icon. Disable widgets show up semi-transparent. Clicking on the label toggles them.
This op could be called from a menu and/or a button in the N-panel. There could be another button to save visibility settings as the default for that object type.
In the future, if widgets become complex enough to have their own options the labels could hold an extra button to bring up a settings menu.
Added subscriber: @PawelLyczkowski-1
I would say - draw Extended Properties (name I just came up with) widgets for all selected objects. control their visibility globally just like the Transform widget is controlled. Add a Extended Properties widget visibility button next to the existing Transform widget visibility button.
Won't the widget be always linked to a numerical value in the Properties Editor? Like Camera's focal length, or a custom rig property?
Added subscriber: @voyager25
Added subscriber: @DuarteRamos
Added subscriber: @michaelknubben
Better snapping system is a very important and necessary for a lot of people doing more kind of "precision" or "hard edge" modelling work.
The proposal at #45734 (Grab, rotate, scale with basepoint) holds some really promising results that I would love eventually see implemented, one way or another.
Widgets, in general would ideally behave sort of like an Empty object in the viewport, allowing the user to move and snap them to any type of existing geometry, just like an empty would, prior to initiating the operation.
This would not only effectively set the spinning/rotation pivot point, but also ideally allow specifying a "base point" used has snap target while transforming.
The linked patch shows a really good workflow of how this could actually work, comments there suggested it was hard to find, though I did like it a lot
Re: Toggling Visibility of Widgets
I think this might be best made into a scene-toolsettings option exposed in a menu or panel. (Was thinking it could be a view-port setting but can imagine it could be annoying to set these multiple times in each viewport if you're switching between some different views/windows, although my opinion isn't really strong one way or the other).
So for eg a panel in the 3D view could have toggle for:
Exact items displayed could depends on mode and active object (to avoid too much UI clutter).
Custom Manipulators: General (Advanced) Functionalityto Custom Manipulators: General Design & FunctionalityAdded subscriber: @florianfelix
Tool-Tips
I think it may be beneficial if manipulator widgets had the ability to display some kind of tool-tip.
When there are many visually nondescript arrow widgets on screen it can become rather confusing as to what they actually do.
Having Tool-tips (always or maybe only when hovering over them) would imo drastically reduce the
time to get comfortable with what may become a multitude of official and community supplied manipulators.
Added subscriber: @macouno-3