John Wojnaroski wrote:

Yes, I think I was successful in adding support for asymmetric view
frustums.  It's a bit of a hack to get there, but the way I have set it
up I think is slightly more intuitive than just passing l, r, t, b, n, f
parameters to the glFrustum() function.

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.

1. 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.

2. I created a super wide display with something like --fov=90

3. I added some options to select a portion of this wide screen to draw
onto the individual monitor:


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.

I'm not sure that all makes sense.  It is a little convoluted, but
essentially it allows you to specify a larger symmetric frustum, and
then select a portion of that to get your asymmetric frustum.

Does this still require 3 machines to generate the views for each of the 3
monitors? And does each machine have to generate the full fov of all
objects therein but only display the selected portion? A bit of a performace

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.



Curtis Olson HumanFIRST Program
FlightGear Project
Unique text: 2f585eeea02e2c79d7b1d8c4963bae2d

_______________________________________________ Flightgear-devel mailing list 2f585eeea02e2c79d7b1d8c4963bae2d

Reply via email to