diff --git a/offline_ray_tracer/source/main.cpp b/offline_ray_tracer/source/main.cpp index c0e2cd42145d841fbbb3229e91039e29ded4bb85..5c8020fa5e961eedae7d15f0498c30717000a36b 100644 --- a/offline_ray_tracer/source/main.cpp +++ b/offline_ray_tracer/source/main.cpp @@ -1,6 +1,7 @@ #include <algorithm> #include <cstdint> +#include <vtkAVIWriter.h> #include <vtkOSPRayPass.h> #include <vtkPNGWriter.h> #include <vtkPolyDataMapper.h> @@ -41,18 +42,23 @@ std::int32_t main(std::int32_t argc, char** argv) renderer ->AddActor (pd_actor ); renderer ->AddVolume(ug_volume); - std::cout << "Setting up image writer.\n"; + std::cout << "Setting up image and video writers.\n"; auto window_to_image = vtkSmartPointer<vtkWindowToImageFilter>::New(); auto image_writer = vtkSmartPointer<vtkPNGWriter> ::New(); + auto video_writer = vtkSmartPointer<vtkAVIWriter> ::New(); window_to_image->SetInput (window); image_writer ->SetInputConnection(window_to_image->GetOutputPort()); - // TODO: Video writer. + video_writer ->SetInputConnection(window_to_image->GetOutputPort()); + video_writer ->SetFileName ("video.avi"); + video_writer ->SetQuality (2); + video_writer ->SetRate (settings.update_rate); // 24 + video_writer ->Start (); std::cout << "Starting render.\n"; auto current_time = 0.0f; auto counter = 0; auto last_slice = -1; - while (current_time < settings.key_frames.back().time) + while (current_time < settings.key_frames.back().time && counter < 10) { std::cout << "Rendering frame " << counter << ".\n"; @@ -77,11 +83,13 @@ std::int32_t main(std::int32_t argc, char** argv) window ->Render (); image_writer->SetFileName((std::string("frame_") + std::to_string(counter) + std::string(".png")).c_str()); image_writer->Write (); + video_writer->Write (); current_time += settings.update_rate; counter ++; } std::cout << "Finished render.\n"; + video_writer->End(); return 0; } \ No newline at end of file