我编写了MATLAB代码(如下所示),它创建了一个边缘,然后构建了从该边缘延伸的网格。我可以在图中看到3D模型作为网格,但是无法将此模型导出为3d对象,例如stl或obj。
我读了许多转换为stl的例子,它使用了这样的东西:
% Extract the surface mesh
M=isosurface(x,y,z,F,0);
tr=TriRep(M.faces,M.vertices);
figure('color','w'), h=trimesh(tr); axis equal
% Write to .stl
stlwrite('PillBoxExample.stl',tr.Triangulation,tr.X)
但在我的代码中我只使用了网格:
figure;
M= surface(-finalLSF);
hold on; contour(phi, [0,0], 'r','LineWidth',2);
我尝试了很多时间来转换它但仍然有错误。
代码:
Img = imread('MK2.jpg');
Img=double(Img(:,:,1));
%
% ... other code ...
%
figure;
M= mesh(-finalLSF);
hold on; contour(phi, [0,0], 'r','LineWidth',2);
str=['Final level set function, ', num2str(iter_outer*iter_inner+iter_refine), ' iterations'];
title(str);
axis on;
答案 0 :(得分:0)
要使用stlwrite,您需要它的源代码。 Matlab没有这个功能。 https://de.mathworks.com/matlabcentral/fileexchange/20922-stlwrite-filename--varargin-应该这样做。
答案 1 :(得分:0)
您需要download stlwrite
from File Exchange,并将其放在Matlab路径中。您可以通过键入exist('stlwrite')
来检查它是否在您的路径上。如果这返回2
,那你很好。如果它返回0
,那么您需要add it to your path。
您似乎拥有x
,y
和z
坐标,在这种情况下您只需拨打
stlwrite('C:\...\filename.stl', x, y, z);
如果您想先使用isosurface
,请使用
M = isosurface(x,y,z,F,0);
stlwrite('C:\...\filename.stl', M);