godot icon indicating copy to clipboard operation
godot copied to clipboard

Editor FOV Affects Gizmo Size

Open MrGreaterThan opened this issue 4 years ago • 6 comments

Godot version:

Godot_v3.2.4-rc1_mono_win64

OS/device including version:

Windows 10 Pro 10.0.19041, GTX1080TI, Ryzen 2700x, GLES3, C#

Issue description:

If the editor FOV is halved editor gizmos become twice as large. With a wide FoV, round objects such as planets will appear stretched into an oblong shape near the edges of the screen. Therefore it is best to narrow the FOV for games that are set in space and occupy large distances. Unfortunately this affects editor gizmos such as the camera icon and makes them obnoxiously large.

It's a low priority and reasonably easy to work around, but editor icon size should be independent of FOV or should be size adjustable.

Steps to reproduce: image image image image

Minimal reproduction project:

Not needed, the concept is visible with pictures.

MrGreaterThan avatar Feb 08 '21 03:02 MrGreaterThan

I think this is expected to happen when the StandardMaterial3D's Fixed Size property is enabled (which 3D gizmos use). Fixing this would likely require adding yet another property to StandardMaterial3D…

Calinou avatar Feb 08 '21 10:02 Calinou

From a user perspective this is not at all expected. I expect my editor UI to be independent of my scene. What my scene looks like should not affect the UI/Gizmos, as those are my tools to make changes to the scene. As a user I need to be able to adjust them separately from my scene.

The solution to this would be render Godots viewport UI on top of everything in "it's own world", as a separate pass, just like you would render your game UI in it's own world, not affected by Camera and WorldEnvironments settings of your game. This really needs to be changed.

Also related: https://github.com/godotengine/godot-proposals/issues/2138

golddotasksquestions avatar Apr 25 '21 15:04 golddotasksquestions

The solution to this would be render Godots viewport UI on top of everything in "it's own world", as a separate pass, just like you would render your game UI in it's own world, not affected by Camera and WorldEnvironments settings of your game. This really needs to be changed.

Even if you render gizmos in a separate pass, you have to use the same FOV in both passes for things to line up correctly. Unless you mean that gizmos should be drawn in 2D and projected over the 3D viewport, but this will prevent them from being occluded by solid materials (which is sometimes desired).

Calinou avatar Apr 25 '21 15:04 Calinou

If the editor UI is rendered as a separate render pass it means all the occlusion has already has already been applied before the pass is ready to be rendered on top of everything else. Things like icons can be stored as 2D positional value with the top left corner as 0.0 Vector.2 Then placed in 2D and merged before the final UI pass is finished together with the axis, grid or other things the user wants to be occluded by the scene objects. This results in occluded UI that is not affected by WE and UI icons that can have any size the user wants, most importantly however they don't change the size when the user changes the viewport default FOV.

As far as I know this is how render passes worked since the dawn of CGI. I know unlike other engines we don't really have proper render passes in Godot, but I think it sucks and really needs to be changed, not only because it over-complicates and cripples post processing during game development due to spaghetti workflows, but also because it is a showstopper for basic editor usability functionality as this example here and the WorldEnvironment one clearly illustrates.

golddotasksquestions avatar Apr 25 '21 15:04 golddotasksquestions

I think this is expected to happen when the StandardMaterial3D's Fixed Size property is enabled (which 3D gizmos use). Fixing this would likely require adding yet another property to StandardMaterial3D…

Resurrecting an old issue, because I have the same "problem" in a game/scene I am working on, and I am wondering if the current behaviour is objectively correct, or if it's up for discussion. I don't want my damage indicators (fixed size billboard Label3D) to become larger when the player uses ADS. I would expect fixed size objects to stay the same size regardless of camera FOV. Does the majority of users prefer the current scaling, or is it used for implementation complexity reasons?

JohanAR avatar Jan 25 '25 13:01 JohanAR

This still hasn't been fixed. I don't understand why it's so difficult to implement a solution to this problem, or if the developers simply don't want to fix it. The gizmo icon size shouldn't affect all other display settings; it should be a separate setting. Incidentally, I don't understand why disabling the gizmo in the viewport settings also disables the camera itself (the rectangle with the arrow at the top). What's stopping you from disabling just the object icon (the camera or the sun, for example)?

MrDixioner avatar Dec 08 '25 10:12 MrDixioner