VtkTransform 和 SetPosition的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xs1997/article/details/89362794

 想要对原始数据进行位置操作,一定要搞清楚VtkTransform 和 SetPosition的区别啊!!!SetPosition这是改变Actor的显示位置,原始数据的位置是不变的,而VtkTransform是对原始数据进行平移,旋转的,是改变原始数据位置的,切记别入坑。

#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkPolyData.h>
#include <vtkTransform.h>
#include <vtkTransformPolyDataFilter.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>

//如果出现错误请加上下面的声明
#include "vtkAutoInit.h" 
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);

int main(int, char *[])
{
    // Create the polydata geometry

    vtkSmartPointer<vtkSphereSource> sphereSource =
        vtkSmartPointer<vtkSphereSource>::New();
    sphereSource->Update();

    // Set up the actor to display the untransformed polydata

    vtkSmartPointer<vtkPolyDataMapper> originalMapper =
        vtkSmartPointer<vtkPolyDataMapper>::New();
    originalMapper->SetInputConnection(sphereSource->GetOutputPort());

    vtkSmartPointer<vtkActor> originalActor =
        vtkSmartPointer<vtkActor>::New();
    originalActor->SetMapper(originalMapper);
    originalActor->GetProperty()->SetColor(1, 0, 0);

    // Set up the transform filter   
    vtkSmartPointer<vtkTransform> translation = vtkSmartPointer<vtkTransform>::New(); 
    translation->Translate(1.0, 2.0, 3.0); //tran  
    vtkSmartPointer<vtkTransformPolyDataFilter> transformFilter =    vtkSmartPointer<vtkTransformPolyDataFilter>::New();  
    transformFilter->SetInputConnection(sphereSource->GetOutputPort()); 
    transformFilter->SetTransform(translation);  
    transformFilter->Update(); 
    // Set up the actor to display the transformed polydata

    vtkSmartPointer<vtkPolyDataMapper> transformedMapper =
        vtkSmartPointer<vtkPolyDataMapper>::New();
    transformedMapper->SetInputConnection(transformFilter->GetOutputPort());
    vtkSmartPointer<vtkActor> transformedActor =
        vtkSmartPointer<vtkActor>::New();
    transformedActor->SetMapper(transformedMapper);  transformedActor->GetProperty()->SetColor(0, 1, 0);

    // Set up the rest of the visualization pipeline

    vtkSmartPointer<vtkRenderer> renderer =
        vtkSmartPointer<vtkRenderer>::New();
    renderer->AddActor(originalActor);
    renderer->AddActor(transformedActor);  renderer->SetBackground(.3, .6, .3); // Set renderer's background color to green

    vtkSmartPointer<vtkRenderWindow> renderWindow =
        vtkSmartPointer<vtkRenderWindow>::New();
    renderWindow->AddRenderer(renderer);

    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
        vtkSmartPointer<vtkRenderWindowInteractor>::New();
    renderWindowInteractor->SetRenderWindow(renderWindow)`````````````
``
renderWindowInteractor->Start();

    return EXIT_SUCCESS;
}

猜你喜欢

转载自blog.csdn.net/xs1997/article/details/89362794