2014-05-09 2 views
1

유선 표현에서 메쉬에 대한 delaunay 삼각 측량 결과를 얻었을 때 은 대각선없이 서페이스를 표시하고 싶습니다. 단지 깔끔한 사각형을 시각화했습니다. 필터를 구성 할 수있는 옵션이 있습니까?대각선을 숨기는 메쉬에 대한 Delaunay 삼각형 또는

뭔가 당신이하는 C++로 n 개의 알고리즘 또는 C# .NET을 알고,

delaunay->BoundingTriangulationOff(); 
delaunay->SetBoundingTriangulation(0); 

하지만 모든 대각선에 적용 할 수있는 ...

다른 생각이 사각형에 모든 triangules를 변환하는 어쩌면입니다 같은 이?

나는 예를 here

enter image description here

#include <vtkVersion.h> 
#include <vtkCellArray.h> 
#include <vtkPoints.h> 
#include <vtkTriangle.h> 
#include <vtkPolyData.h> 
#include <vtkPointData.h> 
#include <vtkLine.h> 
#include <vtkCellLocator.h> 
#include <vtkSmartPointer.h> 
#include <vtkDelaunay2D.h> 
#include <vtkPolyDataMapper.h> 
#include <vtkActor.h> 
#include <vtkRenderer.h> 
#include <vtkRenderWindow.h> 
#include <vtkRenderWindowInteractor.h> 
#include <vtkProperty.h> 
#include <vtkVertexGlyphFilter.h> 

int main(int, char *[]) 
{ 
    // Create a set of heighs on a grid. 
    // This is often called a "terrain map". 
    vtkSmartPointer<vtkPoints> points = 
    vtkSmartPointer<vtkPoints>::New(); 

    unsigned int GridSize = 10; 
    for(unsigned int x = 0; x < GridSize; x++) 
    { 
    for(unsigned int y = 0; y < GridSize; y++) 
     { 
     points->InsertNextPoint(x, y, (x+y)/(y+1)); 
     } 
    } 

    // Add the grid points to a polydata object 
    vtkSmartPointer<vtkPolyData> polydata = 
    vtkSmartPointer<vtkPolyData>::New(); 
    polydata->SetPoints(points); 

    // Triangulate the grid points 
    vtkSmartPointer<vtkDelaunay2D> delaunay = 
    vtkSmartPointer<vtkDelaunay2D>::New(); 
#if VTK_MAJOR_VERSION <= 5 
    delaunay->SetInput(polydata); 
#else 
    delaunay->SetInputData(polydata); 
#endif 
    delaunay->Update(); 

    // Visualize 
    vtkSmartPointer<vtkPolyDataMapper> meshMapper = 
    vtkSmartPointer<vtkPolyDataMapper>::New(); 
    meshMapper->SetInputConnection(delaunay->GetOutputPort()); 

    vtkSmartPointer<vtkActor> meshActor = 
    vtkSmartPointer<vtkActor>::New(); 
    meshActor->SetMapper(meshMapper); 

    vtkSmartPointer<vtkVertexGlyphFilter> glyphFilter = 
    vtkSmartPointer<vtkVertexGlyphFilter>::New(); 
#if VTK_MAJOR_VERSION <= 5 
    glyphFilter->SetInputConnection(polydata->GetProducerPort()); 
#else 
    glyphFilter->SetInputData(polydata); 
#endif 
    glyphFilter->Update(); 

    vtkSmartPointer<vtkPolyDataMapper> pointMapper = 
    vtkSmartPointer<vtkPolyDataMapper>::New(); 
    pointMapper->SetInputConnection(glyphFilter->GetOutputPort()); 

    vtkSmartPointer<vtkActor> pointActor = 
    vtkSmartPointer<vtkActor>::New(); 
    pointActor->GetProperty()->SetColor(1,0,0); 
    pointActor->GetProperty()->SetPointSize(3); 
    pointActor->SetMapper(pointMapper); 

    vtkSmartPointer<vtkRenderer> renderer = 
    vtkSmartPointer<vtkRenderer>::New(); 
    vtkSmartPointer<vtkRenderWindow> renderWindow = 
    vtkSmartPointer<vtkRenderWindow>::New(); 
    renderWindow->AddRenderer(renderer); 
    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = 
    vtkSmartPointer<vtkRenderWindowInteractor>::New(); 
    renderWindowInteractor->SetRenderWindow(renderWindow); 

    renderer->AddActor(meshActor); 
    renderer->AddActor(pointActor); 
    renderer->SetBackground(.3, .6, .3); // Background color green 

    renderWindow->Render(); 
    renderWindowInteractor->Start(); 

    return EXIT_SUCCESS; 
} 
+0

나는 이것을 C#에서 찾았으나 아무것도 발견되지 않았다. 내가 그것을 사용해야 할 시점까지, 나는 내 자신을 구현해야 할 것이라고 기대한다. 그 동안 Delauney tesselations에 관한 위키 피 디아 문서는 다소 조밀하기는하지만 이해할 수있는 가장 좋은 출발점입니다. – philologon

답변

1

나는 C#에서 점에서 삼각형 다듬기를 찾았다 아무것도 발견하지 않았습니다를 사용했다. 몇 달 안에 사용해야 할 시점까지, 나는 내 자신을 구현해야 할 것입니다. 그 동안 Delauney Tesselations에 관한 위키 피 디아 문서는 조금 복잡합니다 (이해하기 어렵습니다). 그러나 이것은 내가 손으로 찾을 수있는 가장 좋은 출발점입니다.

테셀레이션을 수행 한 후에는 모델 삼각형을 WPF의 Viewport3D의 MeshGeometry3D 객체 인 삼각형 객체로 만들어야합니다. 이것은 더 가까운 삼각형을 숨기는 작업을 할 것입니다. Charles Petzold의 저서 '3D Programming for Windows'는 많은 도움을주었습니다. 하지만 가장 도움이 된 것은 Dario Solera의 'WPF 3D Primer'였습니다. http://www.codeproject.com/Articles/23332/WPF-3D-Primer 오히려 멋진 응용 프로그램을 얻으려고 한 이유는 Solera의 코드에서 시작하여 한 번에 한 단계 씩 수정하여 프로젝트와 매우 다른 점이 있었지만 그의 프로젝트 없이는 그것을 할 수 없었습니다.

관련 문제