Wings 3D Development Forum

Full Version: Boolean operations
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Good morning to everyone, I love Wings3D as it's, in my opinion, the simplest and more effective modeling tool ever created.

the only shortcoming that I note is the absence of tools for boolean operations (union, intersection, subtraction).
I know very well that the Manifoldlab implementation has these tools (and lots more!), but I'm a linux user and Manifoldlab version is only for Windows.
Once upon a time that version worked properly with WineHQ, but unfortunately the latest versions has severe poroblems in the management of the mouse.
In particular it the selection of menu items does not work , making Wings3D unusable.

Is there any chance to have those plugins for linux?
I use Linux Mint 18 KDE (plasma 5)

Thanks in advance, bye!
mygrandmawheels,Welcome to Wings3D forum.
I feel the same inconvenience, recently It can't running on Wine on Mac too.
The internal of ManifoldLab is unknown,because it's closed source.
But ManifoldLab uses an external library called Carve-CSG https://code.google.com/archive/p/carve/.
The library and Wings3D exchange data in some method.

If boolean function is realized posibility,There are two ways.
Implement boolean operation by Erlang or Cooperate with other external boolean libraries.
In order to support all Win/Mac/Linux with the latter way, it is necessary to compile this external library for each OS.
Many thanks for the reply.
I gave an eye on the documentation of Carve-CSG.
It seems not too much complicated to use, in this moment the biggest clue for my skills would be write the interchange of data with Wings3D.. I manage C++ in a way or another, but I don't know anything about Erlang.. someone has an example to get the geometry data of a Wings3D object?
I have written the base code, i.e. the intersection testing in erlang.

So I can get the faces (and where) two intersecting objects intersect, but intersection testing
works on triangles so it will require a lot of work to get the 3d positions to match the quad faces
in the wings objects and attach the object to each other.
GGaliens must have written that code, but I'm not finding his code on the internet so I can't take
a peek.

So when people stop posting bugs, I would have time to work on booleans :-)
tl,dr; booleans may come but no promises and no time frame on that, there is an awful lot of work to be done before it is in acceptable shape.
So, in your opinion, using Carve-CSG is not the way, isn't it?
From your words I intend that the guide lines of Wings3D is that anything must be written in Erlang.
I am right?
Many thanks for the reply, bye!
dgud,Thanks for reply.
If Wings3D has a boolean function, it is easier to pipe joint and/or hollow out the solid in any shape.

Wings3D could be positioning/modeling powerfully if existing some geometric elements are present in the 3D-Space by using it.
But if there are few hints in the space, User spends many steps for joining for objects.
The boolean feature can be a means to overcome this weakness.

I wait patiently Smile
Dan. Sorry I didn't see this post for so long.

I would share any of my Manifoldlab code with you. But probably better to just share concepts. With regards to BOOLEANS ... my boolean plugin simply shells out to CarveCSG.

Will you be shelling out ? Or doing it all internal in Wings3D / Erlang if you have a go at Booleans ?

I think between you and I ... we have all the required 3D math background to get a nice Booleans done. And you have better optimizations experience.

I didn't try very hard to re-instantiate QUADS after having artificially triangulated as a pre-condition for Boolean. Boolean really really needs the triangles as you know. A lots of seemingly FLAT faces when passed to CarveCSG will come across as NON-FLAT.

I think you should create the code first to work on all triangles meshes with maybe only a little forward looking to QUADS.

There are so many issues ... CarveCSG ... did have a capacity to preserve color information (attributes) if you used the API correctly ... but I bet it is not highly used (guess). I looked for docs on that. But never went there.

I think maybe you could create a MESH-COMPARE tool / process that was used in post processing ... to re-assert QUADS and colors by comparing two meshes. Keep the Boolean process PURE. Just my thoughts.

I wish you good luck if you have a Go at booleans.

Dan ... I would try to adopt your basic intersect test ... to give it a workout. I have many many lines of code in manifoldlab and many functions that would use an intersect test.

The basic unit of work in MLAB is ray / triangle intersect test. Just FYI. Another things build out some there. I think Triangle / Trinagle intersect is a little higher level.