2016-09-11 1 views
0

일부 3D 모델이 있고 모델의 각면을 별도로 표시하려고합니다. 각각의 얼굴에는 정점 목록 (pcl :: PointCloud), 번역 벡터 (Eigen :: Vector3f) 및 회전 행렬 (Eigen :: Quaternionf)이 있습니다. 얼굴은 다른 모양을 가질 수 있습니다. 직사각형, 원형 ​​(n-verts polygon) 및 사다리꼴입니다.주어진 3D-Vertices 및 VTK 변환을 사용하여 Draw (2D) 다각형

직사각형면에 대해 지금까지 vtkCubeSource를 사용했는데 제대로 작동합니다. 라운드 페이스의 경우 vtkCylinderSource를 사용할 수 있습니다. 사다리꼴 얼굴에 대해서는 지금까지 해결책을 찾지 못했습니다.

vtkPolyLineSource와 같은 클래스가 가장 좋습니다. 여기서는 모든 다각형에 대한 꼭짓점 목록 만 있으면됩니다. 그러나 내가 보는 한, vtkPolyLineSource는 라인을 그리고 폴리 노움을 색으로 채우지 않을 것입니다.

vtk로 다각형을 3D 공간으로 그릴 수 있습니까? 파일에서 3D 모델을 직접 그릴 수 있기 때문에 모델 (또는 한면)을 그리는 방법이 있어야한다고 생각하지만 지금까지는 찾을 수 없었습니다. VTK와의 첫 번째 접촉이기 때문에 방금 방과후 수업을 간과했다고 생각합니다.

내가 모델 파일을로드하지 않는 이유 중 하나는 다른 색상과 불투명도 (런타임에 defiend)로 얼굴이 필요하다는 것입니다.

답변

0

사용 vtkPolygon

vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New(); 
// ... fill in your points with n points 

// Create the polygon 
vtkSmartPointer<vtkPolygon> polygon = vtkSmartPointer<vtkPolygon>::New(); 
polygon->GetPointIds()->SetNumberOfIds(n); 
for (int j = 0; j < n; j++) 
{ 
    polygon->GetPointIds()->SetId(j, j); 
} 
// Add the polygon to a list of polygons 
vtkSmartPointer<vtkCellArray> polygons = vtkSmartPointer<vtkCellArray>::New(); 
polygons->InsertNextCell(polygon); 

// Create a PolyData 
vtkPolyData* polygonPolyData = vtkPolyData::New(); 
polygonPolyData->SetPoints(points); 
polygonPolyData->SetPolys(polygons); 

// create mapper and actor using this polydata - the usual stuff 
관련 문제