diff --git a/src/Admin/WASM/ArgsNeeded.json b/src/Admin/WASM/ArgsNeeded.json index df6e9f157d0886bc584fb1238f1ca13a6eced806..c083d8f00388655f07ffa977f66134a223f98955 100644 --- a/src/Admin/WASM/ArgsNeeded.json +++ b/src/Admin/WASM/ArgsNeeded.json @@ -1187,7 +1187,7 @@ "args":["cow.vtp"], "files":["cow.vtp"] }, - "TransientHDFReader":{ + "TemporalHDFReader":{ "args":["warping_spheres.vtkhdf"], "files":["warping_spheres.vtkhdf"] }, diff --git a/src/Cxx.md b/src/Cxx.md index ef1c87a65486465437a1f7d8abc8c8ef69c26804..a94b4fea5cf043b216987bdcfdcb2ae7a9044900 100644 --- a/src/Cxx.md +++ b/src/Cxx.md @@ -69,7 +69,7 @@ If you are new to VTK then these [tutorials](#tutorial) will help to get you sta [ReadSTL](/Cxx/IO/ReadSTL) | Read stereo lithography STL (.stl) files [ReadTextFile](/Cxx/IO/ReadTextFile) | Read a plain text file into a polydata. [SimplePointsReader](/Cxx/IO/SimplePointsReader) | Read a simple "xyz" file of points. -[TransientHDFReader](/Cxx/IO/TransientHDFReader) | Read transient data written inside a vtkhdf file. +[TemporalHDFReader](/Cxx/IO/TemporalHDFReader) | Read temporal data written inside a vtkhdf file. ###### Importers diff --git a/src/Cxx/IO/CMakeLists.txt b/src/Cxx/IO/CMakeLists.txt index 3b5677d43242b23f82ce1a03608d3fa43c417127..250b92d1ca01c197758c9cdba571fc7fc45ff5fc 100644 --- a/src/Cxx/IO/CMakeLists.txt +++ b/src/Cxx/IO/CMakeLists.txt @@ -124,7 +124,7 @@ if (BUILD_TESTING) SimplePointsReader StructuredPointsReader StructuredGridReader - TransientHDFReader + TemporalHDFReader VRMLImporter VRMLImporterDemo WriteBMP @@ -282,8 +282,8 @@ if (BUILD_TESTING) add_test(${KIT}-StructuredGridReader ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${KIT}CxxTests TestStructuredGridReader ${DATA}/SampleStructGrid.vtk) - add_test(${KIT}-TransientHDFReader ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${KIT}CxxTests - TestTransientHDFReader ${DATA}/warping_spheres.vtkhdf) + add_test(${KIT}-TemporalHDFReader ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${KIT}CxxTests + TestTemporalHDFReader ${DATA}/warping_spheres.vtkhdf) add_test(${KIT}-VRMLImporter ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${KIT}CxxTests TestVRMLImporter ${DATA}/sextant.wrl -E 30) diff --git a/src/Cxx/IO/TemporalHDFReader.cxx b/src/Cxx/IO/TemporalHDFReader.cxx new file mode 100644 index 0000000000000000000000000000000000000000..e8739219a8f4b6970a24fb774e5ad0f918e4c0be --- /dev/null +++ b/src/Cxx/IO/TemporalHDFReader.cxx @@ -0,0 +1,113 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace { +vtkLookupTable* GetCTF(); + +void Animate(vtkObject* caller, unsigned long /*eid*/, void* clientdata, + void* /*calldata*/); + +} // namespace + +int main(int ac, char* av[]) +{ + if (ac != 2) + { + std::cout << "Usage: " << av[0] + << " filename.vtkhdf eg. warping_spheres.vtkhdf" << std::endl; + return EXIT_FAILURE; + } + + vtkNew colors; + + // Read the dataset. + vtkNew reader; + reader->SetFileName(av[1]); + reader->Update(); + std::cout << "Number of steps: " << reader->GetNumberOfSteps() << endl; + + // Render the dataset. + vtkNew mapper; + mapper->SetInputConnection(reader->GetOutputPort()); + mapper->SetLookupTable(GetCTF()); + mapper->SetScalarModeToUsePointFieldData(); + mapper->SelectColorArray("SpatioTemporalHarmonics"); + + vtkNew actor; + actor->SetMapper(mapper); + + vtkNew renderer; + renderer->SetBackground(colors->GetColor3d("AntiqueWhite").GetData()); + renderer->UseHiddenLineRemovalOn(); + renderer->AddActor(actor); + + vtkNew renWin; + renWin->AddRenderer(renderer); + renWin->SetWindowName("TemporalHDFReader"); + renWin->SetSize(1024, 512); + renWin->Render(); + + // Add the interactor. + vtkNew iren; + iren->SetRenderWindow(renWin); + + // Add the animation callback. + vtkNew command; + command->SetCallback(Animate); + command->SetClientData(reader); + + // You must initialize the vtkRenderWindowInteractor + // before adding the observer and setting the repeating timer. + iren->Initialize(); + iren->AddObserver(vtkCommand::TimerEvent, command); + iren->CreateRepeatingTimer(50); + + vtkNew istyle; + iren->SetInteractorStyle(istyle); + + iren->Start(); + + return EXIT_SUCCESS; +} + +namespace { +vtkLookupTable* GetCTF() +{ + vtkNew series; + series->SetColorScheme(vtkColorSeries::WARM); + return series->CreateLookupTable(vtkColorSeries::ORDINAL); +} + +void Animate(vtkObject* caller, unsigned long /*eid*/, void* clientdata, + void* /*calldata*/) +{ + vtkRenderWindowInteractor* interactor = + vtkRenderWindowInteractor::SafeDownCast(caller); + vtkHDFReader* reader = + vtkHDFReader::SafeDownCast(static_cast(clientdata)); + reader->SetStep((reader->GetStep() == reader->GetNumberOfSteps() - 1) + ? 0 + : reader->GetStep() + 1); + std::cout << "Current step: " << reader->GetStep() << std::endl; + reader->Update(); + interactor->Render(); +} +} // namespace diff --git a/src/Cxx/IO/TransientHDFReader.md b/src/Cxx/IO/TemporalHDFReader.md similarity index 100% rename from src/Cxx/IO/TransientHDFReader.md rename to src/Cxx/IO/TemporalHDFReader.md diff --git a/src/Cxx/IO/TransientHDFReader.cxx b/src/Cxx/IO/TransientHDFReader.cxx deleted file mode 100644 index 0bb465e27714e0af9430aed7c07deebf83cd5905..0000000000000000000000000000000000000000 --- a/src/Cxx/IO/TransientHDFReader.cxx +++ /dev/null @@ -1,166 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -namespace { -vtkNew GetCTF(); - -void Animate(vtkObject* caller, unsigned long /*eid*/, void* clientdata, - void* /*calldata*/); - -} // namespace - -int main(int ac, char* av[]) -{ - if (ac != 2) - { - std::cout << "Usage: " << av[0] - << " filename.vtkhdf eg. warping_spheres.vtkhdf" << std::endl; - return EXIT_FAILURE; - } - - vtkNew colors; - - // Read the dataset. - vtkNew reader; - reader->SetFileName(av[1]); - reader->Update(); - std::cout << "Number of steps: " << reader->GetNumberOfSteps() << endl; - auto polydata = vtkPolyData::SafeDownCast(reader->GetOutput()); - - // Render the dataset. - vtkNew mapper; - mapper->SetInputData(polydata); - mapper->SetLookupTable(GetCTF()); - mapper->SetScalarModeToUsePointFieldData(); - mapper->SelectColorArray("SpatioTemporalHarmonics"); - - vtkNew actor; - actor->SetMapper(mapper); - - vtkNew renderer; - renderer->SetBackground(colors->GetColor3d("Wheat").GetData()); - renderer->UseHiddenLineRemovalOn(); - renderer->AddActor(actor); - - vtkNew renWin; - renWin->AddRenderer(renderer); - renWin->SetWindowName("TransientHDFReader"); - renWin->SetSize(1024, 512); - renWin->Render(); - - // Add the interactor. - vtkNew iren; - iren->SetRenderWindow(renWin); - - // Add the animation callback. - vtkNew command; - command->SetCallback(Animate); - command->SetClientData(reader); - - // You must initialize the vtkRenderWindowInteractor - // before adding the observer and setting the repeating timer. - iren->Initialize(); - iren->AddObserver(vtkCommand::TimerEvent, command); - iren->CreateRepeatingTimer(50); - - vtkNew istyle; - iren->SetInteractorStyle(istyle); - - iren->Start(); - - return EXIT_SUCCESS; -} - -namespace { -vtkNew GetCTF() -{ - vtkNew ctf; - ctf->SetColorSpaceToLab(); - ctf->SetScaleToLinear(); - - ctf->AddRGBPoint(-30.3399130649763, 0.0862745098039216, 0.00392156862745098, - 0.298039215686275); - ctf->AddRGBPoint(-29.3502559661865, 0.113725, 0.0235294, 0.45098); - ctf->AddRGBPoint(-28.5283393859863, 0.105882, 0.0509804, 0.509804); - ctf->AddRGBPoint(-27.958028793335, 0.0392157, 0.0392157, 0.560784); - ctf->AddRGBPoint(-27.4044914245605, 0.0313725, 0.0980392, 0.6); - ctf->AddRGBPoint(-26.8677291870117, 0.0431373, 0.164706, 0.639216); - ctf->AddRGBPoint(-26.096134185791, 0.054902, 0.243137, 0.678431); - ctf->AddRGBPoint(-25.0729293823242, 0.054902, 0.317647, 0.709804); - ctf->AddRGBPoint(-23.8148933330084, 0.0509804, 0.396078, 0.741176); - ctf->AddRGBPoint(-22.9992658665124, 0.0392157, 0.466667, 0.768627); - ctf->AddRGBPoint(-22.1836384000164, 0.0313725, 0.537255, 0.788235); - ctf->AddRGBPoint(-21.3323650360107, 0.0313725, 0.615686, 0.811765); - ctf->AddRGBPoint(-20.4601268768311, 0.0235294, 0.709804, 0.831373); - ctf->AddRGBPoint(-19.5878868103027, 0.0509804, 0.8, 0.85098); - ctf->AddRGBPoint(-18.8666133880615, 0.0705882, 0.854902, 0.870588); - ctf->AddRGBPoint(-18.1956596374512, 0.262745, 0.901961, 0.862745); - ctf->AddRGBPoint(-17.6085758209229, 0.423529, 0.941176, 0.87451); - ctf->AddRGBPoint(-16.7027893066406, 0.572549, 0.964706, 0.835294); - ctf->AddRGBPoint(-16.0989303588867, 0.658824, 0.980392, 0.843137); - ctf->AddRGBPoint(-15.6628112792969, 0.764706, 0.980392, 0.866667); - ctf->AddRGBPoint(-15.1931447982788, 0.827451, 0.980392, 0.886275); - ctf->AddRGBPoint(-14.2705841064453, 0.913725, 0.988235, 0.937255); - ctf->AddRGBPoint(-13.9854288101196, 1, 1, 0.972549019607843); - ctf->AddRGBPoint(-13.7002735137939, 0.988235, 0.980392, 0.870588); - ctf->AddRGBPoint(-13.2809276580811, 0.992156862745098, 0.972549019607843, - 0.803921568627451); - ctf->AddRGBPoint(-12.9622249603271, 0.992157, 0.964706, 0.713725); - ctf->AddRGBPoint(-12.4254627227783, 0.988235, 0.956863, 0.643137); - ctf->AddRGBPoint(-11.5699977874756, 0.980392, 0.917647, 0.509804); - ctf->AddRGBPoint(-10.8487224578857, 0.968627, 0.87451, 0.407843); - ctf->AddRGBPoint(-10.1106739044189, 0.94902, 0.823529, 0.321569); - ctf->AddRGBPoint(-9.57391166687012, 0.929412, 0.776471, 0.278431); - ctf->AddRGBPoint(-8.78554153442383, 0.909804, 0.717647, 0.235294); - ctf->AddRGBPoint(-8.08104133605957, 0.890196, 0.658824, 0.196078); - ctf->AddRGBPoint(-7.50234400308847, 0.878431, 0.619608, 0.168627); - ctf->AddRGBPoint(-6.68671653659248, 0.870588, 0.54902, 0.156863); - ctf->AddRGBPoint(-5.87108907009648, 0.85098, 0.47451, 0.145098); - ctf->AddRGBPoint(-5.05546160360049, 0.831373, 0.411765, 0.133333); - ctf->AddRGBPoint(-4.23983413710449, 0.811765, 0.345098, 0.113725); - ctf->AddRGBPoint(-3.4242066706085, 0.788235, 0.266667, 0.0941176); - ctf->AddRGBPoint(-2.6085792041125, 0.741176, 0.184314, 0.0745098); - ctf->AddRGBPoint(-1.79295173761651, 0.690196, 0.12549, 0.0627451); - ctf->AddRGBPoint(-0.977324271120517, 0.619608, 0.0627451, 0.0431373); - ctf->AddRGBPoint(-0.214114964008331, 0.54902, 0.027451, 0.0705882); - ctf->AddRGBPoint(0.456838220357895, 0.470588, 0.0156863, 0.0901961); - ctf->AddRGBPoint(1.21166050434113, 0.4, 0.00392157, 0.101961); - ctf->AddRGBPoint(2.28518559486346, 0.188235294117647, 0, 0.0705882352941176); - - ctf->SetNumberOfValues(46); - ctf->DiscretizeOff(); - return ctf; -} - -void Animate(vtkObject* caller, unsigned long /*eid*/, void* clientdata, - void* /*calldata*/) -{ - vtkRenderWindowInteractor* interactor = - vtkRenderWindowInteractor::SafeDownCast(caller); - vtkHDFReader* reader = - vtkHDFReader::SafeDownCast(static_cast(clientdata)); - reader->SetStep((reader->GetStep() == reader->GetNumberOfSteps() - 1) - ? 0 - : reader->GetStep() + 1); - std::cout << "Current step: " << reader->GetStep() << std::endl; - reader->Update(); - interactor->Render(); -} -} // namespace diff --git a/src/Python.md b/src/Python.md index 77abb26af50bdc0b9526d15f11b9d3effd7cda25..a23dba67ee3bfefdd4ee994ac0eac87afabd5935 100644 --- a/src/Python.md +++ b/src/Python.md @@ -49,7 +49,7 @@ If you are new to VTK then these [tutorials](#tutorial) will help to get you sta [ReadSTL](/Python/IO/ReadSTL) | Read an STL file. [ReadUnstructuredGrid](/Python/IO/ReadUnstructuredGrid) | Using vtkUnstructuredGridReader to read a (legacy) *.vtk file [ReadVTP](/Python/IO/ReadVTP) | Read a VTK XML PolyData file. -[TransientHDFReader](/Python/IO/TransientHDFReader) | Read transient data written inside a vtkhdf file. +[TemporalHDFReader](/Python/IO/TemporalHDFReader) | Read transient data written inside a vtkhdf file. ###### Importers diff --git a/src/Python/IO/TransientHDFReader.md b/src/Python/IO/TemporalHDFReader.md similarity index 100% rename from src/Python/IO/TransientHDFReader.md rename to src/Python/IO/TemporalHDFReader.md diff --git a/src/Python/IO/TemporalHDFReader.py b/src/Python/IO/TemporalHDFReader.py new file mode 100755 index 0000000000000000000000000000000000000000..d547f5f78666ef97a7c20cf9467404c9ba42bdb9 --- /dev/null +++ b/src/Python/IO/TemporalHDFReader.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 + +# noinspection PyUnresolvedReferences +import vtkmodules.vtkRenderingContextOpenGL2 +from vtkmodules.vtkCommonColor import (vtkNamedColors, + vtkColorSeries) +from vtkmodules.vtkIOHDF import vtkHDFReader +from vtkmodules.vtkInteractionStyle import vtkInteractorStyleTrackballCamera +from vtkmodules.vtkRenderingCore import ( + vtkActor, + vtkCompositePolyDataMapper, + vtkRenderWindow, + vtkRenderWindowInteractor, + vtkRenderer +) + + +def get_program_parameters(): + import argparse + description = 'Read transient data writen inside a vtkhdf file.' + epilogue = '''''' + parser = argparse.ArgumentParser(description=description, epilog=epilogue, + formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument('file_name', help='warping_spheres.vtkhdf') + args = parser.parse_args() + return args.file_name + + +def main(): + fn = get_program_parameters() + + colors = vtkNamedColors() + + # Read the dataset. + reader = vtkHDFReader() + reader.SetFileName(fn) + reader.Update() + print('Number of steps: ', reader.GetNumberOfSteps()) + + # Render the dataset. + mapper = vtkCompositePolyDataMapper() + mapper.SetInputConnection(reader.GetOutputPort()) + mapper.SetLookupTable(get_ctf()) + mapper.SetScalarModeToUsePointFieldData() + mapper.SelectColorArray('SpatioTemporalHarmonics') + + actor = vtkActor() + actor.SetMapper(mapper) + + renderer = vtkRenderer() + renderer.SetBackground(colors.GetColor3d('AntiqueWhite')) + renderer.UseHiddenLineRemovalOn() + renderer.AddActor(actor) + + ren_win = vtkRenderWindow() + ren_win.AddRenderer(renderer) + ren_win.SetWindowName('TemporalHDFReader') + ren_win.SetSize(1024, 512) + ren_win.Render() + + # Add the interactor. + iren = vtkRenderWindowInteractor() + iren.SetRenderWindow(ren_win) + + # Add the animation callback. + observer = AnimationObserver(iren, reader) + + # You must initialize the vtkRenderWindowInteractor + # before adding the observer and setting the repeating timer. + iren.Initialize() + iren.AddObserver('TimerEvent', observer) + iren.CreateRepeatingTimer(50) + + i_style = vtkInteractorStyleTrackballCamera() + iren.SetInteractorStyle(i_style) + + iren.Start() + + +def get_ctf(): + + series = vtkColorSeries() + series.SetColorScheme(vtkColorSeries.WARM) + + return series.CreateLookupTable(vtkColorSeries.ORDINAL) + + +class AnimationObserver(object): + def __init__(self, interactor, reader): + self.interactor = interactor + self.reader = reader + + def __call__(self, caller, ev): + step = 0 if (self.reader.GetStep() == self.reader.GetNumberOfSteps() - 1) else self.reader.GetStep() + 1 + self.reader.SetStep(step) + print('Current step: ', self.reader.GetStep()) + self.reader.Update() + self.interactor.Render() + + +if __name__ == '__main__': + main() diff --git a/src/Python/IO/TransientHDFReader.py b/src/Python/IO/TransientHDFReader.py deleted file mode 100755 index 63ab0e032c95fb741d7581971a8202a08f44e502..0000000000000000000000000000000000000000 --- a/src/Python/IO/TransientHDFReader.py +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/env python3 - -# noinspection PyUnresolvedReferences -import vtkmodules.vtkRenderingContextOpenGL2 -from vtkmodules.vtkCommonColor import vtkNamedColors -from vtkmodules.vtkIOHDF import vtkHDFReader -from vtkmodules.vtkInteractionStyle import vtkInteractorStyleTrackballCamera -from vtkmodules.vtkRenderingCore import ( - vtkActor, - vtkDiscretizableColorTransferFunction, - vtkPolyDataMapper, - vtkRenderWindow, - vtkRenderWindowInteractor, - vtkRenderer -) - - -def get_program_parameters(): - import argparse - description = 'Read transient data writen inside a vtkhdf file.' - epilogue = '''''' - parser = argparse.ArgumentParser(description=description, epilog=epilogue, - formatter_class=argparse.RawDescriptionHelpFormatter) - parser.add_argument('file_name', help='warping_spheres.vtkhdf') - args = parser.parse_args() - return args.file_name - - -def main(): - fn = get_program_parameters() - - colors = vtkNamedColors() - - # Read the dataset. - reader = vtkHDFReader() - reader.SetFileName(fn) - reader.Update() - print('Number of steps: ', reader.GetNumberOfSteps()) - polydata = reader.GetOutput() - - # Render the dataset. - mapper = vtkPolyDataMapper() - mapper.SetInputData(polydata) - mapper.SetLookupTable(get_ctf()) - mapper.SetScalarModeToUsePointFieldData() - mapper.SelectColorArray('SpatioTemporalHarmonics') - - actor = vtkActor() - actor.SetMapper(mapper) - - renderer = vtkRenderer() - renderer.SetBackground(colors.GetColor3d('Wheat')) - renderer.UseHiddenLineRemovalOn() - renderer.AddActor(actor) - - ren_win = vtkRenderWindow() - ren_win.AddRenderer(renderer) - ren_win.SetWindowName('TransientHDFReader') - ren_win.SetSize(1024, 512) - ren_win.Render() - - # Add the interactor. - iren = vtkRenderWindowInteractor() - iren.SetRenderWindow(ren_win) - - # Add the animation callback. - observer = AnimationObserver(iren, reader) - - # You must initialize the vtkRenderWindowInteractor - # before adding the observer and setting the repeating timer. - iren.Initialize() - iren.AddObserver('TimerEvent', observer) - iren.CreateRepeatingTimer(50) - - i_style = vtkInteractorStyleTrackballCamera() - iren.SetInteractorStyle(i_style) - - iren.Start() - - -def get_ctf(): - ctf = vtkDiscretizableColorTransferFunction() - ctf.SetColorSpaceToLab() - ctf.SetScaleToLinear() - - ctf.AddRGBPoint(-30.3399130649763, 0.0862745098039216, 0.00392156862745098, 0.298039215686275) - ctf.AddRGBPoint(-29.3502559661865, 0.113725, 0.0235294, 0.45098) - ctf.AddRGBPoint(-28.5283393859863, 0.105882, 0.0509804, 0.509804) - ctf.AddRGBPoint(-27.958028793335, 0.0392157, 0.0392157, 0.560784) - ctf.AddRGBPoint(-27.4044914245605, 0.0313725, 0.0980392, 0.6) - ctf.AddRGBPoint(-26.8677291870117, 0.0431373, 0.164706, 0.639216) - ctf.AddRGBPoint(-26.096134185791, 0.054902, 0.243137, 0.678431) - ctf.AddRGBPoint(-25.0729293823242, 0.054902, 0.317647, 0.709804) - ctf.AddRGBPoint(-23.8148933330084, 0.0509804, 0.396078, 0.741176) - ctf.AddRGBPoint(-22.9992658665124, 0.0392157, 0.466667, 0.768627) - ctf.AddRGBPoint(-22.1836384000164, 0.0313725, 0.537255, 0.788235) - ctf.AddRGBPoint(-21.3323650360107, 0.0313725, 0.615686, 0.811765) - ctf.AddRGBPoint(-20.4601268768311, 0.0235294, 0.709804, 0.831373) - ctf.AddRGBPoint(-19.5878868103027, 0.0509804, 0.8, 0.85098) - ctf.AddRGBPoint(-18.8666133880615, 0.0705882, 0.854902, 0.870588) - ctf.AddRGBPoint(-18.1956596374512, 0.262745, 0.901961, 0.862745) - ctf.AddRGBPoint(-17.6085758209229, 0.423529, 0.941176, 0.87451) - ctf.AddRGBPoint(-16.7027893066406, 0.572549, 0.964706, 0.835294) - ctf.AddRGBPoint(-16.0989303588867, 0.658824, 0.980392, 0.843137) - ctf.AddRGBPoint(-15.6628112792969, 0.764706, 0.980392, 0.866667) - ctf.AddRGBPoint(-15.1931447982788, 0.827451, 0.980392, 0.886275) - ctf.AddRGBPoint(-14.2705841064453, 0.913725, 0.988235, 0.937255) - ctf.AddRGBPoint(-13.9854288101196, 1, 1, 0.972549019607843) - ctf.AddRGBPoint(-13.7002735137939, 0.988235, 0.980392, 0.870588) - ctf.AddRGBPoint(-13.2809276580811, 0.992156862745098, 0.972549019607843, 0.803921568627451) - ctf.AddRGBPoint(-12.9622249603271, 0.992157, 0.964706, 0.713725) - ctf.AddRGBPoint(-12.4254627227783, 0.988235, 0.956863, 0.643137) - ctf.AddRGBPoint(-11.5699977874756, 0.980392, 0.917647, 0.509804) - ctf.AddRGBPoint(-10.8487224578857, 0.968627, 0.87451, 0.407843) - ctf.AddRGBPoint(-10.1106739044189, 0.94902, 0.823529, 0.321569) - ctf.AddRGBPoint(-9.57391166687012, 0.929412, 0.776471, 0.278431) - ctf.AddRGBPoint(-8.78554153442383, 0.909804, 0.717647, 0.235294) - ctf.AddRGBPoint(-8.08104133605957, 0.890196, 0.658824, 0.196078) - ctf.AddRGBPoint(-7.50234400308847, 0.878431, 0.619608, 0.168627) - ctf.AddRGBPoint(-6.68671653659248, 0.870588, 0.54902, 0.156863) - ctf.AddRGBPoint(-5.87108907009648, 0.85098, 0.47451, 0.145098) - ctf.AddRGBPoint(-5.05546160360049, 0.831373, 0.411765, 0.133333) - ctf.AddRGBPoint(-4.23983413710449, 0.811765, 0.345098, 0.113725) - ctf.AddRGBPoint(-3.4242066706085, 0.788235, 0.266667, 0.0941176) - ctf.AddRGBPoint(-2.6085792041125, 0.741176, 0.184314, 0.0745098) - ctf.AddRGBPoint(-1.79295173761651, 0.690196, 0.12549, 0.0627451) - ctf.AddRGBPoint(-0.977324271120517, 0.619608, 0.0627451, 0.0431373) - ctf.AddRGBPoint(-0.214114964008331, 0.54902, 0.027451, 0.0705882) - ctf.AddRGBPoint(0.456838220357895, 0.470588, 0.0156863, 0.0901961) - ctf.AddRGBPoint(1.21166050434113, 0.4, 0.00392157, 0.101961) - ctf.AddRGBPoint(2.28518559486346, 0.188235294117647, 0, 0.0705882352941176) - - ctf.SetNumberOfValues(46) - ctf.DiscretizeOff() - - return ctf - - -class AnimationObserver(object): - def __init__(self, interactor, reader): - self.interactor = interactor - self.reader = reader - - def __call__(self, caller, ev): - step = 0 if (self.reader.GetStep() == self.reader.GetNumberOfSteps() - 1) else self.reader.GetStep() + 1 - self.reader.SetStep(step) - print('Current step: ', self.reader.GetStep()) - self.reader.Update() - self.interactor.Render() - - -if __name__ == '__main__': - main() diff --git a/src/PythonicAPI.md b/src/PythonicAPI.md index 05bc609374ba41e2fcd8b3601c5190e130e3ac08..febc156e8071b2a39294666057042f7eefd09167 100644 --- a/src/PythonicAPI.md +++ b/src/PythonicAPI.md @@ -75,7 +75,7 @@ This Python script, [SelectExamples](../PythonicAPI/Utilities/SelectExamples), w [ReadCML](/PythonicAPI/IO/ReadCML) | Read Chemistry Markup Language files. [ReadExodusData](/PythonicAPI/IO/ReadExodusData) | A simple script for reading and viewing ExodusII data interactively. [ReadSLC](/PythonicAPI/IO/ReadSLC) | Read an SLC file. -[TransientHDFReader](/PythonicAPI/IO/TransientHDFReader) | Read transient data written inside a vtkhdf file. +[TemporalHDFReader](/PythonicAPI/IO/TemporalHDFReader) | Read temporal data written inside a vtkhdf file. ###### Importers diff --git a/src/PythonicAPI/IO/TransientHDFReader.md b/src/PythonicAPI/IO/TemporalHDFReader.md similarity index 100% rename from src/PythonicAPI/IO/TransientHDFReader.md rename to src/PythonicAPI/IO/TemporalHDFReader.md diff --git a/src/PythonicAPI/IO/TemporalHDFReader.py b/src/PythonicAPI/IO/TemporalHDFReader.py new file mode 100755 index 0000000000000000000000000000000000000000..6b8912b78f32d501a1577bd0ba0303fae571ecaa --- /dev/null +++ b/src/PythonicAPI/IO/TemporalHDFReader.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python3 + +from dataclasses import dataclass + +# noinspection PyUnresolvedReferences +import vtkmodules.vtkRenderingContextOpenGL2 +from vtkmodules.vtkCommonColor import (vtkNamedColors, + vtkColorSeries) +from vtkmodules.vtkIOHDF import vtkHDFReader +from vtkmodules.vtkInteractionStyle import vtkInteractorStyleTrackballCamera +from vtkmodules.vtkRenderingCore import ( + vtkActor, + vtkCompositePolyDataMapper, + vtkRenderWindow, + vtkRenderWindowInteractor, + vtkRenderer +) + + +def get_program_parameters(): + import argparse + description = 'Read transient data writen inside a vtkhdf file.' + epilogue = '''''' + parser = argparse.ArgumentParser(description=description, epilog=epilogue, + formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument('file_name', help='warping_spheres.vtkhdf') + args = parser.parse_args() + return args.file_name + + +def main(): + fn = get_program_parameters() + + colors = vtkNamedColors() + + # Read the dataset. + reader = vtkHDFReader(file_name=fn) + reader.update() + print('Number of steps: ', reader.GetNumberOfSteps()) + + # Render the dataset. + mapper = vtkCompositePolyDataMapper(lookup_table=get_ctf(), + scalar_mode=Mapper.ScalarMode.VTK_SCALAR_MODE_USE_POINT_FIELD_DATA) + mapper.SelectColorArray('SpatioTemporalHarmonics') + reader >> mapper + + actor = vtkActor(mapper=mapper) + + renderer = vtkRenderer(use_hidden_line_removal=True, background=colors.GetColor3d('AntiqueWhite')) + renderer.AddActor(actor) + + ren_win = vtkRenderWindow(size=(1024, 512), window_name='TemporalHDFReader') + ren_win.AddRenderer(renderer) + ren_win.Render() + + # Add the interactor. + iren = vtkRenderWindowInteractor() + iren.render_window = ren_win + + # Add the animation callback. + observer = AnimationObserver(iren, reader) + + # You must initialize the vtkRenderWindowInteractor + # before adding the observer and setting the repeating timer. + iren.Initialize() + iren.AddObserver('TimerEvent', observer) + iren.CreateRepeatingTimer(50) + + i_style = vtkInteractorStyleTrackballCamera() + iren.interactor_style = i_style + + iren.Start() + + +def get_ctf(): + + series = vtkColorSeries() + series.SetColorScheme(vtkColorSeries.WARM) + + return series.CreateLookupTable(vtkColorSeries.ORDINAL) + + +class AnimationObserver(object): + def __init__(self, interactor, reader): + self.interactor = interactor + self.reader = reader + + def __call__(self, caller, ev): + step = 0 if (self.reader.step == self.reader.GetNumberOfSteps() - 1) else self.reader.step + 1 + self.reader.step = step + print(f'Current step: {self.reader.step:3d}') + self.reader.update() + self.interactor.Render() + + +@dataclass(frozen=True) +class ColorTransferFunction: + @dataclass(frozen=True) + class ColorSpace: + VTK_CTF_RGB: int = 0 + VTK_CTF_HSV: int = 1 + VTK_CTF_LAB: int = 2 + VTK_CTF_DIVERGING: int = 3 + VTK_CTF_LAB_CIEDE2000: int = 4 + VTK_CTF_STEP: int = 5 + + @dataclass(frozen=True) + class Scale: + VTK_CTF_LINEAR: int = 0 + VTK_CTF_LOG10: int = 1 + + +@dataclass(frozen=True) +class Mapper: + @dataclass(frozen=True) + class ColorMode: + VTK_COLOR_MODE_DEFAULT: int = 0 + VTK_COLOR_MODE_MAP_SCALARS: int = 1 + VTK_COLOR_MODE_DIRECT_SCALARS: int = 2 + + @dataclass(frozen=True) + class ResolveCoincidentTopology: + VTK_RESOLVE_OFF: int = 0 + VTK_RESOLVE_POLYGON_OFFSET: int = 1 + VTK_RESOLVE_SHIFT_ZBUFFER: int = 2 + + @dataclass(frozen=True) + class ScalarMode: + VTK_SCALAR_MODE_DEFAULT: int = 0 + VTK_SCALAR_MODE_USE_POINT_DATA: int = 1 + VTK_SCALAR_MODE_USE_CELL_DATA: int = 2 + VTK_SCALAR_MODE_USE_POINT_FIELD_DATA: int = 3 + VTK_SCALAR_MODE_USE_CELL_FIELD_DATA: int = 4 + VTK_SCALAR_MODE_USE_FIELD_DATA: int = 5 + + +if __name__ == '__main__': + main() diff --git a/src/PythonicAPI/IO/TransientHDFReader.py b/src/PythonicAPI/IO/TransientHDFReader.py deleted file mode 100755 index 2f1acd7037508a037bd67149d42cc7379005a97e..0000000000000000000000000000000000000000 --- a/src/PythonicAPI/IO/TransientHDFReader.py +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/env python3 - -from dataclasses import dataclass - -# noinspection PyUnresolvedReferences -import vtkmodules.vtkRenderingContextOpenGL2 -from vtkmodules.vtkCommonColor import vtkNamedColors -from vtkmodules.vtkIOHDF import vtkHDFReader -from vtkmodules.vtkInteractionStyle import vtkInteractorStyleTrackballCamera -from vtkmodules.vtkRenderingCore import ( - vtkActor, - vtkDiscretizableColorTransferFunction, - vtkPolyDataMapper, - vtkRenderWindow, - vtkRenderWindowInteractor, - vtkRenderer -) - - -def get_program_parameters(): - import argparse - description = 'Read transient data writen inside a vtkhdf file.' - epilogue = '''''' - parser = argparse.ArgumentParser(description=description, epilog=epilogue, - formatter_class=argparse.RawDescriptionHelpFormatter) - parser.add_argument('file_name', help='warping_spheres.vtkhdf') - args = parser.parse_args() - return args.file_name - - -def main(): - fn = get_program_parameters() - - colors = vtkNamedColors() - - # Read the dataset. - reader = vtkHDFReader(file_name=fn) - reader.update() - print('Number of steps: ', reader.GetNumberOfSteps()) - - # Render the dataset. - mapper = vtkPolyDataMapper(lookup_table=get_ctf(), - scalar_mode=Mapper.ScalarMode.VTK_SCALAR_MODE_USE_POINT_FIELD_DATA) - mapper.SelectColorArray('SpatioTemporalHarmonics') - reader >> mapper - - actor = vtkActor(mapper=mapper) - - renderer = vtkRenderer(use_hidden_line_removal=True, background=colors.GetColor3d('Wheat')) - renderer.AddActor(actor) - - ren_win = vtkRenderWindow(size=(1024, 512), window_name='TransientHDFReader') - ren_win.AddRenderer(renderer) - ren_win.Render() - - # Add the interactor. - iren = vtkRenderWindowInteractor() - iren.render_window = ren_win - - # Add the animation callback. - observer = AnimationObserver(iren, reader) - - # You must initialize the vtkRenderWindowInteractor - # before adding the observer and setting the repeating timer. - iren.Initialize() - iren.AddObserver('TimerEvent', observer) - iren.CreateRepeatingTimer(50) - - i_style = vtkInteractorStyleTrackballCamera() - iren.interactor_style = i_style - - iren.Start() - - -def get_ctf(): - ctf = vtkDiscretizableColorTransferFunction(color_space=ColorTransferFunction.ColorSpace.VTK_CTF_LAB, - scale=ColorTransferFunction.Scale.VTK_CTF_LINEAR, - number_of_values=46, discretize=False, - ) - - ctf.AddRGBPoint(-30.3399130649763, 0.0862745098039216, 0.00392156862745098, 0.298039215686275) - ctf.AddRGBPoint(-29.3502559661865, 0.113725, 0.0235294, 0.45098) - ctf.AddRGBPoint(-28.5283393859863, 0.105882, 0.0509804, 0.509804) - ctf.AddRGBPoint(-27.958028793335, 0.0392157, 0.0392157, 0.560784) - ctf.AddRGBPoint(-27.4044914245605, 0.0313725, 0.0980392, 0.6) - ctf.AddRGBPoint(-26.8677291870117, 0.0431373, 0.164706, 0.639216) - ctf.AddRGBPoint(-26.096134185791, 0.054902, 0.243137, 0.678431) - ctf.AddRGBPoint(-25.0729293823242, 0.054902, 0.317647, 0.709804) - ctf.AddRGBPoint(-23.8148933330084, 0.0509804, 0.396078, 0.741176) - ctf.AddRGBPoint(-22.9992658665124, 0.0392157, 0.466667, 0.768627) - ctf.AddRGBPoint(-22.1836384000164, 0.0313725, 0.537255, 0.788235) - ctf.AddRGBPoint(-21.3323650360107, 0.0313725, 0.615686, 0.811765) - ctf.AddRGBPoint(-20.4601268768311, 0.0235294, 0.709804, 0.831373) - ctf.AddRGBPoint(-19.5878868103027, 0.0509804, 0.8, 0.85098) - ctf.AddRGBPoint(-18.8666133880615, 0.0705882, 0.854902, 0.870588) - ctf.AddRGBPoint(-18.1956596374512, 0.262745, 0.901961, 0.862745) - ctf.AddRGBPoint(-17.6085758209229, 0.423529, 0.941176, 0.87451) - ctf.AddRGBPoint(-16.7027893066406, 0.572549, 0.964706, 0.835294) - ctf.AddRGBPoint(-16.0989303588867, 0.658824, 0.980392, 0.843137) - ctf.AddRGBPoint(-15.6628112792969, 0.764706, 0.980392, 0.866667) - ctf.AddRGBPoint(-15.1931447982788, 0.827451, 0.980392, 0.886275) - ctf.AddRGBPoint(-14.2705841064453, 0.913725, 0.988235, 0.937255) - ctf.AddRGBPoint(-13.9854288101196, 1, 1, 0.972549019607843) - ctf.AddRGBPoint(-13.7002735137939, 0.988235, 0.980392, 0.870588) - ctf.AddRGBPoint(-13.2809276580811, 0.992156862745098, 0.972549019607843, 0.803921568627451) - ctf.AddRGBPoint(-12.9622249603271, 0.992157, 0.964706, 0.713725) - ctf.AddRGBPoint(-12.4254627227783, 0.988235, 0.956863, 0.643137) - ctf.AddRGBPoint(-11.5699977874756, 0.980392, 0.917647, 0.509804) - ctf.AddRGBPoint(-10.8487224578857, 0.968627, 0.87451, 0.407843) - ctf.AddRGBPoint(-10.1106739044189, 0.94902, 0.823529, 0.321569) - ctf.AddRGBPoint(-9.57391166687012, 0.929412, 0.776471, 0.278431) - ctf.AddRGBPoint(-8.78554153442383, 0.909804, 0.717647, 0.235294) - ctf.AddRGBPoint(-8.08104133605957, 0.890196, 0.658824, 0.196078) - ctf.AddRGBPoint(-7.50234400308847, 0.878431, 0.619608, 0.168627) - ctf.AddRGBPoint(-6.68671653659248, 0.870588, 0.54902, 0.156863) - ctf.AddRGBPoint(-5.87108907009648, 0.85098, 0.47451, 0.145098) - ctf.AddRGBPoint(-5.05546160360049, 0.831373, 0.411765, 0.133333) - ctf.AddRGBPoint(-4.23983413710449, 0.811765, 0.345098, 0.113725) - ctf.AddRGBPoint(-3.4242066706085, 0.788235, 0.266667, 0.0941176) - ctf.AddRGBPoint(-2.6085792041125, 0.741176, 0.184314, 0.0745098) - ctf.AddRGBPoint(-1.79295173761651, 0.690196, 0.12549, 0.0627451) - ctf.AddRGBPoint(-0.977324271120517, 0.619608, 0.0627451, 0.0431373) - ctf.AddRGBPoint(-0.214114964008331, 0.54902, 0.027451, 0.0705882) - ctf.AddRGBPoint(0.456838220357895, 0.470588, 0.0156863, 0.0901961) - ctf.AddRGBPoint(1.21166050434113, 0.4, 0.00392157, 0.101961) - ctf.AddRGBPoint(2.28518559486346, 0.188235294117647, 0, 0.0705882352941176) - - return ctf - - -class AnimationObserver(object): - def __init__(self, interactor, reader): - self.interactor = interactor - self.reader = reader - - def __call__(self, caller, ev): - step = 0 if (self.reader.step == self.reader.GetNumberOfSteps() - 1) else self.reader.step + 1 - self.reader.step = step - print(f'Current step: {self.reader.step:3d}') - self.reader.update() - self.interactor.Render() - - -@dataclass(frozen=True) -class ColorTransferFunction: - @dataclass(frozen=True) - class ColorSpace: - VTK_CTF_RGB: int = 0 - VTK_CTF_HSV: int = 1 - VTK_CTF_LAB: int = 2 - VTK_CTF_DIVERGING: int = 3 - VTK_CTF_LAB_CIEDE2000: int = 4 - VTK_CTF_STEP: int = 5 - - @dataclass(frozen=True) - class Scale: - VTK_CTF_LINEAR: int = 0 - VTK_CTF_LOG10: int = 1 - - -@dataclass(frozen=True) -class Mapper: - @dataclass(frozen=True) - class ColorMode: - VTK_COLOR_MODE_DEFAULT: int = 0 - VTK_COLOR_MODE_MAP_SCALARS: int = 1 - VTK_COLOR_MODE_DIRECT_SCALARS: int = 2 - - @dataclass(frozen=True) - class ResolveCoincidentTopology: - VTK_RESOLVE_OFF: int = 0 - VTK_RESOLVE_POLYGON_OFFSET: int = 1 - VTK_RESOLVE_SHIFT_ZBUFFER: int = 2 - - @dataclass(frozen=True) - class ScalarMode: - VTK_SCALAR_MODE_DEFAULT: int = 0 - VTK_SCALAR_MODE_USE_POINT_DATA: int = 1 - VTK_SCALAR_MODE_USE_CELL_DATA: int = 2 - VTK_SCALAR_MODE_USE_POINT_FIELD_DATA: int = 3 - VTK_SCALAR_MODE_USE_CELL_FIELD_DATA: int = 4 - VTK_SCALAR_MODE_USE_FIELD_DATA: int = 5 - - -if __name__ == '__main__': - main() diff --git a/src/Testing/Baseline/Cxx/IO/TestTemporalHDFReader.png b/src/Testing/Baseline/Cxx/IO/TestTemporalHDFReader.png new file mode 100644 index 0000000000000000000000000000000000000000..72c7c067ae407698d2cf8bf51289cdbc2ffd23d1 --- /dev/null +++ b/src/Testing/Baseline/Cxx/IO/TestTemporalHDFReader.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04b5f5bc5c8a13706b851d5221a99e0a2d8e59ee63a6ef03993942546339ccc6 +size 59981 diff --git a/src/Testing/Baseline/Cxx/IO/TestTransientHDFReader.png b/src/Testing/Baseline/Cxx/IO/TestTransientHDFReader.png deleted file mode 100644 index 6054c2757dcfe29bfe742561297b99154a381941..0000000000000000000000000000000000000000 --- a/src/Testing/Baseline/Cxx/IO/TestTransientHDFReader.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d1448e1f0a15e01d7371731bcf1b0d72716af59ac62ff4a90626c9f4892956cb -size 53670