Converting MATLAB Isosurface into Triangulation object for .stl export

조회 수: 38 (최근 30일)
I am trying to build a code which can take a .tiff file with volumetric data, get a 3-D mesh representation and export that as a .stl geometry for use in COMSOL multiphysics.
I have gotten to the point where I have the face and vertices data from the isosurface function, and want to create a triangulation object(?) for use in stlwrite to export this format. However, when I try to use the face and vertices data, I get the error:
"
Error using indexing
The input must contain index values; entries with Inf, NaN, zero, negative, or fractional parts are not permitted.
Error in testing_dxl_file_conversion (line 62)
triangulationObj = triangulation(faces, vertices);
"
Code attached! It starts with a script to generate a test .tiff file composed of spheres within a volume (originally thought .dxf file conversion was possible, hence the name of the file).
  댓글 수: 1
Fabio Freschi
Fabio Freschi 2023년 10월 18일
When running your file, the following error appears
Unrecognized function or variable 'numFrames'.
Error in testing_dxl_file_conversion (line 44)
tiffStack = zeros(tiffInfo(1).Width, tiffInfo(1).Height, numFrames, 'uint16'); % Use the appropriate data type

댓글을 달려면 로그인하십시오.

채택된 답변

Fabio Freschi
Fabio Freschi 2023년 10월 18일
편집: Fabio Freschi 2023년 10월 18일
You don't need to use surf2patch. You can extract infos directly from the struct created by isosurface
isosurf = isosurface(tiffStack, isovalue);
faces = isosurf.faces;
vertices = isosurf.vertices;
In addition, the call to stlwrite is wrong: the triangulation goes first
stlwrite(triangulationObj,stlFileName);
Beacuase I don't have all info to run your code, I show you a simple example
clear all, close all
[x,y,z] = meshgrid(-3:0.25:3);
V = x.*exp(-x.^2 -y.^2 -z.^2);
p = isosurface(x,y,z,V,1e-4);
% create triangulation
TR = triangulation(p.faces,p.vertices);
% save STL
stlwrite(TR,'mytest.stl');
% check: read STL
TR2 = stlread('mytest.stl');
% plot
figure
triplot(TR2);
  댓글 수: 3
Saurav
Saurav 2024년 4월 3일
@Joshua Prince I have .tiff stack file now I want to create .stl file for the geomtery analysis of stone.
Can you plz assit me in how to feed .tiff stack file in you code "testing_dxl_file_conversion.m"
I have attached .tiff folder.
Joshua Prince
Joshua Prince 2024년 4월 3일
the code I ulpoaded both generates the .tiff file and processes it. If your .tiff file is already on hand, you can start at line 43 of the code by entering your .tiff filename (assuming its in the same directory as your .m file), then run it through the code. Don't forget to make the adjustments based on the above anser!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Scalar Volume Data에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by