Skip to content
View in the app

A better way to browse. Learn more.

The AVSIM Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Multi-monitor (dual, triple, etc) Stretch/Fisheye Distortion Fix

Featured Replies

  • Author

 

 


I had the same problem as one other above, my result image was centered around the left monitor, so the left third of the view was hidden.
 Are you using surround?  I don't.  My system seems to think the origin of my center console is the origin of my three displays.

Disclaimer:  [email protected] on Asus Maximus X Formula, G.Skill TridentZ RGB 4x8GB 4266/17 XMP, EVGA 2080 ti Kingpin (8400/2160Mhz), Samsung 960 EVO 250GB PCIe M.2 NVMe SSD , 28TB HDD total - 4TB+ photoscenery, Romex Software PrimoCache RAM and SSD cache (must have!), 3x1080p 30" monitors, Samsung Odyssey VR HMD, Pimax 4k & BE HMDs, Samsung Gear VR '17, Homdio v1, Cardboard, custom loop 2x 360x64ML Rads, Thermaltake View 71, VRM watercool, Thermal Grizzly Conductonaut CPU (naked die), Fujipoly / ModRight Ultra Extreme System Builder Thermal Pad on MB VRM. 8x Corsair ML120 (slight positive pressure). 🙂

  • Replies 92
  • Views 26.2k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • E  Earlier I did say this number would vary for you.    I understand following this stuff is like a moon launch; this is why I'm making an installer.

  • Author

So I'll have to account for surround too. 

 

I think I've figured out the quirkyness with the FOV, one example being when the middle is stretched.  Along with what is in the Camaras.CFG, there needs to be an entry in a scenario file (.fxml file found in Documents\Prepar3D v2 Files) that looks like this:

 

 
        <Section Name="Camera.1.33">
            <Property Name="Guid" Value="{638C9EA3-0158-4a4b-AA52-C3A6B37989EF}" />
            <Property Name="Title" Value="AS Virtual Cockpit" />
            <Property Name="PanelOnlyView" Value="False" />
            <Property Name="Zoom" Value="0.43113842606544495" />
            <Property Name="Translation" Value="0, 0, 0" />
            <Property Name="SensorMode" Value="0" />
            <Property Name="Rotation" Value="0, 0, 0" />
            <Property Name="FieldOfView" Value="140, 50" />
            <Property Name="PostProcess.0" Value="AS02" />
        </Section>
 
Where the GUID matches what was put in the Cameras.CFG file, e.g.:
 
[CameraDefinition.020]
Title = AS VC 140x50
Guid = {638C9EA3-0158-4a4b-AA52-C3A6B37989EF}
Description = This is a non-distorted virtual cockpit
Origin = Virtual Cockpit
MomentumEffect = Yes
SnapPbhAdjust = Swivel
SnapPbhReturn = False
PanPbhAdjust = Swivel
PanPbhReturn = False
Track = None
ShowAxis = YES
AllowZoom = TRUE
InitialZoom = 0.6
SmoothZoomTime = 2.0
ZoomPanScalar = 1.0
ShowWeather = Yes
XyzAdjust = TRUE
ShowLensFlare=TRUE
Category = Cockpit
PitchPanRate=30
HeadingPanRate=75
PanAcceleratorTime=0
HotKeySelect=1
ObserverHorizontalFOV=140
ObserverVerticalFOV=50
PostProcess00 = AS02
 
Obviously, make sure the GUID is unique for each FOV, I'll provide them when I do them.  There is a GUID generator found in your Prepar3D folder if you install the SDK.  Nothing to seriously panic about must doing, but the GUID generator makes sure they're more likely to be unique across all systems in the known universe.  (Those things are more important when your software runs across the internet)
 
Also Obviously, I'll have to incorporate this into the proggy.  The one thing I'm concerned about is how will a person access the view with proper FOV if they access outside of that scenario.  It's in my default scenario for testing, and I skip the scenario builder screen and go right to it.  I'll investigate more. 
 
Just a note, so there are two ways to get the AntiStretch shader working:  As an entry in the Cameras.CFG file, accompanied by an entry in a scenario file, as mentioned here.  
And as a Custom Camera, created by right click/ Custom Camera / Save Location.  You'll want to save that scenario to keep from making the camera again, and it also has some quirkyness about keeping the FOV even though it's saved with the Override Default FOV checked, it may not be checked again when you come back to that scenario, and you'll have to View / Edit Custom Cameras to recheck it.
 
Although a little bit closer in to the panel, 140x50 is a little more satisfying than 150x70 when it comes to the grainyness.  But it also comprimises a little bit more on the horizon curvature.
 
I still have a few things to try for the grainyness that I think worked in previous versions (where I did not use an exact algorithm), that I'll be trying.  It might take me a little bit of more understanding of how the texture (that is what the final image you see is called) is put over the view to get it just right.

PS: Best dimensions for 150x40 are roughly 6200 x 2300

Disclaimer:  [email protected] on Asus Maximus X Formula, G.Skill TridentZ RGB 4x8GB 4266/17 XMP, EVGA 2080 ti Kingpin (8400/2160Mhz), Samsung 960 EVO 250GB PCIe M.2 NVMe SSD , 28TB HDD total - 4TB+ photoscenery, Romex Software PrimoCache RAM and SSD cache (must have!), 3x1080p 30" monitors, Samsung Odyssey VR HMD, Pimax 4k & BE HMDs, Samsung Gear VR '17, Homdio v1, Cardboard, custom loop 2x 360x64ML Rads, Thermaltake View 71, VRM watercool, Thermal Grizzly Conductonaut CPU (naked die), Fujipoly / ModRight Ultra Extreme System Builder Thermal Pad on MB VRM. 8x Corsair ML120 (slight positive pressure). 🙂

 Are you using surround?  I don't.  My system seems to think the origin of my center console is the origin of my three displays.

 

Yes, but I tried disabling it with the same result. Looks like the center origin is the origin of the middle display here (337.88 driver).

 

Really appreciate your hard work here btw!

The default 5940 gives better graphics, but the perspective.. oh well.. didn't notice how extremely bad it is before now :)

 

Will try the 150x40.

  • Author

Some more images at 150x40

http://postimg.org/gallery/a48drzcs/

 

For me that gets past the grainyness, but that horizon begins to bug me, as well as not being able to see as much, even though the FOV is much closer to what I should be at with 3 27" monitors, 104x26, which just doesn't work at all for me, I can't see anything.  Even though in real life the panel is up in your face pretty harsh, if you're on the short side you don't see so much over that cowling.

Disclaimer:  [email protected] on Asus Maximus X Formula, G.Skill TridentZ RGB 4x8GB 4266/17 XMP, EVGA 2080 ti Kingpin (8400/2160Mhz), Samsung 960 EVO 250GB PCIe M.2 NVMe SSD , 28TB HDD total - 4TB+ photoscenery, Romex Software PrimoCache RAM and SSD cache (must have!), 3x1080p 30" monitors, Samsung Odyssey VR HMD, Pimax 4k & BE HMDs, Samsung Gear VR '17, Homdio v1, Cardboard, custom loop 2x 360x64ML Rads, Thermaltake View 71, VRM watercool, Thermal Grizzly Conductonaut CPU (naked die), Fujipoly / ModRight Ultra Extreme System Builder Thermal Pad on MB VRM. 8x Corsair ML120 (slight positive pressure). 🙂

 

I've decided to get this out for you all to enjoy.

 
Clear the contents of notepad and paste this: 
 
// Copyright John Lacquey 2014

the full distorted dimension radians - to be multiplied by the current image in the final step.
float colorUfinal = colorU1;// * correctXRatio;  // distortion correction

float targetYRadians = (secantX_bottomOfYTriangle * sin(verticalRadiansOfTarget)) / sin(oppositeTargetAngleRads);
// float maxYRadians = (secantX_bottomOfYTriangle * sin(verticalFOVRadians_newImageYHeight)) / sin

(oppositeMaxYAngleRads);
// the final ratio, to be multiplied by the current image in the final step
float colorV1 = targetYRadians / distortedImageHeight;
float colorVfinal = colorV1;

 
return color;
} 

 

 

You have two errors in the code of your 1st post. (Found with the ContentErrorLog.txt provided by LM)

 

1st: "the full distorted dimension radians" should be quoted out to make ->  "// the full distorted dimension radians"

 

2nd "(oppositeMaxYAngleRads);" should be after the "sin" two lines up

 

Only after making these two changes the shader compiled properly.

And i could see what it was like, which is Motto Revolutionare to say the least. :D

 

I still have to get the right dimensions but i`m sure i will be playing/flying with it for a long time after everything is setup right.

(only using it on singlescreen and i haven`t tried the autohotkey part of it yet, only made the shaderfiles and created a camera in P3D.)

  • Author

I'd like to be able to see instruments and the runway as I approach.  This will require a much higher FOV to begin with, which means I need to fix the grainy problem.  I also will have a go at using the zoom, matching them up to FOVs, if I can.   When I get into the dll calls I'll get into some better options, working on the FOV and graphics for now.


 

 


You have two errors in the code of your 1st post.
 This is why I posted a link later.  Thanks. I don't seem to get the same messages in the contenterrorlog.txt .  I should take another look, although it's kinda too late.  Debugging this was a little bit harder without a debugger.

I really appreciate the comments, as it gives me a way to show that I'm sharing my insanity to my wife, who gives me a little more leeway for it.  LOL


I'd like to record video, but offhand I don't know how to do that in 5760

Disclaimer:  [email protected] on Asus Maximus X Formula, G.Skill TridentZ RGB 4x8GB 4266/17 XMP, EVGA 2080 ti Kingpin (8400/2160Mhz), Samsung 960 EVO 250GB PCIe M.2 NVMe SSD , 28TB HDD total - 4TB+ photoscenery, Romex Software PrimoCache RAM and SSD cache (must have!), 3x1080p 30" monitors, Samsung Odyssey VR HMD, Pimax 4k & BE HMDs, Samsung Gear VR '17, Homdio v1, Cardboard, custom loop 2x 360x64ML Rads, Thermaltake View 71, VRM watercool, Thermal Grizzly Conductonaut CPU (naked die), Fujipoly / ModRight Ultra Extreme System Builder Thermal Pad on MB VRM. 8x Corsair ML120 (slight positive pressure). 🙂

 This is why I posted a link later.  Thanks. I don't seem to get the same messages in the contenterrorlog.txt .  I should take another look, although it's kinda too late.  Debugging this was a little bit harder without a debugger.

I really appreciate the comments, as it gives me a way to show that I'm sharing my insanity to my wife, who gives me a little more leeway for it.  LOL

 

Probably a copy and paste problem from the file to the Avsim forum.

Great tweak.

Id like to try it but a bit lost with all the updates and mods.

Can you post some updated step by step instructions?

 

Thanks,

 

Nat

I'm watching and waiting too. Would love to get rid of the fishbowl effect. Any chance of a simple walkthrough - I'm a little confused with the different instructions so far.

Kael Oswald

9950X3D/ 64GB DDR5 6200 @ CL30 / Custom Water Loop / RTX 5090 / 3 x 48" LG C4 OLEDs

It is actually not that hard/pretty simple once you`ve got it working.

(btw you dont need to do the autohotkey part to properly see what the idea is, after saving the 2 files and creating the camera in P3D you can see what it is all about (it just looks a bit like flying with a helmet on because the image doesnt cover the entire screen))

 

A step by step vid would probably be most helpful to most people.

  • Author

I'm gonna try to get an installer out ASAP.   There is a good chance it'll be today.

Disclaimer:  [email protected] on Asus Maximus X Formula, G.Skill TridentZ RGB 4x8GB 4266/17 XMP, EVGA 2080 ti Kingpin (8400/2160Mhz), Samsung 960 EVO 250GB PCIe M.2 NVMe SSD , 28TB HDD total - 4TB+ photoscenery, Romex Software PrimoCache RAM and SSD cache (must have!), 3x1080p 30" monitors, Samsung Odyssey VR HMD, Pimax 4k & BE HMDs, Samsung Gear VR '17, Homdio v1, Cardboard, custom loop 2x 360x64ML Rads, Thermaltake View 71, VRM watercool, Thermal Grizzly Conductonaut CPU (naked die), Fujipoly / ModRight Ultra Extreme System Builder Thermal Pad on MB VRM. 8x Corsair ML120 (slight positive pressure). 🙂

Would it work with FSX or is it a P3D thing only? I'm running both sims but the fishbowl is just as bad in each.

Kael Oswald

9950X3D/ 64GB DDR5 6200 @ CL30 / Custom Water Loop / RTX 5090 / 3 x 48" LG C4 OLEDs

btw i think i have a solution for needing to set the FOV ingame all the time.

 

I`ve added the code below to the camera.cfg, which is pretty much the same as you suggested before.

Only thing is i changed the CameraDefinition. nr to 091 since 019 seemed to conflict with an already existing cameradef in the savedflight.fxml file, after doing this i can now just load a flight and select the camera, without needing to make any adjustment.

 

I also don`t need to make the custom camera in P3D anymore. (I just need make the 2 shaderfiles and edit the camera.cfg to get it to work)

(i`m going to play with the autohotkey part later today.)

 

[CameraDefinition.091]
Title = AS01 Virtual Cockpit
Guid = {84304EBD-5823-485e-AEB6-8D1839B84D17}
Description = AS01 correction
Origin = Virtual Cockpit
MomentumEffect = Yes
SnapPbhAdjust = Swivel
SnapPbhReturn = False
PanPbhAdjust = Swivel
PanPbhReturn = False
Track = None
ShowAxis = YES
AllowZoom = False
InitialZoom = 0.4771 
SmoothZoomTime = 1.0
ZoomPanScalar = 1.0
ShowWeather = Yes
XyzAdjust = TRUE
ShowLensFlare=FALSE
Category = Cockpit
PitchPanRate=256
HeadingPanRate=256
PanAcceleratorTime=0
HotKeySelect=1
ObserverVerticalFOV=72.61 //for single screen 1920 by 1200 at 80cm distance
ObserverHorizontalFOV=78.92 //for single screen 1920 by 1200 at 80cm distance
PostProcess00 = AS01
 

  • Author

E


CameraDefinition. nr to 091 since 019 seemed to conflict with an already existing cameradef

 Earlier I did say this number would vary for you.  

 

I understand following this stuff is like a moon launch; this is why I'm making an installer.

Disclaimer:  [email protected] on Asus Maximus X Formula, G.Skill TridentZ RGB 4x8GB 4266/17 XMP, EVGA 2080 ti Kingpin (8400/2160Mhz), Samsung 960 EVO 250GB PCIe M.2 NVMe SSD , 28TB HDD total - 4TB+ photoscenery, Romex Software PrimoCache RAM and SSD cache (must have!), 3x1080p 30" monitors, Samsung Odyssey VR HMD, Pimax 4k & BE HMDs, Samsung Gear VR '17, Homdio v1, Cardboard, custom loop 2x 360x64ML Rads, Thermaltake View 71, VRM watercool, Thermal Grizzly Conductonaut CPU (naked die), Fujipoly / ModRight Ultra Extreme System Builder Thermal Pad on MB VRM. 8x Corsair ML120 (slight positive pressure). 🙂

E

 Earlier I did say this number would vary for you.  

 

I understand following this stuff is like a moon launch; this is why I'm making an installer.

 

Well the nr 19 wasnt used yet in the camera.cfg, but it already existed in the "savedflight.fxml"

(Saved flight files are in ".../My Documents/Prepar3D_v2_Files")

 

In the savedflight-file are all the camera`s for the flight that is loaded, those cams come from the camera.cfg and from the aircraft.cfg.

When you have already loaded a flight (which is how pretty everyone of us starts the program) that cameranr has already been taken and cant properly be added to the current flight even if you use a not yet taken nr in the camera.cfg.

Probably when creating a flight it first loads all the camera`s from Camera.cfg and then adds the camera`s from Aircraft.cfg, so 1 of the aircraft.cfg-cams already has got nr 019.

(which is the reason it didn`t show up in my menu before i made the change to the nr)

 

I`m loving the effect tho going back to default has already become impossible.

 

So thanks very much already.

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.