If lower bound higher then SDF range then there are duplicate vertices
asyniakov opened this issue · 5 comments
Hi @asyniakov,
Just in case, could you give me a minimal piece of code that reproduces the problem?
Also, what are the duplicate vertices in your image? The yellow dots? Did you explicitly find and draw the duplicate vertices?
Hello @pmneila,
Sure! Here is a minimal piece of code that reproduces the problem:
The sphere is located in C = {4,4,4} with diameter 8. bbox is {2,2,2} and {8,8,8}
auto sdf = [](auto p){
return length(p - { 4,4,4 }) - 4;
};
mc::marching_cubes({2, 2, 2}, { 9, 9, 9 }, 20, 20, 20, sdf, 0, vertices, polygons);
Please ignore my previous image, here is the better visualization of the problem;
red vertices - are duplicate vertices (which I believe is incorrect), yellow ones are boundary vertices (they are OK).
The main question - how did I find duplicate vertices (red ones)?
I passed vertices and polygons to OpenMesh library (that uses halfedge data structure inside for the topology) and then simply highlighted all boundary vertices. As a result, I got the image as in my previous post. I expected to see yellow dots only on boundaries. I double-checked array before passing to OpenMesh and there are duplicates indeed.
This problem is repro on any sdfs that are "clipped" by lower value (like 2,2,2 in this example)
Please let me know what else I can help with.
Hi @asyniakov
It took longer than expected, but it is finally fixed. You can install the last version with
$ pip install PyMCubes --upgrade
or downloading and compiling the code from GitHub.
Thank you for letting me know!
@pmneila thank you! I'll try check it next week and let you know if find some other issues.
fixed. confirmed