1

私はこのサイトを非常に検索し、同様の質問を研究し、与えられた回答コードを使用しましたが、どれも機能しませんでした. だから私はこの質問をしなければなりません:

ポイントクラウド(3DサーフェスのXYZのセット)があります。それらは実際には 3D 人体表面 (胸と背中) に属しています。MATLAB でこれらのポイントを使用して 3D サーフェスを作成したいと考えています。私は多くの方法を試しましたが、残念ながらどれもうまくいきませんでした。

誰かがこの問題について私に助けを提供できれば、私は感謝しています. ありがとうございました


実際、私はこの問題に対する答えを自分で得ました!! しかし、私はそれについて完全にはわかりません。

これらの点が面行列を介してどのように接続されるかを定義する必要があります。このような :

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

これは、たとえば点 1、2、6 が面として互いに接続されていることを意味します。Face マトリックスを定義した後、パッチ関数を使用して、指定されたポイント (頂点) マトリックスと Faces マトリックスに基づいて 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 の代わりに DelaunayTri を使用するだけです

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

私が考えることができる 1 つの方法は、ドローネ三角形分割自由境界を使用することです。

% 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 に答える