Design: Support navigation for transform operators #106008

Closed
opened 2023-03-22 18:52:59 +01:00 by Germano Cavalcante · 6 comments

Motivation

This feature is intended as a complement to the 'Snap Base' editing feature (!104443).

With this 'Snap Base' editing feature , consider a scenario where we need to move an object from the bottom of one object to the top of another. Without the ability to rotate the view, this task would be much more difficult and time-consuming. As you can see in the video below:
GIF 1.gif

If we have the ability to navigate during transformations, this task becomes much more efficient and accurate:
GIF 2.gif

This feature provides another benefits as the ability to view the scene from different angles to ensure accuracy during transformations. Additionally, it allows for a more intuitive and user-friendly experience, especially when working with complex scenes and objects.

Obstacles

The biggest hurdle in this feature is the conflicts with the keys used for the current modal modifiers during transform (like the key Scroll used to change the size of the area of influence of the proportional editing, among others).

This is unfortunate, as these keys are already well integrated into the user's muscle memory.

Solution

To resolve this complication with conflicting keys, only 3 navigation operators will be supported (more may be added over time):

  • VIEW3D_OT_zoom,
  • VIEW3D_OT_rotate,
  • VIEW3D_OT_move,
  • VIEW3D_OT_pan

This feature must be optional and located in the keymaps options.

The shortcuts used to activate the transform modifiers will have to be modified as shown in the table attached.

Modal Map (Blender): Conflict: Current: New:
Increase Proportional Influence VIEW3D_OT_zoom Wheel Down Alt Wheel Down
Decrease Proportional Influence VIEW3D_OT_zoom Wheel Up Alt Wheel Up
Adjust Proportional Influence VIEW3D_OT_rotate Mouse/Trackpad Pan Alt Mouse/Trackpad Pan
Increase Max AutoIK Chain Length VIEW3D_OT_zoom Wheel Down Alt Wheel Down
Decrease Max AutoIK Chain Length VIEW3D_OT_zoom Wheel Up Alt Wheel Up
Automatic Constraint VIEW3D_OT_rotate Middle Mouse Alt Middle Mouse
Automatic Constraint Plane VIEW3D_OT_move Shift Middle Mouse Shift Alt Middle Mouse
## Motivation This feature is intended as a complement to the `'Snap Base' editing feature` (!104443). With this `'Snap Base' editing feature` , consider a scenario where we need to move an object from the bottom of one object to the top of another. Without the ability to rotate the view, this task would be much more difficult and time-consuming. As you can see in the video below: ![GIF 1.gif](/attachments/e63c8118-5486-40b4-8660-332b90ece7c1) If we have the ability to navigate during transformations, this task becomes much more efficient and accurate: ![GIF 2.gif](/attachments/e9151bd3-26c1-4aac-aeef-6c900e72bb0c) This feature provides another benefits as the ability to view the scene from different angles to ensure accuracy during transformations. Additionally, it allows for a more intuitive and user-friendly experience, especially when working with complex scenes and objects. ## Obstacles The biggest hurdle in this feature is the conflicts with the keys used for the current modal modifiers during transform (like the key `Scroll` used to change the size of the area of influence of the proportional editing, among others). This is unfortunate, as these keys are already well integrated into the user's muscle memory. ## Solution To resolve this complication with conflicting keys, only 3 navigation operators will be supported (more may be added over time): - VIEW3D_OT_zoom, - VIEW3D_OT_rotate, - VIEW3D_OT_move, - VIEW3D_OT_pan This feature must be optional and located in the keymaps options. The shortcuts used to activate the transform modifiers will have to be modified as shown in the table attached. |Modal Map (Blender):| Conflict: | Current: | New: |---|---|---|--- | Increase Proportional Influence | VIEW3D_OT_zoom | Wheel Down | Alt Wheel Down | Decrease Proportional Influence | VIEW3D_OT_zoom | Wheel Up | Alt Wheel Up | Adjust Proportional Influence | VIEW3D_OT_rotate | Mouse/Trackpad Pan | Alt Mouse/Trackpad Pan | Increase Max AutoIK Chain Length | VIEW3D_OT_zoom | Wheel Down | Alt Wheel Down | Decrease Max AutoIK Chain Length | VIEW3D_OT_zoom | Wheel Up | Alt Wheel Up | Automatic Constraint | VIEW3D_OT_rotate | Middle Mouse | Alt Middle Mouse | Automatic Constraint Plane | VIEW3D_OT_move | Shift Middle Mouse | Shift Alt Middle Mouse
3.0 MiB
3.9 MiB

Not sure if related but ... one idea we have for the future is to support multi-touch devices. Imagine someone using 2-fingers to rotate the scene, while using the pen to sculpt (or to transform).

I wonder if your proposal helps that in any way.

Not sure if related but ... one idea we have for the future is to support multi-touch devices. Imagine someone using 2-fingers to rotate the scene, while using the pen to sculpt (or to transform). I wonder if your proposal helps that in any way.
Member

It would solve quite a few issues if navigation could be supported during modal operations. Operators like Circle Select are suffering from this.

The proposed changes to the keymaps seem good to me.

It would solve quite a few issues if navigation could be supported during modal operations. Operators like Circle Select are suffering from this. The proposed changes to the keymaps seem good to me.
Author
Member

About multi-touch devices, I just couldn't test pens. But I don't think it will have any conflict.
I was able to test the multi-touch navigation gestures on the trackpad itself.

The solution (currently #105764) has already been thoroughly tested by users on https://blender.chat/ and https://devtalk.blender.org/.

I also made a new topic about it recently: https://devtalk.blender.org/t/snapping-precision-modeling-improvements/28435


The question that concern developers right now is, "What's the best approach?".

I proposed to create a navigation utility (ED_view3d_navigation_do) that can be called by any operator. But other operators (like the Knife tool) use the PASS_THROUGH approach.

Still focusing on creating the utility, I proposed #106279, but for now it might be good to edit the #105764 PR to use the PASS_THROUGH approach. (A utility might be something for later)

About multi-touch devices, I just couldn't test pens. But I don't think it will have any conflict. I was able to test the multi-touch navigation gestures on the trackpad itself. The solution (currently #105764) has already been thoroughly tested by users on https://blender.chat/ and https://devtalk.blender.org/. I also made a new topic about it recently: https://devtalk.blender.org/t/snapping-precision-modeling-improvements/28435 --- The question that concern developers right now is, "What's the best approach?". I proposed to create a navigation utility (`ED_view3d_navigation_do`) that can be called by any operator. But other operators (like the Knife tool) use the `PASS_THROUGH` approach. Still focusing on creating the utility, I proposed #106279, but for now it might be good to edit the #105764 PR to use the `PASS_THROUGH` approach. (A utility might be something for later)
Member

If this change is tested and confirmed by the users of that branch, I do hope devs consider integrating this change into the main branch. From an architect's point of view, this lack of basepoint snapping is the biggest drawback for me trying to recommend Blender to people working in interior design and architecture. Really, Blender has so much potential to be used in these fields.

If this change is tested and confirmed by the users of that branch, I do hope devs consider integrating this change into the main branch. From an architect's point of view, this lack of basepoint snapping is the biggest drawback for me trying to recommend Blender to people working in interior design and architecture. Really, Blender has so much potential to be used in these fields.
Author
Member

Committed 33c13ae6e3

Committed 33c13ae6e3
Blender Bot added
Status
Archived
and removed
Status
Confirmed
labels 2023-05-20 03:48:14 +02:00

Hi. It's a great feature, but where is the option to disable it please (for tutorial purposes)? Can't find it anywhere in the preferences. Also when searching the keymap using the search term 'proportional' the shortcuts to increase and decrease the falloff size aren't listed. Instead the only way to find the new shortcuts is to search the keybindings for 'alt mousewheel', which isn't very handy because people will only be searching if they don't know the shortcut.

Hi. It's a great feature, but where is the option to disable it please (for tutorial purposes)? Can't find it anywhere in the preferences. Also when searching the keymap using the search term 'proportional' the shortcuts to increase and decrease the falloff size aren't listed. Instead the only way to find the new shortcuts is to search the keybindings for 'alt mousewheel', which isn't very handy because people will only be searching if they don't know the shortcut.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#106008
No description provided.