【matlab教程】19、读入obj时,点集有冗余,给点集去重,并保留拓扑结构

改进

改进了一下,就算面集不是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个点

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值