我非常搜索了这个网站并研究了相似的问题并使用了给出的答案代码,但都没有奏效。所以我不得不问这个问题:
我有一个点云(一组3D表面的XYZ)。 它们实际上属于3D人体表面(胸部和背部)。 我想在MATLAB中使用这些点来制作3D表面。 我尝试了很多方法但不幸的是没有工作。
如果有人能就此事给我一些帮助,我会感激不尽。 谢谢
其实我自己得到了这个问题的答案!!但我对此并不十分肯定。
我必须定义这些点如何通过面矩阵连接。像这样:
Faces = [ 1 2 6 ; 1 2 4 ; 1 3 9 ; 2 6 8 ; ... ] ;
这意味着例如点1,2,6作为面相互连接。 定义Face矩阵后,我必须使用补丁函数根据点(顶点)矩阵和给定的面矩阵制作3D表面。
这样的事情的示例代码可能是这样的:
patch('Vertices', P, 'Faces', t);
或
patch('Faces', t, 'Vertices', P, 'FaceColor', [1 0.75 0.65], 'EdgeColor', 'k', 'FaceAlpha', 1.0);
但是,我现在面临一个新问题,即生成面部矩阵!
有人对此有任何想法吗?
由于
答案 0 :(得分:0)
我能想到的一种方法是使用Delaunay triangulation和free 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) );
答案 1 :(得分:0)
取代delaunay只需使用DelaunayTri
TRI = DelaunayTri(X,Y,Z);[tri xf] = freeBoundary( TRI );trisurf(tri, xf(:,1),xf(:,2),xf(:,3) );