改进
改进了一下,就算面集不是123456…也能用
function [ vertices,faces ] = unique_vertices( vertices,faces )
%UNIQUE_VERTICES 将有冗余的点集去重,并保留拓扑结构
% 输入:
% faces:n*3的面集
% vertices:m*3的点集
%
% 输出:
% vertices:去重后的点集
% faces:n*3的面集
% size_faces=size(faces,1);
[vertices,~,ic]=unique(vertices,'rows');
%先把面集展开成向量
temp=faces';
faces=temp(:);
faces_new=ic(faces);
%再把面集变成m行3列
faces_new=reshape(faces_new,3,[]);
faces_new=faces_new';
% faces=reshape(ic,[3 size_faces])';
%输出
faces=faces_new;
end
问题
obj文件是由点和面构成,有时候读入或者处理的时候,点数量是面数量的三倍,如图:
点集是面集的三倍,每个面的三个点都存起来了,导致有很多点的冗余,比如图里只有六个点,但是点集却有12个点