how to rotate camer on a reslice image and change the image display?

I display a image in renderer, and rotate some degree of camera, but the image of displaying don’t have difference. after rotation, I got the parameter of image, it has changed.

vtkSmartPointer reader = vtkSmartPointer::New();
reader->SetDirectoryName(“D:\test”);
reader->Update();
vtkSmartPointer m_Renderer = vtkSmartPointer::New();
vtkSmartPointer RenderWindowInteractor = vtkSmartPointer::New();

vtkSmartPointer m_RenderWindow = vtkSmartPointer::New();
m_RenderWindow->AddRenderer(m_Renderer);
m_RenderWindow->SetSize(640, 480);
m_RenderWindow->SetWindowName(“ImageViewerTest”);

RenderWindowInteractor->SetRenderWindow(m_RenderWindow);
RenderWindowInteractor->Initialize();

vtkSmartPointer< vtkImagePlaneWidget > m_ImagePlaneWidget = vtkSmartPointer< vtkImagePlaneWidget >::New();
vtkSmartPointer< vtkResliceCursorThickLineRepresentation > m_ResliceCursorRep = vtkSmartPointer< vtkResliceCursorThickLineRepresentation >::New();
vtkSmartPointer< vtkResliceCursor > m_ResliceCursor = vtkSmartPointer< vtkResliceCursor >::New();
vtkSmartPointer< vtkResliceCursorWidget> m_ResliceCursorWidget = vtkSmartPointer< vtkResliceCursorWidget>::New();

m_ResliceCursorRep->GetResliceCursorActor()->
GetCursorAlgorithm()->SetResliceCursor(m_ResliceCursor);
m_ResliceCursorRep->GetResliceCursorActor()->
GetCursorAlgorithm()->SetReslicePlaneNormal(1);
m_ResliceCursorWidget->SetInteractor(m_RenderWindow->GetInteractor());
m_ImagePlaneWidget->SetInteractor(m_RenderWindow->GetInteractor());
m_ImagePlaneWidget->SetDefaultRenderer(m_Renderer);
m_ResliceCursorWidget->SetDefaultRenderer(m_Renderer);
m_ResliceCursorWidget->SetRepresentation(m_ResliceCursorRep);

m_ResliceCursorWidget->SetEnabled(1);

m_ImagePlaneWidget->SetInputData(reader->GetOutput());
m_ImagePlaneWidget->SetPlaneOrientation(1);
m_ImagePlaneWidget->SetSliceIndex(256); //
double pos[3];
reader->GetOutput()->GetCenter(pos);
m_ResliceCursor->SetImage(reader->GetOutput());
m_ResliceCursor->SetCenter(pos);

m_ImagePlaneWidget->On();
m_ImagePlaneWidget->InteractionOn();

//////////////////////////////////////////////////////////////////////////
double range[2];
reader->GetOutput()->GetScalarRange(range);
m_ResliceCursorWidget->GetResliceCursorRepresentation()->
SetWindowLevel(range[1] - range[0], (range[0] + range[1]) / 2.0);
m_ImagePlaneWidget->SetWindowLevel(range[1] - range[0], (range[0] + range[1]) / 2.0);

m_Renderer->ResetCamera();
m_Renderer->SetBackground(1, 1, 1);

double *focus = m_Renderer->GetActiveCamera()->GetFocalPoint();
double *range1 = m_Renderer->GetActiveCamera()->GetClippingRange();
vtkSmartPointeraCamera = vtkSmartPointer::New();
aCamera = m_Renderer->GetActiveCamera();
//Azimuth Ele no result, roll can result yaw disappear
double *ori = aCamera->GetOrientation();
double *viewup = aCamera->GetViewPlaneNormal();
m_Renderer->GetActiveCamera()->Yaw(60);
double *pos1 = aCamera->GetPosition();
aCamera->Azimuth(60);
aCamera->ComputeViewPlaneNormal();
double *viewup1 = aCamera->GetViewPlaneNormal();
m_Renderer->SetActiveCamera(aCamera);
m_RenderWindow->Render();
RenderWindowInteractor->Start();

Could you describe what would you like to achieve? What you would like to visualize and how?

I want to see the back of image.
for example, when I reslice a image and display the front of image, now I want to rotate camera to the back of image and see the back of image. but I found I can’t see the back whatever I rotate the camera as if the camera didn’t move any more. I want to know, why the camera’s rotate setting why not effect? thanks

1 Like

Hello everyone,

I am having the same problem using similar code in version vtk 8.1.
The only action that does something on the camera is the roll parameter but it does not rotate the image in the right way.
Like @pingdan I’d like to see the image from its back and not from its top. I’ve tried every camera parameter (Orientation, Yaw, Roll, Elevation, Azimuth,Pitch, ViewUp, Position,…) but the only thing I can do is rotating the image along its perpendicular axis.
I could flip the entire vtkImage to have the good result but then it would generate other problems. It looks like the printed image is a 2D slice but I can’t rotate it to see from behind.
If someone found a solution to this problem.

Thank you !