Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bind Blender-style translate, rotate and scale shortcuts in the 3D editor #78148

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Calinou
Copy link
Member

@Calinou Calinou commented Jun 12, 2023

These used to have no binds by default, which severely limited their discoverability. I noticed this while testing #59467 locally.

The default bindings are the same as in Blender: G for translate, R for rotate, S for scale.

The default shortcut for the Rotate tool has been moved to Ctrl + R (Cmd + R) on macOS to accomodate for this change. While this makes the shortcut less consistent with the usual "Q-W-E-R-T" line of shortcuts, quick rotation with Blender-style transforms is arguably more convenient during day-to-day editor operation. To avoid breaking people's muscle memory, we should try to use shortcuts as similar as possible to Blender's.

The S key is only used for scaling if not currently in freelook mode.

@Calinou Calinou requested a review from a team as a code owner June 12, 2023 17:05
@Calinou Calinou added this to the 4.x milestone Jun 12, 2023
@Riteo
Copy link
Contributor

Riteo commented Jun 12, 2023

Uh I was wondering why they weren't bound, I supposed that it was intended behaviour. I suppose that I'm not the only one to have thought this so this PR would definitely help a lot.

akien-mga
akien-mga previously approved these changes Jun 12, 2023
@fire
Copy link
Member

fire commented Jun 13, 2023

I'm ok with this. I think that some of the other engines expect maya bindings though, but that's not a direct relationship to this pr.

@akien-mga
Copy link
Member

The default shortcut for the Rotate tool has been moved to Ctrl + R (Cmd + R) on macOS to accomodate for this change. While this makes the shortcut less consistent with the usual "Q-W-E-R-T" line of shortcuts, quick rotation with Blender-style transforms is arguably more convenient during day-to-day editor operation. To avoid breaking people's muscle memory, we should try to use shortcuts as similar as possible to Blender's.

I'm a bit concerned about that change, as it does break the whole Q-W-E-R-T line which people might have developed muscle memory for. It can be changed back, but it's a breaking change and it makes the remaining Q-W-E and T shortcuts inconsistent.

@YuriSizov
Copy link
Contributor

I would say that the pattern to bind those hotbar actions to Q-W-E-R-T isn't something you commonly find in other tools. Semantic binds make more sense, IMO, or binds that match other similar software. This connection to Q-W-E-R-T also doesn't always make sense in non-Latin layouts, and prevents us from rearranging the buttons on the hotbar, should we want to. I wouldn't restrict us in this way.

@YuriSizov YuriSizov modified the milestones: 4.x, 4.3 Oct 12, 2023
@Nodragem
Copy link
Contributor

Nodragem commented May 23, 2024

I think the users should have the option to reverse to the "traditional binding" if they want to. Or alternatively, the new system should be integrated in a way that does not disrupt the previous system.

Q-W-E-R-T isn't something you commonly find in other tools. Semantic binds make more sense, IMO

This is not true, Maya and Unity uses exactly QWER for select, pan, rotate and scale. Substance 3D Painter and Unreal use WER for pan, rotate, scale. Houdini shifts them one key to the right using ERT.

Sparseal Uniform that was released by a former Blender developer last week also goes for a "grid key" system mapping QWE, ASD, ZXC to shorcuts, which seems very powerful.

In terms of the Semantic binds, it sounds convincing on a theoritical level for memorisation (e.g. ATL+M for merge). But in practice, we want the users to:

  • look as less as possible to their keyboard,
  • move their hand as less as possible across the keyboard (everything on the left if right handed; Vim-like shortcut),
  • only press one key at a time to avoid Repeated Strain Injuries (e.g. pressing CTRL+M or CTRL+SHIFT+G with one hand is begging for RSI)

These above points are why the industry is binding Select, Pan, Rotate, Scale on QWER.
As someone who suffers from RSI, I know how painful it is to have to deal with combination shorcuts, so I am not too keen in using CTRL+R to access the rotation tool 😢 .

To avoid breaking people's muscle memory, we should try to use shortcuts as similar as possible to Blender's.

I mean, we could argue that Blender is breaking the muscle memory of everyone coming from another software 😄 haha!
But, in any case, I think it does not matter that Godot has different keyboard hotkeys/shorcuts if these shortcuts are better designed. You will remember shorcuts that are fun to use and just wish that other software do it this way too.

This connection to Q-W-E-R-T also doesn't always make sense in non-Latin layouts

Is there a way to automatically convert QWERT to AZERT when on a French keyboard for instance? to be honest, that would be useful for any First Person Shooter game as well 😃 ! But that's basically a whole other problem.

Suggested Solution:
What I would like to suggest is to integrate the new system in a way that complements the previous one. We would still have the gizmo tools for pan, rotate, scale when using WER. Then if I press a second time W,E, or R I enter the blender style "no gizmo" tools for pan, rotate, scale. From then on, to use WER would pan, rotate, scale as in Blender (no gizmo). If I pressed a second time W, E, or R, I come back to Gizmo mode. A simple tooltip would be displayed at the left top corner to tell the user about the feature.

Example. I press R, the rotation gizmo appears and a tooltip on the left top corner says: Press R again to enter the Blender Mode (no gizmo) rotation tool. I pressed R and rotate as in Blender. Now, I press W and I enter the pan/move tool. Importanly, the pan/move tool automatically starts in "Blender Mode" because I was in "Blender Mode" when rotating. A tooltip is displayed at the left top corner that says: Press W again to switch to the Gizmo Mode pan/move tool.. I press W, the gizmo is back. If I press R, I enter the rotation tool in Gizmo Mode because I was in "Gizmo Mode" when paning.

Alternatively, if we could just use the TAB key to switch between Blender mode and Gizmo mode (a small movement from QWER).

Hope this is useful.

@Calinou
Copy link
Member Author

Calinou commented May 23, 2024

Is there a way to automatically convert QWERT to AZERT when on a French keyboard for instance? to be honest, that would be useful for any First Person Shooter game as well 😃 ! But that's basically a whole other problem.

Yes, using physical key shortcuts. We already use this for the freelook shortcuts since 4.2. The issue is that conflicts can arise due to keyboard layout translation if only some of the editor shortcuts are physical (and not all of them).

@akien-mga akien-mga modified the milestones: 4.3, 4.x Jun 28, 2024
…itor

These used to have no binds by default, which severely limited their
discoverability.

The default bindings are the same as in Blender: G for translate, R
for rotate, S for scale.

The default shortcut for the Rotate tool has been moved to Ctrl + R
(Cmd + R) on macOS to accomodate for this change. While this makes
the shortcut less consistent with the usual "Q-W-E-R-T" line of shortcuts,
quick rotation with Blender-style transforms is arguably more convenient
during day-to-day editor operation. To avoid breaking people's muscle memory,
we should try to use shortcuts as similar as possible to Blender's.

The S key is only used for scaling if not currently in freelook mode.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants