Post by John W. Ratclif » Sat, 13 Jul 1996 04:00:00

> Re: Z-Buffering in Quake

> ----------------------------------------------------------------------

> Organization   University of Utah Computer Science Department
> Date           11 Jun 1996 21:00:35 GMT
> Newsgroups     rec.games.programmer,comp.graphics.algorithms

> References     1 2 3 4 5

> ----------------------------------------------------------------------

> : I generate my PVS by rendering the world into the z-buffer, then
> : re-rendering it into the z-buffer and examining which polygons ended up
> : being visible.  This is done on a kind of "sector" basis, so as you move
> : around the world it looks at what sector you are in, and that is the PVS
> : to use.  If you are between sectors it takes the union of the 4 closest
> : sectors.  This seems to work pretty well for me, but like ID, it does
> : take a while on my P166 to precompute a PVS.

> Which point do you choose to render from?  How will you know that from
> a given point (or set of points) you are going to see all of the PVS?
> Please expound on your method.

> Steve

My PVS is based on a set of point paths that are also used by the AI to
navigate the 3d world.  Every place that you can logically go inside of
the entire world has a point/circle set up which defines that location.
 This is not automated, I have a guy who sets these up throughout the
entire 3d environment with an editor.  This serves a dual purpose in
that the AI uses these circles to navigate the entire world.  Each point
has a precomputed connection graph to all other points such that the AI
can do real time searches for solution paths.  Since these circles also
correspond to every logical place the human player would go, they are
also used for the visibility.

The camera is simply placed in the center of each circle and then at 8
points around it, and then runs the entire polygon data set through the
sbuffer.  What's left is the precomputed visibility.  Most of the time
the player is inside one of these circles.  When the player is between
circles the PVS is equal to the union of the 4 nearest circles.  If none
of them are close enough and the camera is outdoors it uses the
precomputed "from the air" visibility tree.  If it still fails then it
runs all of the polygons in the viewing fulstrum through the spanlist.  
This, however, *rarely* ever happens.

For a pretty large/rich 3d environment I have typically 1,500 - 2,000
PVS tables.  These, of course, compress very well since most of the
entries are just zero.

"The righteous shall rejoice when he sees the vengeance.  He shall wash
his feet in the * of the wicked."  (Psalm 58:10)


1. BSP & PVS

Hi there

I'v generated (solid)BSP and portals assigned to nodes, portals lies on
division surfaces (this is idea from some tutorial). And all works fine.
Now I want to add PVS to my portalized BSP ... but how ??
I'v searched with google, but wothout luck :(
Plz give me any links to tutorials about this ...

2. EGUK: Diary of Graphics Events

3. Dynamic PVS algorithms?

4. How to test triangle filling routine ?????

5. pvs, portal, occuluder , which is best ?

6. Announcement: Frame Factory Upgrade to Video Toaster NT

7. PVS (Potential Visibility Set) - Help me....!

8. ping Mike: Watercolor challenge

9. Quake and BB and PVS?

10. PVS generation is too slow

11. PVS algorithm

12. pvs packing

13. BSP PVS books - thesis