Showing revision 5.10

Post New Message


Name:Du Xinlong
Email
Institution:SWPU, China
Message:
Doctor Fang: 1 how to calculate the area of the surface triangles I selected? 2 Is there any function to get the normal vector of the surface triangles,to save surface mesh as *.stl,need this information。

thank you


Time:: Mon Oct 03 2011 10:13:29 GMT+0800 (LONT)</timestamp>

Name:Qianqian Fang
Email
Institution:
Message:
hi Stefan

For your first question, my answer has two parts, part 1: my recommended way to do it, and part 2: why you got the error.

Part 1. Iso2mesh inherites the mesh-quality-based termination criteria from CGAL and tetgen and is capable of generating feature-adaptive meshes without explicitly setting mesh sizes, unless you want to do it manually. For v2m and v2s, the input parameter opt has two fields to control the mesh sizes relative o the features: opt.radbound and opt.distbound. The first one controls the overall size of the surface triangles, the second one controls the adaptivity to small and sharp features. You can compare the meshes on slides 14 and 15 in a presentation of mine to see the effect. The demo script can be found in the iso2mesh/sample folder.

Part 2. The error you have encountered is indeed a bug from tetgen. I had seen the same error when running sample/demo_refine_spherebox_mesh.m on a 64bit Ubuntu box. It worked OK on a 64bit CentOS 5.x and 32bit Ubuntu/CentOS. I traced the error to a subroutine in tetgen's source code and reported it back to Hang Si, the author of tetgen, but nothing has happened since. If you want to continue your approach, please try a different machine and you may get around this issue.

For the second question, it depends on how bad do the spikes look. If the spikes are huge, and the mesh is messed up, then you must have used the extra label column in the surface when you call smoothsurf/sms/meshconn. If your face array has 4 columns, only use the first 3 columns for mesh smoothing. If the spikes are small, and only appears around some small & sharp features, they are results of Laplacian-like smoothing. You can try using the 'lowpass' option. It works similarly to 'laplacianhc', and both are better than 'laplacian'. Reducing smoothing iteration number will also help.

Let me know if this helps. I am CCing your email and iso2mesh-users mailing list to achieve this Q&A. I hope you don't mind.

Qianqian


Time:: Tue May 10 2011 14:26:13 GMT-0400 (EDT)</timestamp>

Name:Stefan Jagsch
Email
Institution:
Message:
Hello Qianqian,

I am currently working on meshing a nanoporous goldstructure (like this: ) that hes been reproduced from cross-sectional images, giving me a volumetric binary image. I am trying to implement an adaptive meshing algorithm that places additional nodes in the narrow ligament regions where I want to refine the mesh using the surf2mesh refining option. Placing the nodes is already working, but when I try to also set the local mesh density (edge size) I get the following error:

creating volumetric mesh from a surface mesh ... Opening /tmp/iso2mesh-comsol/post_vmesh.poly. Opening /tmp/iso2mesh-comsol/post_vmesh.mtr. Opening /tmp/iso2mesh-comsol/post_vmesh.b.node. File I/O Error: Cannot access file /tmp/iso2mesh-comsol/post_vmesh.b.node. Constructing Delaunay tetrahedralization. Delaunay seconds: 0.73 Duplicating background mesh. Internalerror in findedge(): Unable to find an edge in subface.

  Please report this bug to sihang<at>mail.berlios.de. Include the
    message above, your input data set, and the exact command
    line you used to run this program, thank you.
volume mesh generation is complete Finished meshing.

and the mesh is not refined. Any idea why this happens?

A second problem that I have is the following: Once meshed the model has some steps on the surface, which I guess is a relict of the layered images I use for the reconstruction, but is bad for the finite element analysis I want to carry out later. To improve the model I thought of using the smoothsurf function. But when I do so there appear spikes on the surface. How can I get rid of them (or why do they show up)?

kind regards, Stefan Jagsch


Time:: Tue May 10 2011 16:54:07 GMT+0200 (CEST)</timestamp>

Name:Qianqian Fang
Email
Institution:
Message:
hi Andrea

there is a function called "savedxf" source code which can export a surface to the DXF format, which can be imported by autodesk products. However, this was only tested with an open-source modeling software, Blender. I am not sure if this works fine with AutoCAD etc. Please give it a try and let me know.

Qianqian


Time:: Thu Oct 21 2010 13:22:05 GMT-0400 (EST)</timestamp>

Name:Andrea Ferrero
Email
Institution:University of California, Davis
Message:
Hi Qianqian,

thanks for the heads up. My problem is how to export those surfaces, after I computed them, into a format readable by a 3D design software like AutoDesk. I computed the surfaces and they look like what I wanted, but now I need to export it from Matlaband this is the step I am still missing. I couldn't find any reference in the documentation that addressed it, though I believe it must be trivial.

Thanks for the quick reply.

Andrea


Time:: Wed Oct 20 2010 20:50:58 GMT-0700 (PST)</timestamp>

Name:Qianqian Fang
Email
Institution:
Message:
hi Andrea

yes, iso2mesh does produce surfaces. Please check out the Doc/Workflow page to find out the general workflow. Typically, you should use v2s to extract surfaces from a volumetric image. Sometimes, you can also use v2m to produce surfaces too. Please also read my slides to find out other utilities, including surface smoothing, upsampling/downsampling etc.

Qianqian


Time:: Mon Oct 18 2010 21:45:55 GMT-0400 (EST)</timestamp>

Name:Andrea Ferrero
Email
Institution:University of California, Davis
Message:
HI guys,

I just discovered iso2mesh today and it looks a great tool for a research project I am working on, where I need to take a 3D CT image and convert it into a solid mold with AutoDesk. It is not clear to me though how I save the mesh after I run the vol2mesh script on my 3D image data. I am interested into the surface only of my object, to create a mold that is empty inside and full outside. Do I save the face variable? if so how?

Thank you very much for the attention,

Andrea


Time:: Mon Oct 18 2010 17:24:37 GMT-0700 (PST)</timestamp>

Name:Qianqian Fang
Email
Institution:
Message:
hi Sanket

For the maxvol parameter, please see this page for details. It simply sets the maximum volume of all the elements. All of your input surface nodes will be preserved in the final volumetric mesh. It will add new nodes on the surface or volume to ensure the quality constraint.

Qianqian


Time:: Tue Jul 27 2010 18:42:02 GMT-0400 (EST)</timestamp>

Name:Sanket Jain
Email
Institution:
Message:
Thank you Dr. Fang for your reply. On looking again, I realised the fresurfer surface mesh are pretty dense. I might end up using only 30-40% of the total mesh points as you suggested. Instead of using the meshresample, I tried the surf2mesh command with keepratio of 0.3/0.4 and the mesh was successfully created. I believe this function calls the meshresample function. But still, I had one question about surf2mesh function.

As I decreased the maxvol parameter, I got mesh with smaller elements. Not really surprised with that but, is there any units associated with that parameter? Is there any way to calculate the optimum maxvol based on the size of the geometry to be meshed?

Also, I will revisit meshing after I complete my current projects. I was looking for a meshing tools for future use and I think I found one :) Thank You for all your inputs.


Time:: Tue Jul 27 2010 15:47:59 GMT-0500 (CST)</timestamp>

Name:Qianqian Fang
Email
Institution:
Message:
hi Sanket

do a "help remeshsurf" see the possible options. For simplicity, you can set opt as a scalar, which will be the desired maximum element diameter of the resulting mesh; in that case, the grid-size will be set to opt/4 automatically.

Please do a meshresample first to reduce the mesh density and then do a remeshsurf; this can save a lot of memory for you.

By the way, do you have to keep the original surface more than 50%? FreeSurfer produces very dense surface mesh, for me, I usually keep only 5~10% of the elements. If you have a very dense surface mesh, tetgen will take a long time to make tetrahedral mesh.

You can also try MeshLab to manually select and correct these bad elements in the original mesh, but generally speaking, this is pretty difficult. I've chatted with the FreeSurfer developers in our building, but at this point, there is nothing we can do about it.


Time:: Tue Jul 27 2010 13:03:21 GMT-0400 (EST)</timestamp>

Name:Sanket Jain
Email
Institution:
Message:
What is the opt structure in remeshsurf function? I am not sure what the values for its opt.gridsize and others would be in my case. Is there any way I use the same gridsize and elemsize as my original surface mesh? or Does it nullify the whole objective of performing the resurfmehs.
Time:: Tue Jul 27 2010 10:45:21 GMT-0500 (Central Daylight Time)</timestamp>

Name:FangQ
Email
Institution:
Message:
hi Sanket

this the most frequently encountered error with iso2mesh (or tetgen). It is very likely that your original mesh contains self-intersecting elements, and mesh simplification (decimation) usually won't fix it (If you are using FreeSurfer, the pial surface it produced usually have this type of issue).

There is a work-around, but you might have to play with the options to get it to work. Please look into the sample script sample/demo_remesh_surface.m. It calls a function named remeshsurf in the toolbox. What this function does is to first convert a closed surface into a binary image, and then re-extract a surface from the volume, and the extraction script guarantees that the produced mesh is self-intersection free.

If your mesh is complex, you may have to use a large volume to re-voxelize your surface. Give it a try and let me know if it works.

Qianqian


Time:: Mon Jul 26 2010 19:54:04 GMT-0400 (EST)</timestamp>

Name:Sanket Jain
Email
Institution:Medical College of Wisconsin
Message:
I used a cortical surface and created a volumetric mesh using the surf2mesh function. If I use the keepratio value <=0.5; the mesher works really well. But if I use the keepratio value>0.5, I get the following message.

Error: Invalid PLC.

  Two subfaces (17561, 18027, 83603) and (83474, 83572, 18027) 
  are found intersecting each other. 
  Hint:  Use -d switch to find all intersecting facets. 
volume mesh generation is complete

I am not sure the reason for this message and also if there is any potential work around it.

Thanks, Sanket


Time:: Mon Jul 26 2010 16:05:00 GMT-0500 (Central Daylight Time)</timestamp>

Name:Qianqian Fang
Email

Name:Edouard Oudet
Email
Powered by Habitat