New editor camera controls in 2019.1 are great, but...

Please, make the scroll wheel change the speed exponentially, let us turn off acceleration, and remove the arbitrary speed cap at 99x. Even though 99 seems high, some of us work in huge scenes and need to quickly zoom around them.

An example of why the linear change in speed is a problem is that when I have it set to 0.5x, one scroll tick will take me up to 3.5x, a 600% increase, but when I’m at 66x, it will take me to 68x, which is only a ~3% change! This means that if I tweak something at a small level and want to move to another area of my scene, I have to scroll like crazy to go from 0.5x to 99x. On the other end, if I have the speed set high and I’m approaching an area I would like to work in, the camera will grind to a complete stop because it is impossible to know how many scroll ticks will bring it down to a reasonable “local” speed.
To further complicate things, the acceleration kicks in halfway and makes it very hard to end up where I want.
Now, I understand the idea behind the acceleration, but it is much better to allow the user to control the speed themselves, and set up the multipliers to fit their game type.
I previously used an editor script I had created myself which did exactly this, but the new update to the scene camera broke it. From testing I can tell you that multiplying the camera speed with 1.5 for up and 0.75 for down feels very easy to control.

This stuff is so rudimentary to implement, yet it has a huge impact on editor workflow. If you don’t want to confuse the user with too many variables, please hide it in the editor preferences.
Also please note that when I say acceleration, I am not talking about the “camera easing” feature. I am talking about the hidden acceleration that kicks in after you’ve moved the camera for a few seconds.
I also noticed that there is a SceneView.CameraSettings class. Unfortunately the variables don’t seem to be exposed to script, which is a shame.

Big props to the Unity team for finally getting on this, but it still has ways to go.

5 Likes

Please. Camera acceleration is so annoying, I thought 2019.1 would be the update to fix this (with “camera easing”) but I was seriously wrong. At least have it as a toggle.

6 Likes

The more options the better.

I’m not sure whether it helps, but when I’m zooming in/out significantly in the scene view, I almost always use alt-rmb + drag for quick movement. I believe it’s still based on the same increment as the scroll wheel, but I always feel like it moves much faster than I can get with the mouse wheel.

Is there a way to turn off the acceleration and/or momentum in the 2019 editor camera controls? There must be an option somewhere ?
for every editor camera move, I now have to wait… and re adjust position after it moves too far or not far enough… I would really like to just turn this off please. It wastes my time.

Did you try adjusting the stuff in this menu? Maybe you want to turn off Easing.

4786127--456944--upload_2019-7-25_15-4-56.png

8 Likes

I actually am the creator of an asset, Snapcam: NAVIGATION STUDIO which aims to fix scene camera controls with its View Navigator.

The pre-2019 version of my asset did a great job of this, however Unity’s bizarre acceleration has always been an issue, and is a particular pain point in 2019.1 since it requires me to rewrite Unity’s entire scene camera controller (AGAIN) to fix just a few issues.

These issues include:

  • Acceleration – It sucks because there is no maximum speed your camera can accelerate before it stops – I have to stop, then move forward again (slowwwly) until the speed becomes too fast/unbearable to be useful again.

  • Orbiting – Doing this around a selected object sucks because Alt+RMB doesn’t orbit the center of the selected object. Also, it should be SHIFT+RMB as the shortcut (but THIS should be configurable!!)

  • Zooming – This still sucks because I can’t zoom forever forward (at a steady pace I can set) for straight movement, while also zooming into the current object’s center when a gameobject is selected (and I am holding a modifier key because SOMETIMES I don’t want to zoom into the object’s center).

If Unity would just be willing to allow me to override all of their scene camera controller’s functionality (or just let me make my own), I would fix these issues myself!

I could then tweak it to my (and my users’) needs. I wouldn’t need to jump through hoops with crazy reflection magic just to get a usable UI / UX experience with the scene camera controller!!

Any chance of this happening, @willgoldstone ?

Like you guys, I thought 2019.1 had finally fixed scene camera controls. I was clearly wrong.

1 Like

Thanks much ! will give that a try :slight_smile:
Yeah the momentum is terrible, camera keeps moving after I let go… and if I tap to move forwards a little at a time… it moves different speeds. not useful.
Cheers ! this should help.

Update:-
Yep, its much more precise with the easing turned off. Thanks

It should maybe have 2 check-boxes… one for ease-in (acceleration) and one for ease-out (deceleration, when you let go of input) and a different float tweak value for each.

Unity 2019.3 comes with settings to adjust camera acceleration and deceleration. It can be turned off too. Perhaps it was even 2019.2, can’t remember exactly.

Looks like this is present in 2019.2 – yay! :slight_smile:

I still want to use IShortcutToolContext in my shortcuts like Unity is able to. :confused:

It’s not possible to add any interactive scene controls without this.
For example, if I want to add my own camera orbit behavior or a gradual position/rotation modifier via keystrokes for a gameobject – I can’t.
Lots of cool tools will never be possible to create thanks to the new shortcut system without access to this feature.

Hey @awesomedata did you try 19.3 to see if it resolves what you need ?

Sorry for the delay, @willgoldstone , but I’m still digging into 2019.3 to try to understand which issues you’re referring to.

I still see the flythrough camera controller and all related controls/methods are internal and none of the methods or classes are able to be overridden, interfaced with, or added onto (or even disabled so one can write their own camera controller with better orbit). Also none of the orbit/zoom issues mentioned above are fixed in 2019.3b3 either.

Also the IShortcutToolContext is also still internal, so I still see no way to handle global shortcuts that can be both assigned via the ShortcutManager that also activate independent of the keyboard repeat rate. For example, holding R or G keys to gradually update a value (or to tweak the camera orbit method to orbit around an object in the SceneView) all without waiting for the Windows repeat rate to kick in since I want it to happen instantaneously (while also using the shortcut manager to let the tool user assign their keys to the method being executed so that I don’t have to program my own shortcut system for Unity to handle tools like scene camera controls.)

The more you give users freedom to deal with realtime input to manage things in the editor itself, the more innovative and useful tools you’ll find being created. And realtime tools are all the rage right now (as you’re probably finding with the Terrain Editor), so it’d be a great time for it.

2 Likes

I guess I’m in the minority here but I was very used to zooming with the mouse wheel while holding the right mouse button (I rotate the camera with right mouse button and in the meantime, zoom in/zoom out as necessary with the mouse wheel). Now the mouse wheel changes the movement speed which is not what I am used to.

Is it possible to restore the old behaviour with a simple toggle or should I write an editor script for it?

P.S. I know that I can zoom in/zoom out by simply releasing the right mouse button or use ALT+Left mouse button to orbit around an object, I was just used to the old behaviour of right mouse button+mouse wheel combination, so please don’t recommend me to just get used to the new behaviour.

It sounds easy, but I’ve done this before (pre-2019) for my asset, Snapcam, and have been looking into writing my own editor scripts for changing the new 2019 camera behavior too, but this is proving even more tedious than pre-2019. Although it’s ‘possible’ to write your own scene view camera behaviors, on some level you will still have to rewrite the scene camera controller from scratch just to somewhat ‘tweak’ the default camera behavior (while also being unable to disable anything from the current scene camera controller’s behaviors).

This means you have to cancel-out each and every behavior (and every shortcut) you don’t want or just want to modify from Unity’s scene camera controller that might conflict with your behavior. This is impossible in some cases, and unwieldy in others. And in the case of mouse usage to modify the scene camera in general, this is a MAJOR pain because of how Unity handles its shortcuts and mouse events under the hood to modify the SceneView’s camera controller internally.

:frowning:

Unity should let us extend and override everything and anything on the existing Scene CameraController so that making the scene camera behave as you want it is possible, while also making it behave as I want it to is possible as well…

@willgoldstone – Any chance this is in the cards?

3 Likes

@awesomedata Lucky for me, it was actually very simple to change the mouse wheel’s behaviour with this editor script:

using UnityEditor;
using UnityEngine;

[InitializeOnLoad]
public class EditorCameraTest
{
    private const float CAMERA_SPEED = -0.25f;

    private static bool rmbDown = false;

    static EditorCameraTest()
    {
        SceneView.beforeSceneGui -= OnScene;
        SceneView.beforeSceneGui += OnScene;
    }

    private static void OnScene( SceneView scene )
    {
        Event e = Event.current;
        if( e.isMouse && e.button == 1 )
        {
            if( e.type == EventType.MouseDown )
                rmbDown = true;
            else if( e.type == EventType.MouseUp )
                rmbDown = false;
        }
       
        if( e.isScrollWheel && rmbDown )
        {
            Vector3 pivot = scene.pivot;
            pivot += scene.camera.transform.forward * ( e.delta.y * CAMERA_SPEED );
            scene.pivot = pivot;

            e.Use();
        }
    }
}
6 Likes

Thanks for posting your code. Although the RMB “Tool” still executes, it’s cool to note that stops some default events from happening at least.

Now how to move the camera properly with the WASD keys (without the keyboard repeat rate interfering) using the Shortcut Manager… That’s the real challenge…

Hello,
I’m trying to use unity 2019. But since i’m used of the old shortcuts, this window is preventing me to scroll everytime i change my view direction in the scene view, and it’s super boring. See here :

I’ve tryed to change it in the shortcut section of unity, but it is not here.

Are you aware of a way to remove this window so I can navigate correctly, just like in the old unity versions ?

Thank you

Are you using WASD + RMB to navigate? If so, do you think it is a bug with the shortcuts themselves? I know single-letter keys don’t have the instant repetition they used to.
Now single letter keys repeat at the rate of the OS (after a delay). Perhaps that is the issue?

What version of the 2019.x editor are you using?

I was having problems with this and I just turned off acceleration and easing made the min and max camera speed close to the same and the problem stopped immediately. Huge help.

1 Like

THIS!!! Thank you so much. Urgh. Why would that remove/override that workflow feature I have no idea.
I feel as tho not many people need to change their camera speed that often but zooming in while looking around is helpful to everybody no?

1 Like