vtk면 그리기의 실현

제목: 도면층 데이터(vtkimagedata)를 3D 객체(vtkpolydata)로 생성하는 예제 코드는 다음과 같습니다.
vtkSmartPointer<vtkMarchingCubes> pMarchingCubes = vtkSmartPointer<vtkMarchingCubes>::New();
    pMarchingCubes->SetInputData(vtkimagedata);
    pMarchingCubes->SetNumberOfContours(1);
    pMarchingCubes->SetValue(0, 1);

vtkMarchingCubes는 MC 방법이라고 약칭하는데 이 필터는 한 개체의 데이터의 입력(3차원 규칙의 점집)을 받아들여 한 개 이상의 등치면을 출력한다.그것을 사용하려면 반드시 등치면에 값을 부여해야 한다.또는, 이 범위 내의 일련의 등치면의 값을 결정하기 위해 scalar의 범위와 등치면의 간격을 설정할 수 있습니다.출력된 데이터는 종종 소음이 있기 때문에 보통 후속 처리를 거친다. 다음은 예시 코드이다.
 vtkSmartPointer<vtkSmoothPolyDataFilter> pSmoothPolyDataFilter = vtkSmartPointer<vtkSmoothPolyDataFilter>::New();
    pSmoothPolyDataFilter->SetInputConnection(pMarchingCubes->GetOutputPort());
    pSmoothPolyDataFilter->SetNumberOfIterations(m_nNumberOfIterations);
     pSmoothPolyDataFilter->SetRelaxationFactor(0.05);

    vtkSmartPointer<vtkPolyDataNormals> pPolyDataNormals = vtkSmartPointer<vtkPolyDataNormals>::New();
    pPolyDataNormals->SetInputConnection(pSmoothPolyDataFilter->GetOutputPort());
 pPolyDataNormals->SetFeatureAngle(m_nFeatureAngle);

vtkSmoothPoly DataFilter는 Laplacian 매끄러움을 실현했다. 예시에서 교체 횟수와 완화 인자만 지정했다. 교체 횟수가 많을수록 매끄러움이 심하고 디테일한 손실이 심각하다.릴렉스 인자는 Laplacian 알고리즘의 매개 변수로 모든 교체 알고리즘에서 이 매개 변수는 교체 과정의 안정성을 제어한다.일반적인 상황에서 작은 완화 계수와 큰 교체 횟수는 교체 알고리즘의 수렴 과정을 더욱 안정적으로 할 수 있다.또한 다른 변수를 사용하여 경계 점을 부드럽게 할지 여부를 제어하는 부드러운 프로세스를 제어할 수 있습니다.FeatureEdgeSmoothing은 피쳐 모서리의 점을 부드럽게 할지 여부를 제어하기 위해 SetFeatureAngle을 사용하여 한 모서리가 두 인접 다각형에 공용되는 경우 두 다각형의 법방향량의 협각(특징각)이 정의된 임계값보다 크면 해당 모서리를 피쳐 모서리라고 합니다.vtkPolyDataNormals는polydata의 법방향량을 계산하는데 사용되며, 법방향량을 계산하면 시각화된 데이터를 더욱 매끄럽게 할 수 있다.SetFeatureAngle는 특징각을 설정하는데 사용되며, 두 개의 인접한 다각형의 각도가 이 각보다 크다면 다각형의 공용변은 뾰족하고 기본값은 30도, 예변분열(splitting)이 열리고 다각형 순서(consistency)가 일치하게 열린다.아래 블로그를 참고하여 체그림과 면그림의 기본적인 실현을 소개하는 것을 추천합니다http://blog.csdn.net/inter_peng/article/details/53931566

좋은 웹페이지 즐겨찾기