20,741
edits
(→Success !: http://flightgear.org/forums/viewtopic.php?f=36&t=19858&p=182757#p182754) |
(→Asymmetric View Frustrums: http://www.mail-archive.com/flightgear-devel@flightgear.org/msg30981.html) |
||
| Line 47: | Line 47: | ||
I should point out that we also have some capabilities for configuring asymmetric view frustums if you need that. We use a higher level mechanism (that meshed well with what we already had in place) so you specify a larger screen and then specify the horizontal and vertical subsections of that larger display that will be shown on a particular monitor. This probably doesn't cover all asymmetric view frustum needs, but it does let you do a lot in a way that people can conceptually get their head around (rather than using obscure l, r, t, b, n, f numbers that takes an opengl guru to derive.) | I should point out that we also have some capabilities for configuring asymmetric view frustums if you need that. We use a higher level mechanism (that meshed well with what we already had in place) so you specify a larger screen and then specify the horizontal and vertical subsections of that larger display that will be shown on a particular monitor. This probably doesn't cover all asymmetric view frustum needs, but it does let you do a lot in a way that people can conceptually get their head around (rather than using obscure l, r, t, b, n, f numbers that takes an opengl guru to derive.) | ||
For my specific need I wanted 3 monitors side by side in a straight line, and I wanted the projection plane to also be a straight line. So referencing your link, Example 1 is what we originally could do, but is not what I wanted. I wanted to do something similar to Example .... errr ... I guess there isn't an example on that page of what I wanted to do. Kind of like Example 5 I guess except with the "red" line (plane of projection) extending straight across. The center view frustum would be symmetic and the sides would be asymmetric. I realize this isn't "correct" but I need a compromise to build a display system that look "reasonable" from a large variety of perspectives at the same time. | |||
So anyway, here's my approach. Let's say I wanted 3 monitors, each covering 30 degrees FOV. | |||
* I added an --aspect-ratio-multipler=x.xx option. FG automatically calculates aspect ratio based on X, Y screen resolution. This option scales the Y FOV. | |||
* I created a super wide display with something like --fov=90 --aspect-ratio-multiplier=0.33333 | |||
* I added some options to select a portion of this wide screen to draw onto the individual monitor: | |||
<pre> | |||
--prop:/sim/current-view/frustum-left-pct=0.00000 | |||
--prop:/sim/current-view/frustum-right-pct=0.333333 | |||
</pre> | |||
This gives me the leftmost 1/3 of my wide (--fov=90) screen. And the aspect ratio multiplier option allows me to get the desired vertical field of view. | |||
Well, technically, my scheme still requires a separate running copy of FG and a separate video card for each monitor. I've had the best results doing this from 3 different machines, but I've heard stories of others having reasonable results with running multiple copies of FG on a single machine. At the moment FG doesn't have direct support for opening up multiple windows to drive multiple displays from a single instance of FG. | |||
There really isn't any extra performance hit though for asymmetric view frustums. The frustum is trimmed down before the cull and draw phase. | |||
I should say though that most people will just want to point their displays perpendicular to the viewer and use a more standard/straightforward symetric view frustums. I had to do asymmetric view frustums for a particular project with specialized needs. We ended up with a combination of compromises that I wasn't entirely happy about. We were trying to achieve a middle of the road solution that wasn't perfect anywhere, but wasn't horrible anywhere either. | |||
== Syncing multiple instances == | == Syncing multiple instances == | ||