3D Objects Mantpulaton ...

Started by
3 comments, last by Jankey 22 years, 6 months ago
i am Writing a 3D Editor ... for this i wanna ADD und SUBTRACT 3D Objects from Each other ... and the Function OR, it is all logical ... and if you now ACAD ... there are these Functions ... should look like this .. void Add3DObject(Object &one , Object &two , Object &result); does anyone have Logical Algorithims for this or a good link? ... o haver searched .. but did''nt find somthing -...
J.A.N.K.E.Y.: Journeying Artificial Nocturnal Killing and Exploration Youth
Advertisement
You''re talking about "boolean" operations on solids. Tricky. Damned tricky. And I don''t mean to frighten you. Every hear of ACIS? That''s the solid modeling engine used in ACAD. Made by Spatial Technology (www.spatial.com). We actually have a license to use it here in some of our software. We started implementing our own boolean operation to cut arbitrary holes in terrains (holes defined by polyhedra), but our version was not robust after quite a bit of development, and we reverted to ACIS. How tricky is it to do boolean operations on solids? To give you an idea, Spatial has invested tens of *millions* of $ since the mid 1980''s to develop ACIS. And they''re still doing a good deal of R&D each year to make it better and faster.

Other commercial alternatives to ACIS are Parasolid (www.parasolid.com), SHAPES (www.xox.com), and SMLib (www.smlib.com). None are cheap by any stretch of the imagination.

Have you investigated constructive solid geometry (CSG) versus boundary representation (B-rep) for your engine? Do you want to support non-manifold geometry? (NO, if you''re just dealing with solids---closed surfaces).

It could take you a long time to dig into and implement the math for doing booleans. If you''re just dealing with closed polyhedra, it actually gets much easier, but still not trivial.

FORTUNATELY, there may be some implementations out there that you can use for free, for non-commercial use. Here are tools that I''m aware of:

http://www.cs.technion.ac.il/~irit/
http://www.cs.unc.edu/~geom/CSG/boole.html

You may also want to check out the following book, which comes with source code (variable names in German, I believe):

"Open Geometry: OpenGL + Advanced Geometry" by Georg Glaeser, ISBN 0387985999.

I don''t want to discourage you from working to implement the boolean operations yourself. I think it would be FANTASTIC if you were to go that route. You''d learn a hell of a lot about geometry and it''d be a great accomplishment. So, therefore, good luck!

Graham Rhodes
Senior Scientist
Applied Research Associates, Inc.
Graham Rhodes Moderator, Math & Physics forum @ gamedev.net
I Know it is really Complicated ... but i need it ...
______________________________________________________________
It could take you a long time to dig into and implement the math for doing booleans. If you''re just dealing with closed polyhedra, it actually gets much easier, but still not trivial.
______________________________________________________________

Yes i yust only work with closed polyhedrals, do you know i
can calculate if an obeject is a closed one? ( it would be really helpful ...

thx for the links ... its a small help but better than nothing ..

mfg J@n
J.A.N.K.E.Y.: Journeying Artificial Nocturnal Killing and Exploration Youth
This seems like a good place to start a search. Search for Constructive Solid Geometry and that will produce a list of referances. The ones where Doc is a link are available online. The rest are referanced by articles that are online. It may take a bit of digging to find precisely what you want online, but you should be able to find a good deal of valuable information that will save you alot of trial and error.
Keys to success: Ability, ambition and opportunity.
It *is* simpler when you''re dealing with closed polyhedra. The commercial solid modeling engines actually deal with solids that have arbitrary curved bounding surfaces, and some of them (i.e., SHAPES) even treat non-manifold geometry.

The two code references I provided, IRIT and BOOLE are implementations that may be useful to you. The search engine that LilBudyWizer provided may also be useful. It might point you to technical papers that you can download.

The "Open Geometry" book I mentioned actually contains some good detail on an actual algorithm for doing booleans on closed polyhedra, in chapters 7 and 8.

There is also another book:

"CAD/CAM Theory and Practice," by Ibrahim Zeid, ISBN 0-07-072857-7

This book discusses the representation of solids in some detail, but doesn''t really reveal a usable algorithm.....

Graham Rhodes
Senior Scientist
Applied Research Associates, Inc.
Graham Rhodes Moderator, Math & Physics forum @ gamedev.net

This topic is closed to new replies.

Advertisement