【发布时间】:2018-02-17 18:05:24
【问题描述】:
我有一个代表 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 文件开始有一个更简单的过程,那也是可以接受的。谢谢!
【问题讨论】:
-
您需要该切片平面上的数据点。这需要将顶点-曲面表示转换为网格网格,或者换句话说,将补丁转换为曲面。 “不幸的是,这不是一个简单的问题。”verycomputer.com/33_d6e081812d2a1139_1.htm
-
@Yvon 谢谢!我从一个 obj 文件开始。也许将它转换成补丁是一个错误的想法,我宁愿转换成更适合我最终任务的东西?转换为补丁是我发现的唯一方法来绘制它,但如果为了提取轮廓需要不同的表示,也可以。
-
您能否编辑您的问题以包含原始数据的外观?