2014-09-02 3 views
1

vtkTransform을 사용하여 vtkPolyData 객체를 변환하려고합니다. 그러나 http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filters/TransformPolyDataVTK6 - 파이프 라인을 사용하지 않고 vtkPolyData 변환

, 내가 여기에 언급 한 바와 같이 독립형 데이터 객체에 대한 GetOutputPort 방법 thge 제거했습니다 VTK 6.1 사용하고 있습니다 : http://www.vtk.org/Wiki/VTK/VTK_6_Migration/Replacement_of_SetInput

내가 가진를 그러나, 튜토리얼 나는 예를 들어, 파이프 라인을 사용하고 발견 라인 교체하려고 :와

transformFilter->SetInputConnection() 

transformFilter->SetInputData(polydata_object); 

아쉽게도 데이터가 제대로 읽히지 않았습니다. 파이프 라인이 올바르게 설정되지 않았기 때문에

VTK6에서 파이프 라인을 사용하지 않고 독립형 vtkPolyData를 올바르게 변환하는 방법을 알고 계십니까?

감사합니다.

답변

3

GetOutputPort는 결코 데이터 개체의 메서드가 아니 었습니다. 그것은 항상 vtkAlgorithm의 메소드 였고 여전히 vtkAlgorithm (및 서브 클래스)에 존재합니다. polydata_object가 어디서 오는가? 그것은 독자의 출력이 있다면, 당신은 두 가지 옵션이 있습니다

// update the reader to ensure it executes and reads data. 
reader->UpdatePipeline() 

// now you can get access to the data object. 
vtkSmartPointer<vtkPolyData> data = vtkPolyData::SafeDownCast(reader->GetOutputDataObject(0)); 

// pass that to the transform filter. 
transformFilter->SetInputData(data.GetPointer()); 
transformFilter->Update(); 

두 번째 옵션은 단순히 파이프 라인을 연결하는 것입니다 :

transformFilter->SetInputConnection(reader->GetOutputPort()); 
의 핵심은 전달하기 전에 데이터가 업데이트되도록/독자를 보장하는 것입니다

파이프 라인을 사용하지 않을 때는 변환 필터로 보내십시오.

+0

안녕 Utkarsh, 답변 주셔서 감사합니다. VTK을 처음 접했을 때 data의 차이점을 알려주실 수 있습니까? GetPointer() 또는 데이터 만 사용 하시겠습니까? 제 생각에는 두 가지가 모두 효과가 있다고 생각합니다. –

+0

이것은 http://www.vtk.org/Wiki/VTK/Tutorials/SmartPointers에서 매우 잘 설명되어 있습니다 (기능에 스마트 포인터 전달하기 참조). – JohnnyQ

+0

안녕하세요 JohnnyQ. 기사를 올바르게 이해하면 아무 생각이 없습니다. 차. 이 경우처럼 데이터는 스마트 포인터이며 data.GetPointer()는 객체에 대한 원시 포인터를 반환합니다. –

관련 문제