删除MeshLab中的内部面,而不是所有内部结构

时间:2014-09-06 04:33:21

标签: file cubes meshlab occlusion stl-format

我有一个stl文件,它由连续的多维数据集组成,如下所示:

http://www.mathworks.com.au/matlabcentral/fileexchange/screenshots/6499/original.jpg

我需要删除多维数据集的所有共享面,因此结构变成一个连续的实体。

注意我不能只删除所有内部结构。物体是空心的,必须保持其内部结构。我只想删除相邻立方体的共享面。

有没有办法在MeshLab中做到这一点?谢谢,

1 个答案:

答案 0 :(得分:0)

我正在尝试做类似的事情,所以这里有我如何做到这一点:

获取边界体素并将其转换为点数:

surface= Volume- imerode(Volume, true(3));
indx=find(surface);
[x,y,z]=ind2sub(size(Volume),indx);
surface=horzcat(x,y,z);

将其另存为ply文件

function save_ply(filename,xyz)
    fid=fopen(strcat(filename,'.ply'),'wt');
    fprintf(fid,'ply\n');
    fprintf(fid,'format ascii 1.0\n');
    fprintf(fid,'element vertex %u\n',size(xyz,2));
    fprintf(fid,'property float x\n');
    fprintf(fid,'property float y\n');
    fprintf(fid,'property float z\n');
    fprintf(fid,'end_header\n');

    for ii=1:size(xyz,2)
       fprintf(fid,'%4f %4f %4f\n',xyz(1,ii),xyz(2,ii),xyz(3,ii)); 
    end

end

然后你可以将点云加载到Meshlab。然后,您可以使用其中包含的数十种算法创建STL文件,但是现在即时通讯,选择最佳算法。对于你的非凸面。