Jump to content


looking for a csg engine


7 replies to this topic

#1 rouncer

    Senior Member

  • Members
  • PipPipPipPip
  • 2336 posts

Posted 30 May 2007 - 11:31 PM

ive tried to code csg (constructive solid geometry) or boolean objects
for ages now with a little success, but not enough to be happy with.
i would really like to do modelling with it.

im having trouble coding it, at the moment, i can do it, but it leaves holes
and loose vertices around the place, and its not very nice to use - every
time you use it, youd have to weld 10 or so vertices and watch out for
model degeneracy. (the bad bit) if it screws up, other algorythms that act
on the model afterwards can crash, and it makes the whole editor really
touchy to use, it could crash at any second.

it seems to be my falling, trying to code this, ive coded alot of other things
but i just dont seem quite smart enough to debug this one.

i could use it myself, but its hardly professional enough to release as a product,
even as a free product, noone would want to use it.

is there any professional library out there for it?

#2 Nicholas Christopher

    Member

  • Members
  • PipPip
  • 77 posts

Posted 30 May 2007 - 11:55 PM

http://opencsg.org/

http://www.cgal.org/

http://gts.sourceforge.net/

enjoy.
Nicholas Christopher
Architecture software development, and modeling
http:\\www.arconovum.com

#3 Sol_HSA

    Senior Member

  • Members
  • PipPipPipPip
  • 482 posts
  • LocationNowhere whenever

Posted 31 May 2007 - 10:16 AM

http://opencsg.org/ - GPL
http://www.cgal.org/ - LGPL/QPL or commercial license
http://gts.sourceforge.net/ - LGPL

.. to save time if license matters.
http://iki.fi/sol - my schtuphh

#4 anubis

    Senior Member

  • Members
  • PipPipPipPip
  • 2225 posts

Posted 10 June 2007 - 09:04 AM

Recently I thought about dynamically evaluating CSG sets with something like marching cubes. That wouldn't be able to deal with sharp edges in a lot of situations but might still produce interesting results often enough to be useful
If Prolog is the answer, what is the question ?

#5 rouncer

    Senior Member

  • Members
  • PipPipPipPip
  • 2336 posts

Posted 10 June 2007 - 11:08 AM

that sounds interesting, could you elaborate a little more?

#6 anubis

    Senior Member

  • Members
  • PipPipPipPip
  • 2225 posts

Posted 10 June 2007 - 12:52 PM

Well... finding out if a point is inside or outside of a csg set is easy and efficent. It's simply a matter of traversing the csg operator tree plus a point in object test for every primitive object used in the csg set. In marching cubes that is exactly the basic operation you perform. Of course that would only get you an aproximation of the real object and I'm not even sure that the algorithm can deal with all kinds of geometry but it would definetly be interesting to experiment with it
If Prolog is the answer, what is the question ?

#7 Kenneth Gorking

    Senior Member

  • Members
  • PipPipPipPip
  • 911 posts

Posted 10 June 2007 - 02:53 PM

I recently found this when researching the marching cubes algo, might be useful: http://local.wasp.uw...try/polygonise/
"Stupid bug! You go squish now!!" - Homer Simpson

#8 mikola

    New Member

  • Members
  • Pip
  • 1 posts

Posted 15 June 2007 - 08:49 PM

Have you tried using BSPs for constructive solid geometry? They have the advantage that they are unconditionally stable, if you get a bad result all that happens is part you waste some memory. They are also extremely fast, often beating standard algorithms like Laidlaw & Hubbard. Finally, they give you some nice bonuses like cheap collision detection and visibility culling.

Here is the original publication on the subject:
http://portal.acm.or...l=portal&dl=ACM

And here is a 1 page sketch that I recently wrote detailing some improvements to the basic algorithm:
http://www.assertfal...sketch_2007.pdf

Right now I am working on an extended paper for publication in a journal which should go into greater detail on the algorithm. The sketch covers the basics of the approach, and with some patience and Naylor's article it should be enough to work out a correct implementation.

The down side to this approach is that updating the geometry can be very expensive on a GPU. I believe these issues can be addressed, and so far have some promising preliminary results. With any I luck, I will have a complete paper out some time around September along with a demo + source online.

Regards,
Mikola Lysenko





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users