From b1d61c67c28a9ba4a1de834e401d97cfc9e84764 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Sun, 21 Dec 2025 20:53:50 +0100 Subject: Reworking some structures. adding particle tests again --- util/vtk_renderer/kel_vtk_renderer.cpp | 80 ++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 util/vtk_renderer/kel_vtk_renderer.cpp (limited to 'util/vtk_renderer/kel_vtk_renderer.cpp') diff --git a/util/vtk_renderer/kel_vtk_renderer.cpp b/util/vtk_renderer/kel_vtk_renderer.cpp new file mode 100644 index 0000000..516e4c3 --- /dev/null +++ b/util/vtk_renderer/kel_vtk_renderer.cpp @@ -0,0 +1,80 @@ +#include +#include +#include // Use vtkXMLStructuredGridReader for .vts +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int main() +{ + // Renderer & offscreen window + auto renderer = vtkSmartPointer::New(); + renderer->SetBackground(0.1, 0.2, 0.4); + + auto renderWindow = vtkSmartPointer::New(); + renderWindow->AddRenderer(renderer); + renderWindow->SetSize(800, 600); + renderWindow->OffScreenRenderingOn(); // No GUI + + auto windowToImage = vtkSmartPointer::New(); + windowToImage->SetInput(renderWindow); + windowToImage->SetInputBufferTypeToRGB(); + windowToImage->ReadFrontBufferOff(); + + auto writer = vtkSmartPointer::New(); + writer->SetInputConnection(windowToImage->GetOutputPort()); + + // Camera setup (fixed) + renderer->GetActiveCamera()->SetPosition(0, 0, 10); + renderer->GetActiveCamera()->SetFocalPoint(0, 0, 0); + renderer->ResetCamera(); + + int startIndex = 0; + int endIndex = 1024; // adjust to your sequence length + + for (int i = startIndex; i <= endIndex; ++i) + { + // Format input filename + std::ostringstream vtkFile; + vtkFile << "poiseulle_2d_gpu_" << (i*4) << ".vtk"; + + // Read structured points (equidistant grid) + auto reader = vtkSmartPointer::New(); + reader->SetFileName(vtkFile.str().c_str()); + reader->Update(); + + // Convert structured grid to surface for rendering + auto surfaceFilter = vtkSmartPointer::New(); + surfaceFilter->SetInputConnection(reader->GetOutputPort()); + surfaceFilter->Update(); + + auto mapper = vtkSmartPointer::New(); + mapper->SetInputConnection(surfaceFilter->GetOutputPort()); + + auto actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + // Clear previous frame + renderer->RemoveAllViewProps(); + renderer->AddActor(actor); + + // Render offscreen + renderWindow->Render(); + windowToImage->Modified(); + + // Save PNG + std::ostringstream pngFile; + pngFile << "tmp/png/frame_" << std::setw(8) << std::setfill('0') << i << ".png"; + writer->SetFileName(pngFile.str().c_str()); + writer->Write(); + } + + return 0; +} -- cgit v1.2.3