// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen // SPDX-License-Identifier: BSD-3-Clause // // This example tests the vtkCamera3DWidget #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int TestCamera3DWidget(int, char*[]) { vtkNew sphereSource; vtkNew cubeSource; cubeSource->SetCenter(0.0, 0.0, 2.0); vtkNew source; source->AddInputConnection(sphereSource->GetOutputPort()); source->AddInputConnection(cubeSource->GetOutputPort()); source->Update(); // Create mapper and actor vtkNew mapper; mapper->SetInputConnection(source->GetOutputPort()); vtkNew actor; actor->SetMapper(mapper); // Renderers and one render window double mainViewport[4] = { 0.0, 0.0, 0.5, 1.0 }; double cameraViewport[4] = { 0.5, 0.0, 1.0, 1.0 }; vtkNew mainRenderer; mainRenderer->SetViewport(mainViewport); mainRenderer->AddActor(actor); mainRenderer->SetBackground(0.7, 0.7, 1.0); vtkNew cameraRenderer; cameraRenderer->SetViewport(cameraViewport); cameraRenderer->InteractiveOff(); cameraRenderer->AddActor(actor); cameraRenderer->SetBackground(0.8, 0.8, 1.0); vtkNew renderWindow; renderWindow->SetSize(600, 300); renderWindow->AddRenderer(mainRenderer); renderWindow->AddRenderer(cameraRenderer); renderWindow->SetWindowName("cameraWidget"); // An interactor vtkNew renderWindowInteractor; renderWindowInteractor->SetRenderWindow(renderWindow); // Camera widget and its representation vtkNew cameraRepresentation; vtkNew cameraWidget; cameraWidget->SetInteractor(renderWindowInteractor); cameraWidget->SetRepresentation(cameraRepresentation); // If you want to set the camera, do it before placing the widget cameraRepresentation->SetCamera(cameraRenderer->GetActiveCamera()); // Placing widget is optional, if you do, camera will be moved toward bounds cameraRepresentation->PlaceWidget(actor->GetBounds()); // Render renderWindowInteractor->Initialize(); renderWindow->Render(); cameraWidget->On(); // Begin mouse interaction renderWindowInteractor->Start(); return EXIT_SUCCESS; }