diff --git a/offline_ray_tracer/include/settings.hpp b/offline_ray_tracer/include/settings.hpp index ccaf3b7864c38669a2448f1ad352fcb074461eca..23f106e84609576d462542fed65fe28e345e9439 100644 --- a/offline_ray_tracer/include/settings.hpp +++ b/offline_ray_tracer/include/settings.hpp @@ -23,7 +23,7 @@ struct settings { double time ; std::array<double, 3> position; - std::array<double, 3> forward ; + std::array<double, 3> center ; std::array<double, 3> up ; }; @@ -50,10 +50,10 @@ struct settings image_size = {root["image_size" ][0].asInt (), root["image_size" ][1].asInt ()}; - step_size = root["step_size"] .asDouble(); + step_size = root["step_size" ] .asDouble(); samples = root["samples" ] .asInt (); ambient_samples = root["ambient_samples"] .asInt (); - shadows = root["shadows"] .asBool (); + shadows = root["shadows" ] .asBool (); update_rate = root["update_rate" ] .asDouble(); @@ -65,10 +65,10 @@ struct settings iteratee["position"][0].asDouble(), iteratee["position"][1].asDouble(), iteratee["position"][2].asDouble()}; - entry.forward = std::array<double, 3> { - iteratee["forward" ][0].asDouble(), - iteratee["forward" ][1].asDouble(), - iteratee["forward" ][2].asDouble()}; + entry.center = std::array<double, 3> { + iteratee["center" ][0].asDouble(), + iteratee["center" ][1].asDouble(), + iteratee["center" ][2].asDouble()}; entry.up = std::array<double, 3> { iteratee["up" ][0].asDouble(), iteratee["up" ][1].asDouble(), diff --git a/offline_ray_tracer/source/main.cpp b/offline_ray_tracer/source/main.cpp index 3f81035fe2368330cd681f7e7bc6d6f5c8b1eeb7..148bf9b64fac58845138a9158202ed453784f112 100644 --- a/offline_ray_tracer/source/main.cpp +++ b/offline_ray_tracer/source/main.cpp @@ -52,11 +52,9 @@ std::int32_t main(std::int32_t argc, char** argv) for (const auto& key_frame : settings.key_frames) { auto* camera = renderer->GetActiveCamera(); - camera ->SetPosition (key_frame.position[0] , key_frame.position[1], key_frame.position[2]); - camera ->SetFocalPoint(key_frame.position[0] + key_frame.forward [0], - key_frame.position[1] + key_frame.forward [1], - key_frame.position[2] + key_frame.forward [2]); - camera ->SetViewUp (key_frame.up [0] , key_frame.up [1], key_frame.up [2]); + camera ->SetPosition (key_frame.position.data()); + camera ->SetFocalPoint(key_frame.center .data()); + camera ->SetViewUp (key_frame.up .data()); interpolator->AddCamera (key_frame.time, camera); } @@ -71,12 +69,13 @@ std::int32_t main(std::int32_t argc, char** argv) std::cout << "Setting up video writer.\n"; auto window_to_image = vtkSmartPointer<vtkWindowToImageFilter>::New(); auto video_writer = vtkSmartPointer<vtkAVIWriter> ::New(); - window_to_image->SetInput (window); - video_writer ->SetInputConnection(window_to_image->GetOutputPort()); - video_writer ->SetFileName ("video.avi"); - video_writer ->SetQuality (2); - video_writer ->SetRate (static_cast<std::int32_t>(1000.0 / settings.update_rate)); - video_writer ->Start (); + window_to_image->SetInput (window); + window_to_image->ReadFrontBufferOff (); + video_writer ->SetInputConnection (window_to_image->GetOutputPort()); + video_writer ->SetFileName ("video.avi"); + video_writer ->SetRate (static_cast<std::int32_t>(1000.0 / settings.update_rate)); + video_writer ->SetQuality (2); + video_writer ->Start (); std::cout << "Starting rendering.\n"; auto current_time = 0.0; diff --git a/settings.json b/settings.json index d2b7a0e06617c6f7754e567b294bc70f84dd3b7e..aa91994846d84e16b1cdc52353f28d42c51fa3ba 100644 --- a/settings.json +++ b/settings.json @@ -1,26 +1,25 @@ { "data_file_paths": [ - { "geometry": "D:/data/grids/AIA/Oxyflame/GEOM_0013200.vtp", "volume": "D:/data/grids/AIA/Oxyflame/1024/QOUT_0013200.vti", "scalar": "Q"}, - { "geometry": "D:/data/grids/AIA/Oxyflame/GEOM_0013200.vtp", "volume": "D:/data/grids/AIA/Oxyflame/1024/QOUT_0013200.vti", "scalar": "Q"}, - { "geometry": "D:/data/grids/AIA/Oxyflame/GEOM_0013200.vtp", "volume": "D:/data/grids/AIA/Oxyflame/1024/QOUT_0013200.vti", "scalar": "Q"} + { "geometry": "D:/data/grids/AIA/Oxyflame/GEOM_0013200.vtp", "volume": "D:/data/grids/AIA/Oxyflame/1024/QOUT_0013200.vti", "scalar": "Q" } ], "transfer_function": "D:/source/internal/oxyflame_rendering_tools/transfer_function.json", "time_scale" : 1000.0, - "loop" : true, + "loop" : false, - "image_size" : [4096, 4096], - "step_size" : 0.1, - "samples" : 128, + "image_size" : [1920, 1080], + "step_size" : 0.05, + "samples" : 16, "ambient_samples" : 0, "shadows" : true, "update_rate" : 16.0, "key_frames" : [ - { "time": 0.0, "position": [ 0.0, 0.0, 250.0], "forward": [ 0.0, 0.0, -1.0], "up": [0.0, 1.0, 0.0] }, - { "time": 2500.0, "position": [ 250.0, 0.0, 0.0], "forward": [-1.0, 0.0, 0.0], "up": [0.0, 1.0, 0.0] }, - { "time": 5000.0, "position": [ 0.0, 0.0, -250.0], "forward": [ 0.0, 0.0, 1.0], "up": [0.0, 1.0, 0.0] }, - { "time": 10000.0, "position": [-250.0, 0.0, 0.0], "forward": [ 1.0, 0.0, 0.0], "up": [0.0, 1.0, 0.0] } + { "time": 0.0, "position": [ 0.0, 0.0, 200.0], "center": [0.0, 0.0, 0.0], "up": [0.0, 1.0, 0.0] }, + { "time": 4000.0, "position": [ 200.0, 0.0, 0.0], "center": [0.0, 0.0, 0.0], "up": [0.0, 1.0, 0.0] }, + { "time": 8000.0, "position": [ 0.0, 0.0, -200.0], "center": [0.0, 0.0, 0.0], "up": [0.0, 1.0, 0.0] }, + { "time": 12000.0, "position": [-200.0, 0.0, 0.0], "center": [0.0, 0.0, 0.0], "up": [0.0, 1.0, 0.0] }, + { "time": 32000.0, "position": [ 0.0, 0.0, 0.0], "center": [0.0, 0.0, 0.0], "up": [0.0, 1.0, 0.0] } ] }