Incomplete rendering when two renderers share a camera
Two renderers in a render window, share the same camera, in order to be moved together with user interaction.
At first rendering is OK, but if user moves the camera in the scene with the mouse, the front and the back of the actor disappear, as if the field of view of the camera was shortened.
VTK 7.1 and 8.0, on Windows 7 64 bit.
Example code to reproduce:
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkCamera.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkPolyData.h>
#include <vtkPlaneSource.h>
#include <vtkInteractorStyleTrackballCamera.h>
int main(int, char*[])
{
auto plane_source = vtkSmartPointer<vtkPlaneSource>::New();
auto mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(plane_source->GetOutputPort());
auto actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
auto renderer0 = vtkSmartPointer<vtkRenderer>::New();
auto renderer1 = vtkSmartPointer<vtkRenderer>::New();
renderer0->SetLayer(0);
renderer1->SetLayer(1);
auto render_window = vtkSmartPointer<vtkRenderWindow>::New();
render_window->SetNumberOfLayers(2);
render_window->AddRenderer(renderer0);
// The following line triggers rendering problems
render_window->AddRenderer(renderer1);
auto camera = vtkSmartPointer<vtkCamera>::New();
renderer0->SetActiveCamera(camera);
renderer1->SetActiveCamera(camera);
renderer0->AddActor(actor);
renderer0->ResetCamera();
auto render_window_interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
auto trackball_style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
render_window_interactor->SetRenderWindow(render_window);
render_window_interactor->SetInteractorStyle(trackball_style);
render_window->Render();
render_window_interactor->Start();
return EXIT_SUCCESS;
}
Edited by Charles Brossollet