Jump to content
  • Advertisement
Sign in to follow this  

Visibility in Cave-like system

This topic is 4701 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi... I want to render a complex system of a cave. Rendering the whole cave would be too much, so dont render what you cant see, right... Splitting up the cave system into segments should help. A portal system would be nice or some kind of BSP trees? I added a image describing my problem. The blue triangle represents the camera.When i'm in segment B, then C and D have to be drawn too. Segment A maybe discarded due to clipping of bounding volume against view frustum. Im at a rough conceptual stage, any help would be nice. I will be a descent-like game... regards, gsus cave system

Share this post

Link to post
Share on other sites

I think portals would do fine in a cave-like environment. However, I think you have to manually place the portals.

Speaking of visibility determination, I just finished a 2D proof-of-concept of a conservative visibility determination system I developed for my bachelor grade. You can download it at http://www.bitlands.nl/downloads/. The scene is a simple bitmap, you can experiment with it by paining caves in it.
See for images: http://www.bitlands.nl/cvd. If you are interested, I can send you my paper describing my algorithm.

[Edited by - Ziggy Stardust on January 2, 2006 7:19:07 AM]

Share this post

Link to post
Share on other sites
FYI, Descent 1 and 2 used Portals, with cube-like sectors.
Descent 3 used polygon soup 'rooms' with portals placed between them. -so, a little more freedom for the level designers, but much precalculation required to figure out where the portals/pvs should go.

I'm also making a Descent style game. And so far have been using pretty close to the original design of Descent.
I use Portals, with convex 6-sided(cubelike) sectors. (just like the first Descent)
Any side that joins two sectors together is automatically counted as a Portal.

The main benefit with that kind of data structure is collision detection is easy. -6 plane intersections per sector, and you only need to check adjacent sectors if your object is halfway thru a portal.
Each object keeps track of its current sector as it moves, so its pretty cheap.

As for visibility, 6 sides per sector might lead to a large number of Portals and a high cost of Frustum Checks.
But at the moment I am using a 'dumb' portal visibility check of:
has to be in front of camera (single plane check)
and has to be facing camera.
So far my own levels are very small so rendering slowdown has yet to be an issue, and I haven't needed to turn on Real frustum checks.
If it ever gets to be an issue,
I was thinking of having Manually placed portals that the graphics would use, while leaving all the other ones for Collision detection only.
I've also been considering having arbitrary polygons to build sectors (sorta like Descent3's system) but this would introduce potential difficulty with Collision Detection, unless I enfore a rule about convexity.

I don't know how graphically complex your Game is going to be, but so far I am finding that Collision Detection is a bigger issue than Visibility. Mainly due to modern video hardware that wasn't around when Descent was designed.

Good luck
I'd really love to see this when you're done.

Share this post

Link to post
Share on other sites
Guest Anonymous Poster
If your simulation is in tunnels, then you might be able to use illumination falloff to make the maximum view range fairly small (and use it for your segment size). The most you would have to check would be adjacent and the current segment. You could then probably use a simple chain of cube volumes (threaded in the center of the tunnel) for your segments that could be automatically generated (versus manually made).

Share this post

Link to post
Share on other sites

thx for replies.

i guess i will use a outer hull (maybe as simple as a box). And check if it
hits the view frustum.

Maybe later im adding some visibility system (guess manually specified).

I would like to see it in action myself. ;)

I should finnish some concept art... ah.. i need more time.

regards, gsus

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!