Sign in to follow this  

CSG, Brushes, ...

This topic is 4868 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, are there any libraries that I could use for my world editor when I want to add CSG? I know how to implement it using BSP but I am wondering if there are other possibilities. Any libraries, tutorials and papers are greatly appreciated. Regards, -Dirk

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Don't know if they quite fit your needs but, I know at least GTS (GNU Triangulated Surface library) and breplibrary support CSG. You can find them by searching on freshmeat.net.

And yes, there are other ways to do it...breplibrary uses one alternative, basically partitioning intersecting surfaces in the two objects, and using ray-tracing to determine which side of the resulting object each surface is on. This is a question of determining whether a random ray from the surface intersects an even or odd number of other surfaces.

- Martin

Share this post


Link to post
Share on other sites
There are two basic CSG approaches, the BSP approach, and the Laidlaw approach.

Both have their advantages and disadvantages.

As far as libraries go, there's OpenCSG, but I've found it to be kind of tedious to work with (so I don't).

I've written my own library for CSG operations. It works pretty well, except it could use a bit of optimization.

Share this post


Link to post
Share on other sites

This topic is 4868 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.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this