/*========================================================================= Program: Visualization Toolkit Module: TestOSPRayTime.cxx Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ // This test verifies that time varying data works as expected in ospray // // The command line arguments are: // -I => run in interactive mode; unless this is used, the program will // not allow interaction and exit #include "vtkActor.h" #include "vtkCamera.h" #include "vtkDataSetSurfaceFilter.h" #include "vtkInformation.h" #include "vtkOSPRayPass.h" #include "vtkOSPRayRendererNode.h" #include "vtkPolyDataMapper.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkRenderer.h" #include "vtkSmartPointer.h" #include "vtkStreamingDemandDrivenPipeline.h" #include "vtkTimeSourceExample.h" int TestOSPRayTime(int argc, char* argv[]) { vtkSmartPointer iren = vtkSmartPointer::New(); vtkSmartPointer renWin = vtkSmartPointer::New(); iren->SetRenderWindow(renWin); vtkSmartPointer renderer = vtkSmartPointer::New(); renWin->AddRenderer(renderer); renderer->SetBackground(0.0, 0.0, 0.0); renWin->SetSize(400, 400); renWin->Render(); vtkSmartPointer ospray = vtkSmartPointer::New(); renderer->SetPass(ospray); for (int i = 0; i < argc; ++i) { if (!strcmp(argv[i], "--OptiX")) { vtkOSPRayRendererNode::SetRendererType("optix pathtracer", renderer); break; } } vtkSmartPointer timeywimey = vtkSmartPointer::New(); timeywimey->GrowingOn(); vtkSmartPointer dsf = vtkSmartPointer::New(); dsf->SetInputConnection(timeywimey->GetOutputPort()); vtkSmartPointer mapper = vtkSmartPointer::New(); mapper->SetInputConnection(dsf->GetOutputPort()); vtkSmartPointer actor = vtkSmartPointer::New(); renderer->AddActor(actor); actor->SetMapper(mapper); renWin->Render(); renderer->ResetCamera(); double pos[3]; vtkCamera* camera = renderer->GetActiveCamera(); camera->SetFocalPoint(0.0, 2.5, 0.0); camera->GetPosition(pos); pos[0] = pos[0] + 6; pos[1] = pos[1] + 6; pos[2] = pos[2] + 6; camera->SetPosition(pos); renderer->ResetCameraClippingRange(); renWin->Render(); for (int i = 0; i < 20; i++) { double updateTime = (double)(i % 10) / 10.0; cerr << "t=" << updateTime << endl; renderer->SetActiveCamera(camera); vtkInformation* outInfo = dsf->GetExecutive()->GetOutputInformation(0); outInfo->Set(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEP(), updateTime); renderer->ResetCameraClippingRange(); renWin->Render(); } iren->Start(); return 0; }