我有一个表示3D对象的.obj文件。
我需要从这个3D对象中提取通过与平面相交获得的轮廓。因此,例如,我有一个表示以垂直轴定向的圆柱体的物体,然后我想在交叉平面为水平时提取圆形轮廓,或者在交叉平面垂直时提取矩形轮廓。有关如何做的任何建议吗?
由于我不知道如何可视化这个obj文件,我已经使用以下代码转换为补丁(某些函数来自matlab文件交换中的loadawobj)。
modelname='file.obj';
S=loadawobj(modelname);
mtl=loadawmtl(['obj/' S.mtllib]);
p3=patch('Vertices',S.v','Faces',S.f3');
for ii=1:length(S.umat3)
mtlnum=S.umat3(ii);
fvcd3(ii,:)=mtl(1).Kd';
end
p3.FaceVertexCData=fvcd3;
p3.FaceColor='flat';
但是如果太复杂而无法完成,我不一定需要从生成的补丁中提取轮廓。如果从obj文件开始有一个更简单的过程,它也很好并且可以接受。谢谢!
答案 0 :(得分:1)
这是我在网上收集信息后解决问题的方式。我无法在线找到任何东西,所以我必须自己实现一个算法。基本思想很简单,但需要很多步骤。我从两个信息开始:一个数组包含浊点的坐标,另一个数组包含一堆关于3个顶点如何连接形成三角形的元组。