3 Monitor Set Up for 2 Thrustmaster MFDs and 1 Main Monitor w/Auto Scaling - ED Forums
 


Notices

Reply
 
Thread Tools Display Modes
Old 10-09-2018, 06:59 AM   #1
Naruto
Junior Member
 
Join Date: Apr 2005
Posts: 43
Default 3 Monitor Set Up for 2 Thrustmaster MFDs and 1 Main Monitor w/Auto Scaling

Working in V2.5.3.22176



I created a new Lua file called "LMFCD + Camera + RMFCD automatic placement" in the C:\Program Files\Eagle Dynamics\DCS World OpenBeta\Config\MonitorSetup folder. This will set the main monitor and MFD monitors to auto correct and fill in the MFD data to the resolution of your second and third monitor. Here is the script I used to set it up:

_ = function(p) return p; end;
name = _('LMFCD + Camera + RMFCD automatic placement');
Description = 'Camera on primary display and Left MFCD on secondary'

if displays and #displays > 1 then
primary =
{
x = displays[1].x - screen.x,
y = displays[1].y - screen.y,
width = displays[1].width,
height = displays[1].height,
aspect = displays[1].width/displays[1].height;
viewDx = 0;
viewDy = 0;
}
secondary =
{
x = displays[2].x - screen.x,
y = displays[2].y - screen.y,
width = displays[2].width,
height = displays[2].height,
}
tertiary =
{
x = displays[3].x - screen.x,
y = displays[3].y - screen.y,
width = displays[3].width,
height = displays[3].height,
}
else
primary =
{
x = screen.width / 2;
y = 0;
width = screen.width / 2;
height = screen.height;
viewDx = 0;
viewDy = 0;
aspect = screen.aspect / 2;
}
secondary =
{
x = 0;
y = 0;
width = screen.width / 2;
height = screen.height;
}
end

UIMainView = primary
RIGHT_MFCD = secondary
LEFT_MFCD = tertiary
Viewports = {UIMainView}

I originally had LEFT_MFCD = secondary and RIGHT_MFCD = tertiary but they MFDs came out reversed.




I was using 10 inch monitors so I had to modify the script slightly to make the MFD symbology smaller and centered on my screens so the displays will fit inside a thrustmaster MFD that I ordered and will arrive Thursday. Here is the slight tweak to the above script based on my monitor sizes, yours will need to be adjusted depending on what size monitors you have. I may buy smaller monitors later since the ones I'm using were originally for X Plane 11 C172 G1000 Displays cockpit I planned on building.

_ = function(p) return p; end;
name = _('LMFCD + Camera + RMFCD automatic placement');
Description = 'Camera on primary display and Left MFCD on secondary'

if displays and #displays > 1 then
primary =
{
x = displays[1].x - screen.x,
y = displays[1].y - screen.y,
width = displays[1].width,
height = displays[1].height,
aspect = displays[1].width/displays[1].height;
viewDx = 0;
viewDy = 0;
}
secondary =
{
x = displays[2].x - screen.x + 256, {this moved the data from the upper left corner to the center of the monitor, this comment does not need to be included in the script}
y = displays[2].y - screen.y, {I could probably add value here to move the data down some, this comment does not need to be included in the script}
width = 512,
height = 512,
}
tertiary =
{
x = displays[3].x - screen.x + 256,
y = displays[3].y - screen.y,
width = 512,
height = 512,
}
else
primary =
{
x = screen.width / 2;
y = 0;
width = screen.width / 2;
height = screen.height;
viewDx = 0;
viewDy = 0;
aspect = screen.aspect / 2;
}
secondary =
{
x = 0;
y = 0;
width = screen.width / 2;
height = screen.height;
}
end

UIMainView = primary
RIGHT_MFCD = secondary
LEFT_MFCD = tertiary
Viewports = {UIMainView}



I also changed the font size of the MFD data to make it more readable C:\Program Files\Eagle Dynamics\DCS World OpenBeta\Mods\aircraft\FA-18C\Cockpit\Scripts\Multipurpose_Display_Group\Common\indicator\MDG_strokesDefs.lua

stroke_thickness = 0.6

stroke_fuzziness = 0.2

This will also change the Hud font size to so adjust to your own preference.



Also make sure you select the higher resolution in the DCS monitor Resolution drop down menu in the UI so all the monitors will turn on in DCS. I'm sure you can keep modifying the code to add more monitors and other displays like the RWR, UFC, AMPCD and IFEI

Also RIGHT_MFCD and LEFT_MFCD must be capitalized at bottom of the script or the data will not show up on the monitors for some reason.

Credit goes to Capt Zeen for some of the info here and ED for some of the auto scaling script I modified to add a third monitor. All credit goes to them as I just messed around playing with their info until I figured out how to add a third monitor for a second TM MFD.

Only works for F-18C, AV8BNA and A-10C that I have tested at the moment. The AV8BNA needs the external Left_MFCD and Right_MFCD key bindings to be set to a key or HOTAS button to work correctly.

Last edited by Naruto; 10-10-2018 at 01:01 AM.
Naruto is offline   Reply With Quote
Old 10-09-2018, 05:32 PM   #2
Svsmokey
Member
 
Join Date: Dec 2017
Location: Dystrumpia
Posts: 570
Default

Thanks much for this !
__________________
I5-6500 3.2ghz cpu, 16 gb ddr4-2133mhz , Asrock H170M PRO4 , 128gb & 240gb ssd's , 1tb hdd , EVGA 1070 FE , TiR5 , BenQ 1080p monitor , CH hotas and pedals

"Hold my beer"
Svsmokey is offline   Reply With Quote
Old 10-10-2018, 03:06 AM   #3
Naruto
Junior Member
 
Join Date: Apr 2005
Posts: 43
Default



Did some testing and here is the script for adding a fourth monitor that work fine with the AMPCD. I have it set for auto scaling and I moved the Left and Right MFD data down to the center of the screen. I actually like the Center MFCD that big since I can actually read the map now.

_ = function(p) return p; end;
name = _('LMFCD + Camera + RMFCD + AMPCD automatic placement');
Description = 'Camera on primary display and Left Right AMPCD MFCD on secondary, tertiary and quaternary'

if displays and #displays > 1 then
primary =
{
x = displays[1].x - screen.x,
y = displays[1].y - screen.y,
width = displays[1].width,
height = displays[1].height,
aspect = displays[1].width/displays[1].height;
viewDx = 0;
viewDy = 0;
}
secondary =
{
x = displays[2].x - screen.x + 256,
y = displays[2].y - screen.y + 128,
width = 512,
height = 512,
}
tertiary =
{
x = displays[3].x - screen.x + 256,
y = displays[3].y - screen.y + 128,
width = 512,
height = 512,
}
quaternary =
{
x = displays[4].x - screen.x,
y = displays[4].y - screen.y,
width = displays[4].width,
height = displays[4].height,
}
else
primary =
{
x = screen.width / 2;
y = 0;
width = screen.width / 2;
height = screen.height;
viewDx = 0;
viewDy = 0;
aspect = screen.aspect / 2;
}
secondary =
{
x = 0;
y = 0;
width = screen.width / 2;
height = screen.height;
}
end

UIMainView = primary
RIGHT_MFCD = secondary
LEFT_MFCD = tertiary
CENTER_MFCD = quaternary
Viewports = {UIMainView}
Naruto is offline   Reply With Quote
Old 10-18-2018, 09:37 PM   #4
apd1004
Junior Member
 
apd1004's Avatar
 
Join Date: Apr 2011
Posts: 23
Default

I like the 4 monitor configuration, that is exactly what I have.

When I tried the lua for the 4 monitor config though, for some reason the AMPCD map did not display on the second larger monitor, it was just a black screen. The yellow cursor cross would move around on it but no map was visible. The map was up and running on the main cockpit display though.

How do you have your monitor placement configured in Windows, or is that not an issue with auto placement?
apd1004 is offline   Reply With Quote
Old 10-18-2018, 09:49 PM   #5
Naruto
Junior Member
 
Join Date: Apr 2005
Posts: 43
Default

Quote:
Originally Posted by apd1004 View Post
I like the 4 monitor configuration, that is exactly what I have.

When I tried the lua for the 4 monitor config though, for some reason the AMPCD map did not display on the second larger monitor, it was just a black screen. The yellow cursor cross would move around on it but no map was visible. The map was up and running on the main cockpit display though.

How do you have your monitor placement configured in Windows, or is that not an issue with auto placement?
You have to move the lower setup around and try different ones. Windows monitor identifier don't always match the script below with DCS for some reason. The right MFD is actually my third monitor in windows and the Left MFD is my second but they were on the wrong monitors when I fired up DCS and had to reverse them in the script. Not sure why it does that.


Play around with these, trial and error until you get the right data on the right monitor. Once you do, then fix the code to match the size you want or select the code for auto scaling. I also found that if you turn off you monitors in windows or in DCS and turn them back on, it screws with the order sometimes and you have to find the right match again. Found out when I was playing in VR and powered of my monitors and Windows messed with the identifier order.

UIMainView = primary
RIGHT_MFCD = secondary
LEFT_MFCD = tertiary
CENTER_MFCD = quaternary
Viewports = {UIMainView}

FYI when I say auto scaling I mean the script will just make the mfd size fit full size of your monitor resolution. I recommend you remove the manual location and size script and make them all auto scaling and get the data on the right monitor first then manually resize the left and right mfd data.

The following script will make all four monitors auto scale to the max size of each of your particular monitors resolution:

_ = function(p) return p; end;
name = _('LMFCD + Camera + RMFCD + AMPCD automatic placement');
Description = 'Camera on primary display and Left Right AMPCD MFCD on secondary, tertiary and quaternary'

if displays and #displays > 1 then
primary =
{
x = displays[1].x - screen.x,
y = displays[1].y - screen.y,
width = displays[1].width,
height = displays[1].height,
aspect = displays[1].width/displays[1].height;
viewDx = 0;
viewDy = 0;
}
secondary =
{
x = displays[2].x - screen.x,
y = displays[2].y - screen.y,
width = displays[2].width,
height = displays[2].height,
}
tertiary =
{
x = displays[3].x - screen.x,
y = displays[3].y - screen.y,
width = displays[3].width,
height = displays[3].height,
}
quaternary =
{
x = displays[4].x - screen.x,
y = displays[4].y - screen.y,
width = displays[4].width,
height = displays[4].height,
}
else
primary =
{
x = screen.width / 2;
y = 0;
width = screen.width / 2;
height = screen.height;
viewDx = 0;
viewDy = 0;
aspect = screen.aspect / 2;
}
secondary =
{
x = 0;
y = 0;
width = screen.width / 2;
height = screen.height;
}
end

UIMainView = primary
RIGHT_MFCD = secondary
LEFT_MFCD = tertiary
CENTER_MFCD = quaternary
Viewports = {UIMainView}

Last edited by Naruto; 10-19-2018 at 12:55 AM.
Naruto is offline   Reply With Quote
Old 10-19-2018, 03:49 AM   #6
apd1004
Junior Member
 
apd1004's Avatar
 
Join Date: Apr 2011
Posts: 23
Default

I suppose I should give an up-front disclaimer to say that this is my first attempt at lua scripting in about 7 years since A-10C first came out. About a week ago I decided to get back into flight simming.

Anyway, this is what I end up with when I use the script from your edited #5 above.



What I need to do is get the right displays on the right monitors and get them 1:1 instead of 16:9. I'll play around with it a little to see what I can do with it.

The mini-monitors are 7" 1280x720 16:9 monitors, but they are a bit too small for the Thrustmaster Cougar MFDs. I'll see how they work but I'll probably end up going with something bigger. I also may hook up an older 15" square flat panel I have for the map and make that a 5th monitor off to the left, leaving the right hand 25" for things like flight manuals, nav charts, etc.

Thanks for giving me a place to start!
apd1004 is offline   Reply With Quote
Old 10-19-2018, 04:27 AM   #7
Naruto
Junior Member
 
Join Date: Apr 2005
Posts: 43
Default

Thats what the auto scaling script does is make the data the full size of the monitor.

Try changing the following:

UIMainView = primary
RIGHT_MFCD = secondary
LEFT_MFCD = tertiary
CENTER_MFCD = quaternary
Viewports = {UIMainView}

to

UIMainView = primary
CENTER_MFCD = secondary
LEFT_MFCD = tertiary
RIGHT_MFCD = quaternary
Viewports = {UIMainView}

That should swap the two screen or you can swap plugs in you video card but that will make the windows monitor number not match anymore. Its easier to edit the script. If that does not work, swap the CENTER_MFCD, LEFT_MFCD and RIGHT_MFCD around the secondary, tertiary and quaternary descriptors. Once the data is on the right monitors you want, then go up to the LEFT_MFCD and RIGHT_MFCD script marked as secondary, tertiary or quaternary and change the width and height to the specific size you want like width = 512, height =512 or what ever you want like I did in my 4 monitor setup in post #3. Once you manually change the size it will put the smaller MFD data in the upper left corner starting at x=0, y=0. If you want to move the data right and down, the just add + values to the x = displays[?].x - screen.x and y = displays[?].y - screen.y, like I did in my post #3. You need to play with the values since everyone will have different resolution monitors. Hope it's not too confusing but it will work.

Just be aware that if you make the left and right MFCD data smaller on screen, it will get fuzzy as the lines get thicker, you will need to edit it as stated in Post #1

I also changed the font size of the MFD data to make it more readable C:\Program Files\Eagle Dynamics\DCS World OpenBeta\Mods\aircraft\FA-18C\Cockpit\Scripts\Multipurpose_Display_Group\Common\indicator\MDG_strokesDefs.lua

stroke_thickness = 0.6

stroke_fuzziness = 0.2

This will also change the Hud font size to so adjust to your own preference.

I wonder if ED has a script name for the kneeboard, it would be nice to export it to a seperate monitor so its not overlayed on the main cockpit display. Also be aware that if by adding all these monitors, the resolution on the UI is much bigger, then the "Show Control Panel" will not longer be in the lower left corner of the main screen. You will have to edit the ControlsIndicator_page.LUA too and that is a value you will have to mess with to put it back in the lower left corner of the main screen again.

It's located in the following folder:
C:\Program Files\Eagle Dynamics\DCS World OpenBeta\Mods\aircraft\FA-18C\Cockpit\Scripts\ControlsIndicator

Original vale was the following:
base.init_pos = {0,-(1 - 2.0*size_x)}

New value is the following for my setup:
base.init_pos = {0.80, -0.2}

Start with mine since yours is a 4 monitor setup too but you may have to tweek values.

Good luck!

Last edited by Naruto; 10-21-2018 at 03:09 AM.
Naruto is offline   Reply With Quote
Old 10-19-2018, 05:01 AM   #8
apd1004
Junior Member
 
apd1004's Avatar
 
Join Date: Apr 2011
Posts: 23
Default

That did the trick, making the center MFCD the secondary instead of quaternary.

The little 7" monitors are 720 high so I just made the display 720x720 and offset the left one in from the left edge to put it on the right side of the monitor. Same thing with the map display, just made it 1080 x 1080 to square it up.



Thanks for pointing me in the right direction!
apd1004 is offline   Reply With Quote
Old 10-19-2018, 05:13 AM   #9
Naruto
Junior Member
 
Join Date: Apr 2005
Posts: 43
Default

Quote:
Originally Posted by apd1004 View Post
That did the trick, making the center MFCD the secondary instead of quaternary.

The little 7" monitors are 720 high so I just made the display 720x720 and offset the left one in from the left edge to put it on the right side of the monitor. Same thing with the map display, just made it 1080 x 1080 to square it up.



Thanks for pointing me in the right direction!
Glad I could help, I edited my post about the show control panel info since its get messed up. Good luck with that if you use it for trimming.

Last edited by Naruto; 10-19-2018 at 05:27 AM.
Naruto is offline   Reply With Quote
Old 10-20-2018, 06:22 AM   #10
Naruto
Junior Member
 
Join Date: Apr 2005
Posts: 43
Default





My final monitor set up. Put the two 10" monitors away and decide to go with one 4k monitor and one 12" 1366 x 768 monitor for both Left and Right MFDs and one 15" 1280 x 1024 monitor for the center MFD so I can read it better. This just looks cleaner. To control the AMPCD buttons, I just used left control key as a modifier and used the right Thrustmaster MFD buttons together. Below is the script I made.

_ = function(p) return p; end;
name = _('3 Monitor LMFCD + Camera + RMFCD + AMPCD');
Description = 'Camera on primary display and AMPCD MFCD on secondary'

if displays and #displays > 1 then
primary =
{
x = displays[1].x - screen.x,
y = displays[1].y - screen.y,
width = displays[1].width,
height = displays[1].height,
aspect = displays[1].width/displays[1].height;
viewDx = 0;
viewDy = 0;
}
secondary =
{
x = displays[2].x - screen.x,
y = displays[2].y - screen.y,
width = displays[2].width,
height = displays[2].height,
}
LEFT_MFCD =
{
x = displays[3].x - screen.x,
y = displays[3].y - screen.y,
width =600,
height = 600,
}
RIGHT_MFCD =
{
x = displays[3].x - screen.x + 780,
y = displays[3].y - screen.y,
width = 600,
height = 600,
}
else
primary =
{
x = screen.width / 2;
y = 0;
width = screen.width / 2;
height = screen.height;
viewDx = 0;
viewDy = 0;
aspect = screen.aspect / 2;
}
secondary =
{
x = 0;
y = 0;
width = screen.width / 2;
height = screen.height;
}
end

UIMainView = primary
CENTER_MFCD = secondary
Viewports = {UIMainView}

Note that in windows 10, my 15" monitor is listed as #3 and the 12" monitor is listed as #2. In the script, its reversed to get the MFD data on the right monitors. I have no clue why its like this so some experimentation is required on your part.

Last edited by Naruto; 10-21-2018 at 03:19 AM.
Naruto is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT. The time now is 12:11 PM. vBulletin Skin by ForumMonkeys. Powered by vBulletin®.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.