From 97e00b9f979bd060dd64280e0ffd483fe4cb84f9 Mon Sep 17 00:00:00 2001 From: Miguel Xochicale Date: Sat, 11 Feb 2023 12:44:14 +0000 Subject: [PATCH] adds vtk pipeline, figs and script; (#29) --- vtk/README.md | 36 +++++++++++++++++++- vtk/cube-vtk.py | 76 +++++++++++++++++++++++++++++++++++++++++++ vtk/vtk_pipeline.png | Bin 0 -> 44442 bytes 3 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 vtk/cube-vtk.py create mode 100644 vtk/vtk_pipeline.png diff --git a/vtk/README.md b/vtk/README.md index 72ef54b..6332205 100644 --- a/vtk/README.md +++ b/vtk/README.md @@ -5,5 +5,39 @@ VTK was initially created in 1993 as companion software to the book The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics.[5] The book and software were written by three researchers (Will Schroeder, Ken Martin and Bill Lorensen) on their own time and with permission from General Electric (thus the ownership of the software resided with, and continues to reside with, the authors). After the core of VTK was written, users and developers around the world began to improve and apply the system to real-world problems.[3] https://en.wikipedia.org/wiki/VTK +## Visualisation pipeline (OpenGL pipeline) +VTK made use of the following pipeline, which seems to be inspired by OpenGL pipeline, to contruct geometric representations that are rendendered by the graphics pipeline: +1. SOURCE/READER: Load data, use source classes (vtkSphereSource, vtkCubeSource, vtkConeSource), or read data from files (Polydata, StructuredGrid). + * VTK Data objects: – vtkImageData, vtkRectilinearGrid, vtkStructuredGrid, vtkPolyData, vtkUnstructuredGrid + * Usually you create an iterator: `cube = vtk.vtkCubeSource()` and you can accesss vtkPolyData instance `polyData = cube.GetOutput()` +2. FILTER: Takes data, modify it and returns the modified data. + * Select data of particular size, strenght, intensity, + * Process 2D/3D images or polygon messhes + * Generate geometric objects from data +3. MAPPER: Maps data to graphics primitives that can be displayed by the renderer. + * Multiple mappers may share the same input but render in different way + * Usual mapper: vtkPolyDataMapper + * Set connection between source and mapper + * create mapper: `cubeMapper = vtk.vtkPolyDataMapper()` + * stablish connection: `cubeMapper.SetInputConnection(cube.GetOutputPort())` +4. ACTOR: represents and object in a rendenring scene + * Rendering properties is generated by the properties configuation (scale, orientation, textures) +5. RENDERER: controls the rendering process for actors and scenes + * Perform coordinate transformation between multiplate coordinates (world, view and camera). + * `vtkRenderWindow` class creates a window for renderers to draw into +6. INTERACTORS: + * The `vtkRenderWindowInteractor` class provides platform-independent window interaction via the mouse and keyboard + +* Launch and see further details in [cube-vtk.py](cube-vtk.py) +``` +conda activate bareVE +python cube-vtk.py +``` +![fig](vtk_pipeline.png) +See https://mt4sd.ulpgc.es/slicer-int/images/7/71/VTK.pdf for further reference. + + ## References -https://kitware.github.io/vtk-examples/site/Python/#tutorial +* https://kitware.github.io/vtk-examples/site/Python/#tutorial +* https://www.toptal.com/data-science/3d-data-visualization-with-open-source-tools-an-example-using-vtk + diff --git a/vtk/cube-vtk.py b/vtk/cube-vtk.py new file mode 100644 index 0000000..7f1389a --- /dev/null +++ b/vtk/cube-vtk.py @@ -0,0 +1,76 @@ +## References +### PAGE15 https://mt4sd.ulpgc.es/slicer-int/images/7/71/VTK.pdf +### step5.py https://kitware.github.io/vtk-examples/site/Python/#tutorial + +import vtkmodules.vtkRenderingOpenGL2 +from vtkmodules.vtkFiltersSources import vtkCubeSource +from vtkmodules.vtkInteractionStyle import vtkInteractorStyleTrackballCamera +from vtkmodules.vtkRenderingCore import ( + vtkActor, + vtkPolyDataMapper, + vtkRenderWindow, + vtkRenderWindowInteractor, + vtkRenderer +) + +def main(): + ##SOURCE/READER + # Create an interactor + cube = vtkCubeSource() + polyData = cube.GetOutput() + #print(polyData) + + ##MAPPER + cubeMapper = vtkPolyDataMapper() + cubeMapper.SetInputConnection(cube.GetOutputPort()) + + ##ACTOR + cubeActor = vtkActor() + cubeActor.SetMapper(cubeMapper) + cubeActor.GetProperty().SetColor(1.0, 0.0, 0.0) # make the cube red + + ##RENDERER + ### Create a renderer and add the cube actor to it + renderer = vtkRenderer() + renderer.AddActor(cubeActor) + renderer.SetBackground(0.0, 0.0, 0.0) # make the background black + + ##Render window + renderWindow = vtkRenderWindow() + renderWindow.AddRenderer(renderer) + renderWindow.SetSize(500, 500) + renderWindow.SetWindowName('Tutorial_Step1') + + # The vtkRenderWindowInteractor class watches for events (e.g., keypress, + # mouse) in the vtkRenderWindow. These events are translated into + # event invocations that VTK understands (see VTK/Common/vtkCommand.h + # for all events that VTK processes). Then observers of these VTK + # events can process them as appropriate. + iterator_renderer = vtkRenderWindowInteractor() + iterator_renderer.SetRenderWindow(renderWindow) + + # By default the vtkRenderWindowInteractor instantiates an instance + # of vtkInteractorStyle. vtkInteractorStyle translates a set of events + # it observes into operations on the camera, actors, and/or properties + # in the vtkRenderWindow associated with the vtkRenderWinodwInteractor. + # Here we specify a particular interactor style. + style = vtkInteractorStyleTrackballCamera() + iterator_renderer.SetInteractorStyle(style) + + + # The user can use the mouse + # and keyboard to perform the operations on the scene according to the + # current interaction style. When the user presses the 'e' key, by default + # an ExitEvent is invoked by the vtkRenderWindowInteractor which is caught + # and drops out of the event loop (triggered by the Start() method that + # follows. + # You can also use + # q to quit + # w to show lines + # 3 to swap colours + iterator_renderer.Initialize() + iterator_renderer.Start() + + +if __name__ == '__main__': + main() diff --git a/vtk/vtk_pipeline.png b/vtk/vtk_pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..e566b0f89bd10594eb6aa2c009eae50826e51f68 GIT binary patch literal 44442 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