For direct access use https://forums.oldunreal.com
It's been quite a while since oldunreal had an overhaul, but we are moving to another server which require some updates and changes. The biggest change is the migration of our old reliable YaBB forum to phpBB. This system expects you to login with your username and old password known from YaBB.
If you experience any problems there is also the usual "password forgotten" function. Don't forget to clear your browser cache!
If you have any further concerns feel free to contact me: Smirftsch@oldunreal.com

Please apply widescreen adjustments (FOV) to FlyBy camera also

Report bugs, read about fixes, new features and ask questions about the Unreal 227 patch here. Place comments and commit suggestions.
Post Reply
User avatar
Hyper
OldUnreal Member
Posts: 3515
Joined: Fri Oct 11, 2002 5:41 pm
Contact:

Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by Hyper »

I switched to an ultra wide screen setup (21:9) and Unreal really handles this nicely. (Fov 120 for me atm)
However, it becomes quite noticeable that the FlyBy camera does not properly use the new FoV value causing a lot of vertical cutoff. You can simulate this by running Unreal in a letterbox sized window, apply a proper FoV and then type "open unreal" in console.
Last edited by Hyper on Sun May 01, 2016 12:59 pm, edited 1 time in total.
The man who stopped a tsunami

http://www.hypercoop.tk
unreal://hypercoop.tk
User avatar
Masterkent
OldUnreal Member
Posts: 1469
Joined: Fri Apr 05, 2013 12:41 pm

Re: Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by Masterkent »

It seems, InterpolationPoint actors override user's FOV settings by applying FovModifier to the default FOV (90 degrees?). Such actors are also used, for example, on level ExtremeEnd, and the given effect can be observed there too.
User avatar
Hyper
OldUnreal Member
Posts: 3515
Joined: Fri Oct 11, 2002 5:41 pm
Contact:

Re: Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by Hyper »

Can this be changed? Or will that break other things?
The man who stopped a tsunami

http://www.hypercoop.tk
unreal://hypercoop.tk
User avatar
.:..:
OldUnreal Member
Posts: 1635
Joined: Tue Aug 16, 2005 4:35 am

Re: Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by .:..: »

This technically can be fixed, by rather then setting FOV to match exactly the value of InterpolatingPoints. Instead check the FOV scaling value of IP, then set player FOV to DefaultFOV multiplied by the scaling value.
1823223D2A33224B0 wrote:...and now im stuck trying to fix everything you broke for the next 227 release xD :P
(ಠ_ಠ)
User avatar
Hyper
OldUnreal Member
Posts: 3515
Joined: Fri Oct 11, 2002 5:41 pm
Contact:

Re: Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by Hyper »

I never knew that interpolation points had their own FoV setting.
The man who stopped a tsunami

http://www.hypercoop.tk
unreal://hypercoop.tk
User avatar
Masterkent
OldUnreal Member
Posts: 1469
Joined: Fri Apr 05, 2013 12:41 pm

Re: Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by Masterkent »

This technically can be fixed, by rather then setting FOV to match exactly the value of InterpolatingPoints. Instead check the FOV scaling value of IP, then set player FOV to DefaultFOV multiplied by the scaling value.
I think, it should be something like

FovAngle = atan(tan(InterpolatedFov * M_PI / 360) * tan(DesiredFov * M_PI / 360)) * 360 / M_PI

where InterpolatedFov is the angle produced by applying FovModifiers of InterpolationPoints to the base FOV value (90 degrees, as far as I can see). I don't know how exactly that angle is calculated in the current implementation (it's not in UScript).
Last edited by Masterkent on Thu May 05, 2016 9:56 am, edited 1 time in total.
User avatar
.:..:
OldUnreal Member
Posts: 1635
Joined: Tue Aug 16, 2005 4:35 am

Re: Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by .:..: »

Well the InterpolatingPoint FOV modifier seams to be a scaling value instead of FOV angle, so that means we can simply go with this:
[code]((APlayerPawn*)this)->FovAngle = (Dest->FovModifier * (1.0 - PhysAlpha) + Dest->Next->FovModifier * PhysAlpha) * ((APlayerPawn*)this)->DesiredFOV;[/code]
Last edited by .:..: on Thu May 05, 2016 11:36 am, edited 1 time in total.
1823223D2A33224B0 wrote:...and now im stuck trying to fix everything you broke for the next 227 release xD :P
(ಠ_ಠ)
User avatar
Masterkent
OldUnreal Member
Posts: 1469
Joined: Fri Apr 05, 2013 12:41 pm

Re: Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by Masterkent »

Well the InterpolatingPoint FOV modifier seams to be a scaling value instead of FOV angle, so that means we can simply go with this:
[code]((APlayerPawn*)this)->FovAngle = (Dest->FovModifier * (1.0 - PhysAlpha) + Dest->Next->FovModifier * PhysAlpha) * ((APlayerPawn*)this)->DesiredFOV;[/code]
There is a problem with such a multiplication, because FOV angle is not something that we can scale linearly. An alternative representation of the horizontal FOV angle is the ratio of horizontal projection to frontal projection of a point that lies either on the left screen border or on the right screen border. Unlike angles, this ratio is often scaled linearly when a user wants to adjust horizontal FOV for a wide screen with preserving the same vertical FOV as if we had for 4:3 display and horizontal FOV of 90 degrees (in this case vertical FOV = 2 × arctan(tan(90°/2) × 3/4) [ch8776] 73.74°).

For 16:9 screen we have the corresponding horizontal FOV angle 2 × arctan(tan(90°/2) × 16/9 / (4/3)) [ch8776] 106.26°.
For 21:9 screen we have the corresponding horizontal FOV angle 2 × arctan(tan(90°/2) × 21/9 / (4/3)) [ch8776] 120.51°.

When preserving the same vertical FOV, the tangent of the horizontal FOV angle grows proportionally to the width/height ratio, while the angle grows unproportionally to that ratio.

Now suppose that a mapper decided to set FovModifier of an InterpolationPoint to 1.5 that normally corresponds to 90° × 1.5 = 135°. How should this multiplier (1.5) be applied to the initial horizontal FOV of 120°? Should we just multiply the angle itself or probably multiply the tangent of its half as shown above instead? Let's see what we get in either case:

I) 120° × 1.5 = 180° - insane FOV, we'll get a random bunch of pixels instead of an image.
II) 2 × arctan(tan(120°/2) × tan(90°/2 × 1.5)) [ch8776] 153.10° - scaling the ratio between projections gives a reasonable FOV value. In the middle 4:3 vertically fitting area of a 21:9 display the image should look like it would be displayed on a 4:3 display.

So, I'd suggest to use something like this:

[code]double InterpolatedFov = 90 * (Dest->FovModifier * (1.0 - PhysAlpha) + Dest->Next->FovModifier * PhysAlpha);
InterpolatedFov = Clamp(InterpolatedFov, 0.1, 179.) * M_PI / 180;
double DesiredFov = Clamp(static_cast(this)->DesiredFOV, 0.1, 179.) * M_PI / 180;
double Fov = 2 * std::atan(std::tan(InterpolatedFov / 2) * std::tan(DesiredFov / 2));
static_cast(this)->FovAngle = float(Fov * 180 / M_PI);[/code]
Last edited by Masterkent on Sat May 07, 2016 7:06 pm, edited 1 time in total.
User avatar
[]KAOS[]Casey
OldUnreal Member
Posts: 4497
Joined: Sun Aug 07, 2011 4:22 am
Location: over there

Re: Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by []KAOS[]Casey »

not to mention there are other ratios like 5:3, 16:10, 21:10 etc..
User avatar
Masterkent
OldUnreal Member
Posts: 1469
Joined: Fri Apr 05, 2013 12:41 pm

Re: Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by Masterkent »

Probably, PlayerPawn.UpdateEyeHeight should be modified (in addition to the above). Namely, in

Code: Select all

if ( FOVAngle != DesiredFOV )
{
      if ( FOVAngle > DesiredFOV )
            FOVAngle = FOVAngle - FMax(7, 0.9 * DeltaTime * (FOVAngle - DesiredFOV));
      else
            FOVAngle = FOVAngle - FMin(-7, 0.9 * DeltaTime * (FOVAngle - DesiredFOV));
      if ( Abs(FOVAngle - DesiredFOV) 
the first condition should be changed to

Code: Select all

if ( !bInterpolating && FOVAngle != DesiredFOV )
Last edited by Masterkent on Sat May 07, 2016 6:00 am, edited 1 time in total.
User avatar
Hyper
OldUnreal Member
Posts: 3515
Joined: Fri Oct 11, 2002 5:41 pm
Contact:

Re: Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by Hyper »

I don't understand a bit about the code, but I'm happy to see that it is being considered / worked at. :-)
The man who stopped a tsunami

http://www.hypercoop.tk
unreal://hypercoop.tk
User avatar
Masterkent
OldUnreal Member
Posts: 1469
Joined: Fri Apr 05, 2013 12:41 pm

Re: Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by Masterkent »

I don't understand a bit about the code, but I'm happy to see that it is being considered / worked at. :-)
Without proper checking, the resulting implementation can be worse than the existing one :D
Last edited by Masterkent on Sat May 07, 2016 7:15 pm, edited 1 time in total.
User avatar
Hyper
OldUnreal Member
Posts: 3515
Joined: Fri Oct 11, 2002 5:41 pm
Contact:

Re: Please apply widescreen adjustments (FOV) to FlyBy camera also

Post by Hyper »

I don't understand a bit about the code, but I'm happy to see that it is being considered / worked at. :-)
Without proper checking, the resulting implementation can be worse than the existing one :D
I consider this to be true without hesitation. :-)
The man who stopped a tsunami

http://www.hypercoop.tk
unreal://hypercoop.tk
Post Reply

Return to “Unreal 227”