0
일부 윤곽선의 3D 모델을 만들려고합니다.멀티플 vtkpolydata 윤곽 렌더링
vtkAppolyFilter를 사용하여 vtkPolyData (내 윤곽선)를 추가하고 있습니다. 그런 다음 새 vtkPolyData 인스턴스에서 출력을 가져옵니다.
나는 매퍼를 넣은 다음 배우를 넣었습니다. 하지만 어떤 이유로 렌더링 할 때
아무 것도 볼 수 없습니다. 그냥 검은 화면.
누군가 내가 틀린 곳을 알고 있다면. 저에게 알려주세요.
감사합니다. 여기
이 '코드 S : 구글에
vtkSmartPointer<vtkAppendPolyData> appendFilter = vtkSmartPointer<vtkAppendPolyData>::New();
double z=0;
//Does the job to append them
for(int i=0; i < this->mAllContoursRepresentations.size();i++){
for(int j=0; j< this->mAllContoursRepresentations.at(i).size();j++){
// z. is the number of the image
z = this->mAllContoursRepresentations.at(i).at(j).first;
//contour to copy
vtkPolyData* pld = this->mAllContoursRepresentations.at(i).at(j).second->GetContourRepresentationAsPolyData();
//contour to paste
vtkSmartPointer<vtkPolyData> vtp = vtkSmartPointer<vtkPolyData>::New();
//copy contour and paste it in another one
vtp->DeepCopy(pld);
vtkPoints* vtpPoints = vtp->GetPoints();
vtkPoints* pldPoints = pld->GetPoints();
vtpPoints->SetNumberOfPoints(pld->GetNumberOfPoints());
for(int k=0;k<vtp->GetNumberOfPoints();k++){
double toPixel[3];
double points[3];
pldPoints->GetPoint(k,points);
vtkInteractorObserver::ComputeWorldToDisplay(Activity::GetActivity().GetDefaultRendererVisit(),points[0],points[1],points[2],toPixel);
points[2]= z;
points[1]=toPixel[1];
points[0]=toPixel[0];
vtpPoints->SetPoint(k,points);
}
//append contour to the filter
appendFilter->AddInputData(vtp);
}
}
appendFilter->Update();
vtkSmartPointer<vtkPolyDataMapper> contoursMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
contoursMapper->SetInputData(contours);
contoursMapper->ScalarVisibilityOff();
vtkSmartPointer<vtkActor> contoursActor = vtkSmartPointer<vtkActor>::New();
contoursActor->SetMapper(contoursMapper);
contoursActor->GetProperty()->SetRepresentationToWireframe();
contoursActor->GetProperty()->SetColor(1,0,1);
vtkSmartPointer<vtkVRMLExporter> exporter = vtkSmartPointer<vtkVRMLExporter>::New();
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderer->AddActor(contoursActor);
renderer->ResetCamera();
renderWindow->AddRenderer(renderer);
interactor->SetRenderWindow(renderWindow);
renderWindow->Render();
exporter->SetFileName("C:\\Users\\stagiaire\\Desktop\\toto.wrl");
exporter->SetRenderWindow(renderWindow);
exporter->Write();
interactor->Initialize();
interactor->Start();