davideberly / GeometricTools

A collection of source code for computing in the fields of mathematics, geometry, graphics, image analysis and physics.
Boost Software License 1.0
1.14k stars 214 forks source link

question 3D mesh CSG (boolean operations) #67

Closed owai1980 closed 1 year ago

owai1980 commented 1 year ago

Hello,

Does your library allow to do simple boolean operations (intersection, substraction, union) on two 3D closed mesh of triangles ?

thank you... again!

davideberly commented 1 year ago

Currently, I do not have a computational solid geometry (CSG) component in GTE. That is a nontrivial project. It is on my very-long-term TODO list. The closest I have to this is SplitMeshByPlane.h, which splits a mesh by a plane but it does not attempt to "close" the mesh halves. See Clipping a Mesh Against a Plane. A sample application is GeometricTools/GTE/Samples/Geometrics/SplitMeshByPlane which shows partitioning of a torus mesh by a plane.

CSG is difficult to make robust when using floating-point arithmetic, even if two solids are convex polyhedra. You have to compute using rational arithmetic. The ideas for Boolean operations are shown in Polysolids and Boolean Operations.

owai1980 commented 1 year ago

Thank you for your answer!

And thank you for this great library! 👍

Le lun. 14 août 2023 à 00:00, David Eberly @.***> a écrit :

Currently, I do not have a computational solid geometry (CSG) component in GTE. That is a nontrivial project. It is on my very-long-term TODO list. The closest I have to this is SplitMeshByPlane.h, which splits a mesh by a plane but it does not attempt to "close" the mesh halves. See Clipping a Mesh Against a Plane https://www.geometrictools.com/Documentation/ClipMesh.pdf. A sample application is GeometricTools/GTE/Samples/Geometrics/SplitMeshByPlane which shows partitioning of a torus mesh by a plane.

CSG is difficult to make robust when using floating-point arithmetic, even if two solids are convex polyhedra. You have to compute using rational arithmetic. The ideas for Boolean operations are shown in Polysolids and Boolean Operations https://www.geometrictools.com/Documentation/Polysolids.pdf.

— Reply to this email directly, view it on GitHub https://github.com/davideberly/GeometricTools/issues/67#issuecomment-1676473325, or unsubscribe https://github.com/notifications/unsubscribe-auth/AG3BAQLKHJAASOGIEQ23Q6DXVFFBNANCNFSM6AAAAAA3M4OJ6U . You are receiving this because you authored the thread.Message ID: @.***>