1

我在这个网站上搜索了很多,研究了类似的问题,并使用了给出的答案代码,但没有一个有效。所以我不得不问这个问题:

我有一个点云(一组 XYZ 用于 3D 表面)。它们实际上属于 3D 人体表面(胸部和背部)。我想在 MATLAB 中使用这些点制作 3D 曲面。我尝试了很多方法,但不幸的是没有一个有效。

如果有人能在这件事上为我提供一些帮助,我将不胜感激。谢谢你


实际上我自己得到了这个问题的答案!但我对此并不完全确定。

我必须定义这些点如何通过面矩阵连接。像这样 :

Faces = [ 1 2 6 ; 1 2 4 ; 1 3 9 ; 2 6 8 ; ... ] ;

这意味着例如点 1、2、6 作为面相互连接。定义面矩阵后,我必须使用补丁函数根据点(顶点)矩阵和给定的面矩阵制作一个 3D 表面。

这种事情的示例代码可能是这样的:

patch('Vertices', P, 'Faces', t);

或者

patch('Faces', t, 'Vertices', P, 'FaceColor', [1 0.75 0.65], 'EdgeColor', 'k', 'FaceAlpha', 1.0);

但是,我现在面临一个新问题,生成人脸矩阵!

有人对此有任何想法吗?

谢谢

4

2 回答 2

0

我能想到的一种方法是使用Delaunay triangulationfree boundary

% convert your X, Y, Z point cloud into a triangulated mesh
TRI = delaunay(X,Y,Z);
% get the outer boundary
[tri xf] = freeBoundary( TRI );
% plot
trisurf(tri, xf(:,1),xf(:,2),xf(:,3) );
于 2013-01-15T10:14:04.783 回答
0

代替 delaunay 只需使用 DelaunayTri

TRI = DelaunayTri(X,Y,Z);[tri xf] = freeBoundary( TRI );trisurf(tri, xf(:,1),xf(:,2),xf(:,3) );
于 2015-07-12T19:59:37.817 回答