SarahWeiii / CoACD

[SIGGRAPH2022] Approximate Convex Decomposition for 3D Meshes with Collision-Aware Concavity and Tree Search

Home Page:https://colin97.github.io/CoACD/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Triangle.h is not MIT

jratcliff63367 opened this issue · comments

So, just as an FYI. This library is labeled as being MIT license. However, it uses 'Triangle.h' which is not at all compliant with an MIT license. So anyone who tries to use this library will have license issues due to that. The code will not work without 'Triangle.h' so really the library as a whole cannot be used in any commercial product or is otherwise not compliant with the strict restrictions found in 'Triangle.h'

Same happens with ManifoldPlus, but Manifold (without the Plus) seems to be compliant with MIT.

https://github.com/artem-ogre/CDT seems like a good candidate for a replacement. It is MPL 2.0.

EDIT: Just saw who you are, glad to see one of the main developers of V-HACD push for the success of other convex decomposition algorithms :)

This library does give slightly better results than V-HACD but it's quite a bit slower too. So I was considering seeing if I could optimize it to make it run faster but when I saw Triangle.h that was a show-stopper. The header file literally says 'Contact us for commercial use'. That's about as far away as you can get from a clean license. Way back when I wrote my first version of convex decomposition I ran into this problem then as well. Doing CSG is non-trivial work. That's the main reason Khaled and I went to voxel space instead.

Solved (partly) by #5, unless there is another MIT CDT library I am not aware of.

I noticed that all problematic third party libraries are only necessary to create manifold meshes for non-watertight inputs.

As an experiment, I removed Eigen, GLM, and IGL/ManifoldPlus and managed to build a version for watertight inputs.

The code still contains LGPL (sobol.*), a generic public domain license (src/quickhull), ZLib (src/btConvexHull/*) as well as the MIT portion of CoACD itself. However, none of those should preclude commercial use anymore.

I am not sure what to do with that branch, however. I doubt @SarahWeiii will accept a PR since it removes a CoACD feature that some people might need. On the other hand, a CoACD version for commercial use, if only for watertight inputs is also valuable.

Any ideas?

@olitheolix

In a personal branch I am working with only Manifold (instead of ManifoldPlus) for non-watertight inputs. Eigen is MPL2 and GLM is MIT, so no problem about that. Manifold seems to have no problem with commercial applications and in CoACD, ManifoldPlus is only used for thin models.

In the paper, Wei et al. cite Manifold and not ManifoldPlus for non-2 manifold inputs. For what I see, there is no difference between using Manifold and ManifoldPlus (in my applications I do not use any thin objects).

You maybe should open a new issue addressing these problems. The two more problematics licenses are ManifoldPlus and + triangle.h`.

sobol seems to be used only for pseudorandom sequences. There should be other libraries that do similar work, however LGPL is commercial friendly too, so personally I do not have any problem with this library.

As mentioned by @Abde5 , ManifoldPlus is only used for pre-processing thin objects that cannot be well solved by Manifold. I have added an option for disabling this library. If you don't have non-manifold thin objects as input, you can disable ManifoldPlus by --no-manifold-plus or -nmp.

Cool, thank you.