Universal/Free Camera Speed Affects Mouse Rotation

I have a large world that I am using a UniversalCamera to fly through. When I increase the speed of the camera to a large value such as 10, the rotation of the camera is greatly impacted. It seems to affect the acceleration/deceleration of the camera as it is rotated. I am using angularSensibility to control this under normal circumstances, but not sure why camera movement speed is affecting rotational speed/acceleration so much as it increases.

Good morning Psyfun!

I’d love to see a PG with your example. To dive deep into this myself I made a PG where I adjust the speed to 20 and then set keys for moving forward and rotating left. While the forward had a speed increase I don’t see a difference in the rotation. Here is how I am using controls for my camera.

camera.keysDownward = [32];
camera.keysRotateLeft = [32];

Maybe something’s up with the setup. Let’s take a look :smiley:

Thank you for that example. And your Playground is exhibiting the exact behavior I was describing. Using the mouse to rotate the camera is very clunky and it goes back to normal if you reduce the camera speed down to 2 for instance. If you use the keyboard to rotate it works fine. It is only the mouse rotation that is affected. Not sure what the interaction is yet, but I suspect it has to do with easing for starting or slowing down the rotation using the mouse.

I see what you’re getting at now. At first I didn’t notice it. But then when I set it to a VERY high number like 2000 the mouse becomes stiff and almost unusable.

@PolygonalSun might have a thought on this?

As far as I understand, speed is the factor/multiplier applied to all changes in a camera’s direction and rotation vectors. If you increase the speed, the angularSensibility (mouse) and rotationSpeed (keyboard) need to be adjusted to bring the rotation behavior more in line with your desired behavior. I’d imagine that there’s upper bound to how much the speed can be increased before things become unusable. What’s weird is that I’m not seeing any way to modify the directional speed (pan/strafe) for the UniversalCamera exclusively.

Thanks for the info. I have been trying to adjust both to get a smooth operational camera, but I can’t find a combination that works. It seems like the smoothness of the camera is affected because if I move the mouse really fast, it accelerates really quickly and then when I stop, it keeps moving for quite a bit of rotation before settling to a stop. Reminds me of tight animated easing. I may play around with the inertia settings to see how that plays into it. I may have to update the camera rotation algorithm but I can’t see where it is applying or using speed in the FreeCameraMouseInput code. The inertia and speed settings must be getting applied at some other stage than input.

Hello @Psyfun just checking in on your issue, do you still have it?

Yes. If I increase the speed of the camera, it has weird side effects. I can mitigate some of this by reducing or disabling the inertia on the camera. For now, I have changed my UX to quickly jump from one location to another and maintain a slower “local” camera versus being able to fly around the world really fast.

Hmmmm maybe there should be a way to enable the speed to affect only the camera translations? @PolygonalSun what do you think?

I could see an argument being made for adding some kind of directionalSensibility to be added to the FreeCameraKeyboardInput so that you can adjust the movement speed without having to adjust the whole camera’s speed factor. Easiest approach to try locally would be to create a custom input object based off of the FreeCameraKeyboardInput but override the checkInputs function to account for this sensibility factor, rather than just applying the speed factor to your movement.