2014-11-22 4 views
2

이 요구 사항은 Matlab에서 표면 메쉬를 trisurf으로 표시 할 때 발생합니다. 메쉬가 고밀도 (고해상도)이며 천천히 렌더링되고 회전 할 수 없기 때문입니다. 그래서 기본 모양을 유지하면서 메시를 다운 샘플링 할 수있는 직관적 인 방법이 있는지 궁금합니다.삼각형 메쉬를 간단히 다운 샘플링하는 방법은 무엇입니까?

여기에 질문을 게시하기 전에 봤습니다. 인기있는 도구 iso2mesh은 비슷한 기능을 가지고 있습니다 (remeshsurf). 그러나 먼저 원래의 메쉬로 볼륨을 재구성하고 원하는 메쉬에 따라 새로운 메쉬를 만듭니다. 제 생각에 중요한 결함은 그것이 원래 모양을 변경한다는 것입니다.

누구나 몇 가지 아이디어가 있습니까? Matlab 함수는 테스트하기 쉽기 때문에 가장 좋습니다.

감사합니다.

니코

답변

1

당신은

[x,y]=meshgrid(1:15,1:15); 
tri = delaunay(x,y); 
z = peaks(15); 
trisurf(tri,x,y,z) 
figure 
x1 = x(1 : 2 : end,1 : 2 : end); 
y1 = y(1 : 2 : end,1 : 2 : end); 
z1 = z(1 : 2 : end,1 : 2 : end); 
tri1 = delaunay(x1,y1); 
trisurf(tri1,x1,y1,z1) 

enter image description here

enter image description here

당신은 각 데이터에 downsample 기능을 사용할 수, 데이터를 다운 샘플링한다.

+0

신속하고 친절한 대답에 감사드립니다. 그러나 이것은 아마도 V = f (x, y)와 같이 우리가 정확히 알고있는 표면에만 적합합니다. 그러나, 내가 가지고있는 원래 데이터가 분포 함수 그 자체가 아닌 고해상도 메쉬이거나 때로는 V = f (x, y, z)와 같은 3D 함수입니다. 따라서, 제안에 따르면, 원래 메쉬에서 새 메쉬의 값을 자세히 보간해야합니까? 정말 고맙습니다. – nicozuo

+0

@nicozuo 네, 맞습니다. 편집이 제대로 작동하는지 확인하십시오. – Rashid

+0

@nicozuo,'trisurf'를 호출하기 전에'x, y, z'를 가지고 있으므로 그냥 내려 간다. 작동하지 않는 경우 예제 데이터를 제공하십시오. – Rashid

0

@Kamtal (원래이 게시물을 덧글로 추가했지만 "너무 긴 게시물"을 표시합니다.) 많은 감사드립니다. 제 모양은 선체가 obviouse 일 때만 당신의 방법이 좋은 선택이라고 생각합니다. 다른 경우에는, 인간 두뇌의 피질 인 인스턴스의 경우 Matlab delaunay 함수는 기본 모양 (폴드)을 예약하면서 삼각형 메쉬를 다시 생성 할만큼 똑똑하지 않습니다. Here (약 1.7M) 피질의 표면을 설명하는 예제를 업로드했습니다 (왼쪽 및 오른쪽 반구 모두). 다음 코드로 표시 될 수 있습니다. load mysurf.mat; figure, trisurf(mysurf.tri, mysurf.coord(:,1),mysurf.coord(:,2),mysurf.coord(:,3)); view(-90,0); daspect([1 1 1]); axis tight; camlight; axis vis3d off; lighting phong; material shiny;
shading interp;

관련 문제