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

Camera Viewport speed relative to distance from object #80

Open
aknittel1 opened this issue Oct 21, 2022 · 1 comment
Open

Camera Viewport speed relative to distance from object #80

aknittel1 opened this issue Oct 21, 2022 · 1 comment
Labels
enhancement New feature or request

Comments

@aknittel1
Copy link

I'm experimenting with landscapes and open worlds. Is there a way to set either unreal or the spacemouse parameters so the speed is relative to the distance from the object selected (slow for close, fast for distant)? It just seems very slow when high above a landscape and too finicky when I am zoomed in on an object WITHIN the landscape. I have to constantly adjust the speed as I fly through the landscape, to the point where I am close to that Metahuman, the slightest touch of the Spacemouse to Pan jerks the actor out of view.

BTW I use this same mouse in Blender with their built-in driver and there is none of this constant camera speed adjusting equivalent needed no matter what I'm looking at or where I am in 3d space. It just does the right thing.

For instance, this setting in UE sounds like it has SOMETHING to do with what I'm desiring:

bUseDistanceScaledCameraSpeed=True

But i turned this off and on with NO EFFECT on the space mouse.

I'm using these project settings by the way which have served me well on other non-open world projects:

[/Script/SpaceMouse.SpaceMouseConfig]
CameraBehavior=OrbitingNoRoll
MovementSecondsTolerance=1.0
RotationDegreesPerSec=20.000000
PitchAxisMap=(X=0.000000,Y=1.000000,Z=0.000000)
RollAxisMap=(X=0.000000,Y=0.000000,Z=0.000000)
TranslationUnitsPerSec=500.000000
XTranslationAxisMap=(X=0.000000,Y=1.000000,Z=0.000000)
YTranslationAxisMap=(X=-1.000000,Y=0.000000,Z=0.000000)
ZTranslationAxisMap=(X=0.000000,Y=0.000000,Z=1.000000)
SpaceMouse_UE_Issue
YawAxisMap=(X=0.000000,Y=0.000000,Z=-1.000000)
MaxHidReadOperationsPerFrame=2048
DisplayDebugInformation=False
ActiveInBackground=False
IncreaseSpeedButton=SpaceMouseUE_KeyF2

I have your code and can build it now, but you would have to guide me in what to modify or change.

@microdee
Copy link
Owner

microdee commented Oct 22, 2022

I have your code and can build it now, but you would have to guide me in what to modify or change.

Oh nice! So the naive solution is pretty simple: here I trace a line on the center of the screen and calculate the orbiting distance:

if(world->LineTraceSingleByChannel(hit, startpoint, endpoint, ECC_Visibility, ColQuery))

You can use this distance to manipulate the speed of the camera. I'd suggest to create a configuration for enabling this, and maybe allow the user to specify a curvature which would modulate the relation between distance and speed. Once you're satisfied, it would be amazing if you'd make a PR for it ;)

As a sidenote, 3DConnexion's official plugin and therefore their official navigation scheme does something similar (lowering the speed automatically when object surfaces are nearby). I'm not too big fan of that because I like manual control, but it's my own acquired taste.

@microdee microdee added the enhancement New feature or request label Oct 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants