X Tutup
Skip to content

Rename Select Mode to Transform Mode, and create a new Select Mode without transform gizmo#101168

Merged
Repiteo merged 1 commit intogodotengine:masterfrom
Open-Industry-Project:real-select-mode
Nov 19, 2025
Merged

Rename Select Mode to Transform Mode, and create a new Select Mode without transform gizmo#101168
Repiteo merged 1 commit intogodotengine:masterfrom
Open-Industry-Project:real-select-mode

Conversation

@ryevdokimov
Copy link
Contributor

@ryevdokimov ryevdokimov commented Jan 6, 2025

Closes: godotengine/godot-proposals#7834

Related: #87756

Currently bound to V, open to suggestions. This can be changed to be anything by modifying shortcuts in the editor, in case people want this to be the option bound to Q.

Region selection works even when initiated on top of a node, which is another benefit of this mode.

Edit: See below video for updated icon.

2025-01-05.20-09-14.mp4

Thanks to @didrif for providing the SVG for the transform tool.

image

@badsectoracula
Copy link
Contributor

I just tried it and it looks fine (and useful), however selecting a node with its own special handles it will still cause these handles to show up - e.g. selecting a CollisionShape3D shows the handles to resize the shape, so you can still accidentally change something you didn't mean to:

image

Shouldn't these handles also not show up when in selection-only mode?

@ryevdokimov
Copy link
Contributor Author

Shouldn't these handles also not show up when in selection-only mode?

I thought for a bit on this when developing this functionality and decided against it because I figured if you're selecting a collision node for example, you are trying to actively modify it (but not necessarily its transform). Typically, those gizmos are not occluding anything behind them that you would want to select, at least not as bad as the transform gizmo. In Blender for example you also have a few special gimzos you can modify even in select mode.

@badsectoracula
Copy link
Contributor

Yeah i guess this might be a bit niche (i do not have strong opinion either way) and if needed it could most likely be done as a separate "View ..." check in the viewport menu alongside "View gizmos", "View transform gizmo", etc.

Actually, is the "View transform gizmo" option even needed anymore with this PR?

@ryevdokimov
Copy link
Contributor Author

ryevdokimov commented Jan 6, 2025

Actually, is the "View transform gizmo" option even needed anymore with this PR?

I personally like it because it allows you to do certain things that maybe you can't with other modes/settings. For example, hiding the transform gizmo only applies to single viewport. Also, the underlying function of the chosen mode still works even without the gizmo being visible, like being able to rotate an object by just dragging anywhere on the screen. Of course, using blender instant transform bindings can serve a similar purpose, but some people might prefer the alternative this functionality offers.

In general, I'm of the philosophy that you should be able to hide or modify just about everything. I made a proposal a while back to change the editor viewport message to a label so even that can be hidden/modified at least via plugins: godotengine/godot-proposals#8789

301301199-e87626f3-8766-4ddd-b686-4e8b997ed116.mp4

@badsectoracula
Copy link
Contributor

badsectoracula commented Jan 6, 2025

Also, the underlying function of the chosen mode still works even without the gizmo being visible, like being able to rotate an object by just dragging anywhere on the screen.

Ah yeah you are correct. This is very useful for 2D views (i mean the axis aligned orthographic views in 3D scene) though Godot's implementation is a bit lacking because you can't change the selected item from any mode, it doesn't work in the multi-gizmo mode and in 3D it is pretty much never what you want (it should really only be used for translation even in multi-gizmo mode and use the closest plane box instead of a screen aligned plane).

I first encountered something similar in Radiant (the level editor family) and while it took me a long time to get used to it, i realized it can be much faster to work with than the more common "point and click on a handle/arrow/widget to move it" approach most tools use.

That'd probably be something for a new proposal though, not really relevant to this PR.

@ryevdokimov ryevdokimov force-pushed the real-select-mode branch 2 times, most recently from 08aa465 to da97675 Compare March 14, 2025 15:13
@ryevdokimov ryevdokimov requested a review from a team as a code owner March 14, 2025 15:13
@ryevdokimov ryevdokimov force-pushed the real-select-mode branch 2 times, most recently from 7a16f29 to 67fb9c8 Compare March 14, 2025 15:22
@ryevdokimov
Copy link
Contributor Author

image

Updated icon thanks to @didrif

@fire
Copy link
Member

fire commented Apr 10, 2025

I wanted to note that we need to check for keyboard key conflicts with both maya and blender style.

@ryevdokimov
Copy link
Contributor Author

Did you mean to post this in the related PR? #87756 I don't think this one will have any conflicts.

@Calinou
Copy link
Member

Calinou commented Apr 10, 2025

@passivestar @lander-vr Could you give this PR a try when you have time?

@passivestar
Copy link
Contributor

Currently bound to V, open to suggestions. This can be changed to be anything by modifying shortcuts in the editor, in case people want this to be the option bound to Q.

Assuming the idea for V came from 2D editors like Photoshop/Affinity it's worth noting that in those apps V is move mode (which is equivalent to transform mode of this PR, not select mode). For example V mode allows rotating in affinity:

image

Does 2D also need extra select mode? Right now 2D select mode moves nodes just like 3D transform mode. They probably should be consistent?

Currently bound to V

Seems to be bound to Q btw, V doesn't work and I don't see the revert button in settings:

image

@ryevdokimov ryevdokimov force-pushed the real-select-mode branch 2 times, most recently from 3e8960b to a11632f Compare April 11, 2025 16:53
@ryevdokimov
Copy link
Contributor Author

ryevdokimov commented Apr 11, 2025

Assuming the idea for V came from 2D editors like Photoshop/Affinity it's worth noting that in those apps V is move mode (which is equivalent to transform mode of this PR, not select mode). For example V mode allows rotating in affinity:

It was mostly arbitrary based on what was available, I am completely open to suggestions on this.

Does 2D also need extra select mode? Right now 2D select mode moves nodes just like 3D transform mode. They probably should be consistent?

I don't use 2D nearly as much as 3D, but I can say that the issues of not having a tool like this in 3D are vastly more pronounced and a legitimate usability issue. We'd have to get the opinions of people that use 2D a lot more to see if they'd want something like this.

Seems to be bound to Q btw, V doesn't work and I don't see the revert button in settings:

This is fixed (as long we keep V as a binding). This apparently affects the selection tool for game mode as well since it understandably uses the same shortcut.

@ryevdokimov ryevdokimov requested a review from a team August 18, 2025 12:01
@ryevdokimov
Copy link
Contributor Author

Rebasing after: #109465

Verified that everything still works.

select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->set_theme_type_variation(SceneStringName(FlatButton));
select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->connect(SceneStringName(pressed), callable_mp(this, &GameView::_select_mode_pressed).bind(RuntimeNodeSelect::SELECT_MODE_SINGLE));
select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->set_shortcut(ED_GET_SHORTCUT("spatial_editor/tool_select"));
select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->set_shortcut(ED_SHORTCUT("spatial_editor/tool_select", TTRC("Select Mode"), Key::V));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's this change for?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I realized this actually makes sense, but not in this form.
The select mode here is used both for 2D and 3D, so it should probably be a separate shortcut. It can be done in a separate PR, since it's not really related.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good.

@KoBeWi
Copy link
Member

KoBeWi commented Sep 7, 2025

Does 2D also need extra select mode?

2D doesn't have full transform gizmo, so it doesn't have this issue.

@KoBeWi KoBeWi modified the milestones: 4.x, 4.6 Sep 7, 2025
@KoBeWi KoBeWi requested a review from Calinou September 7, 2025 15:35
@Rawalanche
Copy link

Great to see this finally happening. I think it should be bound to Q since Godot defaults to W/E/R Move/Rotate/Scale hotkey standard, and W/E/R layout is usually complemented by Q being the select key, not multi-transform key.

As @passivestar mentioned, V is usually used for context-based transform tools in other software, so it would be an ideal candidate for the multi-transform mode, and Q would become the select mode.

@ryevdokimov ryevdokimov force-pushed the real-select-mode branch 2 times, most recently from eef6176 to a791657 Compare October 12, 2025 06:12
@ryevdokimov
Copy link
Contributor Author

Keeping select as Q makes sense to me especially with it being the current default for the game mode which does work as a regular select.

I've switched the key for the new select mode to Q and transform mode to V.

I've also moved the button for the transform tool to right of scale to keep the Q,W,E,R sequence, and it helps it look more visually distinct when not adjacent to the move tool.

image

@Repiteo Repiteo merged commit 11ba422 into godotengine:master Nov 19, 2025
20 checks passed
@Repiteo
Copy link
Contributor

Repiteo commented Nov 19, 2025

Thanks!

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.

Add a setting to disable Select Mode manipulator gizmo

8 participants

X Tutup