add VTK save early

This commit is contained in:
AndreaRigoni
2025-09-02 12:42:46 +02:00
parent 820730bc84
commit b86e27a9c4
4 changed files with 42 additions and 1 deletions

View File

@@ -79,6 +79,11 @@ include(${EIGEN3_USE_FILE})
find_package(ROOT CONFIG REQUIRED) find_package(ROOT CONFIG REQUIRED)
include(${ROOT_USE_FILE}) include(${ROOT_USE_FILE})
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
option(CENTOS_SUPPORT "VTK definitions for CentOS" OFF) option(CENTOS_SUPPORT "VTK definitions for CentOS" OFF)
if(CENTOS_SUPPORT) if(CENTOS_SUPPORT)
find_package(VTK CONFIG REQUIRED) find_package(VTK CONFIG REQUIRED)

View File

@@ -32,7 +32,8 @@ set(SOURCES VoxRaytracer.cpp
Structured4DGrid.cpp) Structured4DGrid.cpp)
set(LIBRARIES ${Eigen_LIBRARY} set(LIBRARIES ${Eigen_LIBRARY}
${ROOT_LIBRARIES}) ${ROOT_LIBRARIES}
${VTK_LIBRARIES})
set(libname ${PACKAGE_LIBPREFIX}Math) set(libname ${PACKAGE_LIBPREFIX}Math)
set(ULIB_SHARED_LIBRARIES ${ULIB_SHARED_LIBRARIES} ${libname} PARENT_SCOPE) set(ULIB_SHARED_LIBRARIES ${ULIB_SHARED_LIBRARIES} ${libname} PARENT_SCOPE)

View File

@@ -30,9 +30,43 @@
#include "VoxImage.h" #include "VoxImage.h"
#include <vtkSmartPointer.h>
#include <vtkImageData.h>
#include <vtkXMLImageDataWriter.h>
namespace uLib { namespace uLib {
void Abstract::VoxImage::SaveToVtkVti (const char *file)
{
Abstract::VoxImage *voxels = this;
vtkSmartPointer<vtkImageData> image = vtkSmartPointer<vtkImageData>::New();
image->SetDimensions(voxels->GetDims()(0), voxels->GetDims()(1), voxels->GetDims()(2));
image->SetSpacing(voxels->GetSpacing()(0), voxels->GetSpacing()(1), voxels->GetSpacing()(2));
image->SetOrigin(voxels->GetOrigin()(0), voxels->GetOrigin()(1), voxels->GetOrigin()(2));
image->AllocateScalars(VTK_FLOAT, 1);
int nx = voxels->GetDims()(0);
int ny = voxels->GetDims()(1);
int nz = voxels->GetDims()(2);
size_t npoints = nx*ny*nz;
float *scalar = static_cast<float*>(image->GetScalarPointer());
for (size_t i = 0; i < npoints; i++) {
scalar[i] = static_cast<float>(voxels->GetValue(i));
}
vtkSmartPointer<vtkXMLImageDataWriter> writer = vtkSmartPointer<vtkXMLImageDataWriter>::New();
writer->SetFileName(file);
writer->SetInputData(image);
writer->Write();
}
void Abstract::VoxImage::ExportToVtk (const char *file, bool density_type) void Abstract::VoxImage::ExportToVtk (const char *file, bool density_type)
{ {
FILE * vtk_file = fopen(file,"wb"); FILE * vtk_file = fopen(file,"wb");

View File

@@ -58,6 +58,7 @@ public:
void ExportToVtk(const char *file, bool density_type = 0); void ExportToVtk(const char *file, bool density_type = 0);
void ExportToVtkXml(const char *file, bool density_type = 0); void ExportToVtkXml(const char *file, bool density_type = 0);
int ImportFromVtk(const char *file); int ImportFromVtk(const char *file);
void SaveToVtkVti (const char *file);
protected: protected: