Walkthroughs with PHIGS

Walkthroughs with PHIGS

Post by Lou Ro » Fri, 28 Feb 1992 05:40:07



I am looking for some ideas on a PHIGS problem that I have.

My application is a walkthrough (simulation) around an office building.
My data is from a conglomerate of CAD systems, and is quite large
(~ 100Mb). I'm using PHIGS (no other choices here, ie, GL is not an option).

The problem is that the PHIGS rendering takes an awful long time,
bacause the application is sending an *entire* database (ie, room)
to be rendered, but I'm only displaying a small portion of the
database, given the eye-point.  For example, data behind the eye is being
rendered, but not displayed.  What a waste of compute!

What techniques can I apply in the application, to avoid all this
unnecessary render?  I thought of partitioning (or sectioning)
the data, and sending "chosen" partitions of data to be rendered.
BUT, this leads into questions of effectiveness, for example,
"how" do I select partitions in front of the eye-point when I have
transparent objects (like windows) in the data?

BTW - Using PHIGS name sets and invisibility filters did not help,
so this is not an option.

Does anyone have any experience with this type of problem?

Thanks in advance for your ideas,

Lou.

 
 
 

Walkthroughs with PHIGS

Post by Rich Thoms » Sat, 29 Feb 1992 09:07:05




Quote:>My application is a walkthrough (simulation) around an office building.
>My data is from a conglomerate of CAD systems, and is quite large
>(~ 100Mb). I'm using PHIGS (no other choices here, ie, GL is not an option).

>The problem is that the PHIGS rendering takes an awful long time,
>bacause the application is sending an *entire* database (ie, room)
>to be rendered, but I'm only displaying a small portion of the
>database, given the eye-point.  For example, data behind the eye is being
>rendered, but not displayed.  What a waste of compute!

Well, there are simple tests that a renderer can perform on an object
to decide whether or not to render it.  The rendering is what is
time-consuming.  Objects behind the eye point should be clipped against
the view volume.  Where the rendering can be expensive is when you
have many polygons on top of each other and only the polygon closest
to the eye should be visible.  One technique is to segment the
database based on a visibility calculation.  Then use invisibility
filters to turn off those portions that are not potentially visible
based on the current viewpoint.  Primitives that are 'invisible' are
simply skipped during traversal.

Quote:>What techniques can I apply in the application, to avoid all this
>unnecessary render?  I thought of partitioning (or sectioning)
>the data, and sending "chosen" partitions of data to be rendered.
>BUT, this leads into questions of effectiveness, for example,
>"how" do I select partitions in front of the eye-point when I have
>transparent objects (like windows) in the data?

There was a paper in this last year's SIGGRAPH that talks about
segmenting the database:

    _Visibility Preprocessing For Interactive Walkthroughs_
    Seth J. Teller, Carlo H. Sequin, University of California at
    Berkeley

The paper discusses exactly the problem you describe.

Quote:>BTW - Using PHIGS name sets and invisibility filters did not help,
>so this is not an option.

Why didn't it help?  If not sending the graphics data to your renderer
didn't speed up the process, I suspect that your implementation (you
don't mention what kind of implementation you have) is so slow that
rendering isn't the slowest step (hard to believe!).

                                                -- Rich