Surface Reconstruction from Scattered Points Cloud: MyCrust Robust

September 4, 2009 by Luigi Giaccari 
Filed under: Computational Geometry, Graphics 
20 Comments
VN:F [1.8.8_1072]
Rating: +2 (from 2 votes)
VN:F [1.8.8_1072]
Rating: 9.8/10 (4 votes cast)

It is now available on Matlab file exchange the robust and new version of MyCrust.

I hope you’ll enjoy it !

MyCrust take as input a 3D scatter points cloud and return a tight, manifold, triangulation.

Remember that crust algorithm needs a cloud representing a volume,  so open surface may give inaccurate results. For example : a plane can not be triangulated,  half-sphere is in doubt,  a sphere with a small hole shoud be good.

The more points are given the best the surface will be fitted, of course in this case you would have to wait more and in the worst case a memory help error may occurs. The best results are obtained with more points in high curvature feature.

The old version did not ensure the output surface to be a manifold so it could be used only for graphical purpose. In the new one a tight, regular manifold is returned. It as outward normals orientation, after using this algorithm is very easy to get an STL file from a point cloud.

I added a manifold extraction tool that also correct the errors (slivers) generated by delaunayn during the initial tessellation.

Download Now
Due to heavy request, assistance and consulting is reserved only to contributors
VN:F [1.8.8_1072]
Rating: 9.8/10 (4 votes cast)
VN:F [1.8.8_1072]
Rating: +2 (from 2 votes)
Surface Reconstruction from Scattered Points Cloud: MyCrust Robust9.8104

Popularity: 9% [?]

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • Live
  • PDF
  • Technorati
  • Twitter
  • Yahoo! Bookmarks
  • Add to favorites
  • email
  • MySpace
  • RSS

Related Posts

Comments

20 Comments on Surface Reconstruction from Scattered Points Cloud: MyCrust Robust

  1. WS on Wed, 30th Sep 2009 09:09
  2. Hi Luigi,

    excellent coding! Thanks a lot. Just a word on spelling… You always write “recostruction”, but it should read “reconstruction”. Since I came across this misspelling time and again, I just wanted to let you know.

    Keep on and best regards,
    WS

    [Reply]


    Luigi Giaccari Reply:

    Thank you,

    my english is the worst ever….I am working on it

    That word is everywhere in my submissions I ‘ ve got a lot of work to do….

    [Reply]

    UA:F [1.8.8_1072]
    Rating: 0.0/5 (0 votes cast)
    UA:F [1.8.8_1072]
    Rating: 0 (from 0 votes)
  3. Kevin Marchelak on Wed, 30th Sep 2009 21:25
  4. Works well and looks OK

    Good work Luigi

    Regards

    Kevin

    [Reply]

    UN:F [1.8.8_1072]
    Rating: 0.0/5 (0 votes cast)
    UN:F [1.8.8_1072]
    Rating: 0 (from 0 votes)
  5. ucd puri on Sun, 15th Nov 2009 09:57
  6. Hi, thanks for all your postings, they are fantastic. I read on your blog that using this function, the volume of the triangulated surface. Question 1) How do you do that.
    I have another question with volume visualization.
    i have a volume similar to as shown in this link.
    http://www.mathworks.se/products/matlab/demos.html?file=/products/demos/shipping/matlab/transpdemo.html

    When i using the alpha a value to 0.3 to visualise the inner structure similar to that in the above link . Now I want to calculate the surface area of that inner structure ONLY.Question 2) Is that possible, and how do i go about finding it.

    I would be very thankful if you could please provide some guidance. I have tried to ask many people and posted this questions at many places but i never received any answer. Kindly help please.

    [Reply]


    Luigi Giaccari Reply:

    Hi I am afraid that what you have is volume data, like the input format of the “isosurface command”.

    SInce I can not see your data I can not give a clearer answer.

    If you’ll be more specific I’ll do it.

    [Reply]

    UA:F [1.8.8_1072]
    Rating: 0.0/5 (0 votes cast)
    UA:F [1.8.8_1072]
    Rating: 0 (from 0 votes)
  7. Joel Warneke on Fri, 12th Mar 2010 03:19
  8. Hi,

    I was wondering if “MyCrust” will work on a 3D point cloud that has points though out the cloud. I am looking at micro seismic data and need to calculate the volume of all the events.

    Thanks in advance,

    Joel

    [Reply]


    Luigi Giaccari Reply:

    Hi,

    it is not clear to me what events are. If you need to mesh a filled cloud you may try:
    http://www.advancedmcode.org/surface-recostruction-from-scattered-points-cloud-the-ball-fretting.html

    You may also want to look at; “alpha shape” but most of at: ” the ball pivoting algorithm”.

    I hope I was helpful

    Luigi

    [Reply]

    UA:F [1.8.8_1072]
    Rating: 0.0/5 (0 votes cast)
    UA:F [1.8.8_1072]
    Rating: 0 (from 0 votes)
  9. Li on Wed, 7th Apr 2010 11:45
  10. Hi Luigi,

    I’m trying to calculate the normal vector of each vertex in the mesh.
    I wrote a method that finds the neighboring traingles of each vertex, and then takes their normals (using your method) and sums them up.
    Now, I was wondering how to determine the directions of the normals. I need them to point out of the surface. Can you please suggest a way to do this?

    Thanks,Li

    [Reply]


    Luigi Giaccari Reply:

    The normals returned by the the program are already outward.

    Luigi

    [Reply]

    UA:F [1.8.8_1072]
    Rating: 0.0/5 (0 votes cast)
    UA:F [1.8.8_1072]
    Rating: 0 (from 0 votes)
  11. Javed on Fri, 14th May 2010 00:17
  12. excellent coding ,, I would say
    could you please guide me how to import point cloud data in .igs format to use this code.

    Thanx
    Javed

    [Reply]


    Luigi Giaccari Reply:

    I am sorry but I don’t remember how to extract points from .igs files.

    [Reply]


    Javed Reply:

    Its ok
    So could you please tell me what are the supportive file formats???

    Thanx,
    Javed

    [Reply]


    Luigi Giaccari Reply:

    This function supports matlab arrays, it is up to you to transform your data fomrat in matlab arrays. On file exchange you may find some routine to do the job.
    Luigi

    UA:F [1.8.8_1072]
    Rating: 0.0/5 (0 votes cast)
    UA:F [1.8.8_1072]
    Rating: 0 (from 0 votes)
  13. ERic on Fri, 11th Jun 2010 13:16
  14. Hello,

    How can you export the result in a 3D format (VRML or STL)?
    Your code is very usefull for me.
    Thanks a lot to share
    Eric

    [Reply]


    Luigi Giaccari Reply:

    To write STL files you can use:
    http://www.mathworks.com/matlabcentral/fileexchange/20922-patch2stl

    I know no Maltab script to generate a VRML, if you find one please let me know.

    Luigi

    [Reply]

    UA:F [1.8.8_1072]
    Rating: 0.0/5 (0 votes cast)
    UA:F [1.8.8_1072]
    Rating: 0 (from 0 votes)
  15. Van Perry on Fri, 16th Jul 2010 04:13
  16. Is your MyRobustCrust a variation of the Ball Pivot Algorithm? How is it different, Or is it exactly the same? Your program works very well.

    [Reply]


    Luigi Giaccari Reply:

    Sorry for my late answer, I had troubled days.

    MyRobustCrust is totally different from the BPA, nothing to to with it.

    It has some elements of the PowerCrust from Amenta.

    Luigi

    [Reply]

    UA:F [1.8.8_1072]
    Rating: 0.0/5 (0 votes cast)
    UA:F [1.8.8_1072]
    Rating: 0 (from 0 votes)
  17. TB on Thu, 26th Aug 2010 16:12
  18. Hi.

    Your program looks great, and is exactly what I need. Is there any simple way to calculate the volume?

    Best regards, TB

    [Reply]


    Luigi Giaccari Reply:

    Coudn’t be easier!

    http://www.advancedmcode.org/volume-enclosed-by-a-triangulated-surface.html

    [Reply]


    TB Reply:

    I love you! This will save me a lot of time :)

    [Reply]

    UN:F [1.8.8_1072]
    Rating: 0.0/5 (0 votes cast)
    UN:F [1.8.8_1072]
    Rating: 0 (from 0 votes)

Tell me what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!


Include MATLAB code in your comment by doing the following:

<pre lang="MATLAB">

%insert code here

</pre>