Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Boolean operations on Meshes #13

Open
GoogleCodeExporter opened this issue Dec 30, 2015 · 7 comments
Open

Boolean operations on Meshes #13

GoogleCodeExporter opened this issue Dec 30, 2015 · 7 comments

Comments

@GoogleCodeExporter
Copy link
Collaborator

Some people think it's a good idea...
First step would be to create an uniformized software vertices/indices buffer 
and have every mesh generator output to it.

Original issue reported on code.google.com by michael.broutin@gmail.com on 11 Oct 2010 at 9:49

@GoogleCodeExporter
Copy link
Collaborator Author

[deleted comment]

@GoogleCodeExporter
Copy link
Collaborator Author

Original comment by michael.broutin@gmail.com on 8 Nov 2010 at 8:51

  • Changed title: Boolean operations on Meshes
  • Added labels: Priority-Low
  • Removed labels: Priority-Medium

@GoogleCodeExporter
Copy link
Collaborator Author

Original comment by michael.broutin@gmail.com on 1 Feb 2011 at 2:11

  • Added labels: Difficulty-Hard

@GoogleCodeExporter
Copy link
Collaborator Author

I imagined an algorithm for that... I still need to implement it.

Here are the main steps :
- find all intersection segments between mesh 1's triangles and mesh 2's 
triangles
- retriangulate triangles that have been intersected
- group intersection segments to create "contours"
- for each contour, determine which side of it should be kept and which side 
should be discarded (depends on whether it's an intersection, union...)
- use adjacency information on the triangles to propagate from one contour to 
another

Original comment by michael.broutin@gmail.com on 29 May 2012 at 8:39

  • Changed state: Started
  • Added labels: Priority-Medium
  • Removed labels: Priority-Low

@GoogleCodeExporter
Copy link
Collaborator Author

Step 1 implemented (finding intersections)

Original comment by michael.broutin@gmail.com on 1 Jun 2012 at 9:37

@GoogleCodeExporter
Copy link
Collaborator Author

Algorithm is fully implemented, but a lot of cases lead to infinite loop.
Next things to fix :
- Triangulate correctly even with 2 identical vertices.
- Triangulate correctly even with 3 aligned vertices. (in particular with the 
addconstraints phase)

Original comment by michael.broutin@gmail.com on 5 Jul 2012 at 11:45

@GoogleCodeExporter
Copy link
Collaborator Author

Got another handful of tests working.
Trying to recreate this test case : 
http://en.wikipedia.org/wiki/File:Csg_tree.png
But:
- Cylinder U Cylinder doesn't work when both cylinder have same size. This is 
because the progression is blocked by the two joined intersections.
- Box - (Cylinder U Cylinder) leads to infinite loop, got to figure out why.

Original comment by michael.broutin@gmail.com on 15 Oct 2012 at 7:46

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant