Skip to content

Commit

Permalink
updates bareVE conda env; adds vtk/tutorials/steps*.py (#29)
Browse files Browse the repository at this point in the history
  • Loading branch information
mxochicale committed Feb 10, 2023
1 parent 6b94e50 commit fa8432f
Show file tree
Hide file tree
Showing 9 changed files with 755 additions and 13 deletions.
26 changes: 13 additions & 13 deletions conda/create-virtual-environments/bareVE.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,24 @@
## ACTIVATE CONDA ENV: conda activate *VE
## REMOVE CONDA ENV: conda remove -n *VE --all

## conda activate bareVE

name: bareVE
channels:
- defaults
#- defaults
- conda-forge #pyside6
#- anaconda
#- fastai #opencv-python-headless
dependencies:
- python=3.7
#- pyside6
#- python=3.8
#- matplotlib
#- numpy
#- pandas
#- notebook
- python=3.10
- pip>=22.2.2
- pip:
- pyside6
### VERSIONS of pyside6: https://pypi.org/project/PySide6/#history
- pyside6>=6.4.2
### VERSIONS of VTK https://gitlab.kitware.com/vtk/vtk/-/tags
- vtk>=9.2.5
### VERSIONS of opencv-contrib-python-headless https://pypi.org/project/opencv-contrib-python-headless/#history
- opencv-contrib-python-headless
#- qimage2ndarray


#- notebook
#- pandas
#- numpy
#- matplotlib
9 changes: 9 additions & 0 deletions vtk/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# The Visualization Toolkit (VTK)
> Free software system for 3D computer graphics, image processing and visualization [:linkm:](https://en.wikipedia.org/wiki/VTK)
## History
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

## References
https://kitware.github.io/vtk-examples/site/Python/#tutorial
6 changes: 6 additions & 0 deletions vtk/tutorial/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Tutorial
> https://kitware.github.io/vtk-examples/site/Python/#tutorial
```
conda activate bareVE
```
104 changes: 104 additions & 0 deletions vtk/tutorial/step1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
#!/usr/bin/env python

"""
=========================================================================
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
"""

# First access the VTK module (and any other needed modules) by importing them.
# noinspection PyUnresolvedReferences
import vtkmodules.vtkInteractionStyle
# noinspection PyUnresolvedReferences
import vtkmodules.vtkRenderingOpenGL2
from vtkmodules.vtkCommonColor import vtkNamedColors
from vtkmodules.vtkFiltersSources import vtkConeSource
from vtkmodules.vtkRenderingCore import (
vtkActor,
vtkPolyDataMapper,
vtkRenderWindow,
vtkRenderer
)


def main(argv):
#
# Next we create an instance of vtkNamedColors and we will use
# this to select colors for the object and background.
#
colors = vtkNamedColors()

#
# Now we create an instance of vtkConeSource and set some of its
# properties. The instance of vtkConeSource "cone" is part of a
# visualization pipeline (it is a source process object) it produces data
# (output type is vtkPolyData) which other filters may process.
#
cone = vtkConeSource()
cone.SetHeight(3.0)
cone.SetRadius(1.0)
cone.SetResolution(10)

#
# In this example we terminate the pipeline with a mapper process object.
# (Intermediate filters such as vtkShrinkPolyData could be inserted in
# between the source and the mapper.) We create an instance of
# vtkPolyDataMapper to map the polygonal data into graphics primitives. We
# connect the output of the cone source to the input of this mapper.
#
coneMapper = vtkPolyDataMapper()
coneMapper.SetInputConnection(cone.GetOutputPort())

#
# Create an actor to represent the cone. The actor orchestrates rendering
# of the mapper's graphics primitives. An actor also refers to properties
# via a vtkProperty instance, and includes an internal transformation
# matrix. We set this actor's mapper to be coneMapper which we created
# above.
#
coneActor = vtkActor()
coneActor.SetMapper(coneMapper)
coneActor.GetProperty().SetColor(colors.GetColor3d('MistyRose'))

#
# Create the Renderer and assign actors to it. A renderer is like a
# viewport. It is part or all of a window on the screen and it is
# responsible for drawing the actors it has. We also set the background
# color here.
#
ren1 = vtkRenderer()
ren1.AddActor(coneActor)
ren1.SetBackground(colors.GetColor3d('MidnightBlue'))

# Finally we create the render window which will show up on the screen.
# We put our renderer into the render window using AddRenderer. We also
# set the size to be 300 pixels by 300.
#
renWin = vtkRenderWindow()
renWin.AddRenderer(ren1)
renWin.SetSize(300, 300)
renWin.SetWindowName('Tutorial_Step1')

#
# Now we loop over 360 degrees and render the cone each time.
#
for i in range(0, 360):
# Render the image
renWin.Render()
# Rotate the active camera by one degree.
ren1.GetActiveCamera().Azimuth(1)


if __name__ == '__main__':
import sys

main(sys.argv)
90 changes: 90 additions & 0 deletions vtk/tutorial/step2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#!/usr/bin/env python

"""
=========================================================================
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
"""

# First access the VTK module (and any other needed modules) by importing them.
# noinspection PyUnresolvedReferences
import vtkmodules.vtkInteractionStyle
# noinspection PyUnresolvedReferences
import vtkmodules.vtkRenderingOpenGL2
from vtkmodules.vtkCommonColor import vtkNamedColors
from vtkmodules.vtkFiltersSources import vtkConeSource
from vtkmodules.vtkRenderingCore import (
vtkActor,
vtkPolyDataMapper,
vtkRenderWindow,
vtkRenderer
)


def main(argv):
colors = vtkNamedColors()

#
# The pipeline creation is documented in Tutorial_Step1.
#
cone = vtkConeSource()
cone.SetHeight(3.0)
cone.SetRadius(1.0)
cone.SetResolution(10)

coneMapper = vtkPolyDataMapper()
coneMapper.SetInputConnection(cone.GetOutputPort())
coneActor = vtkActor()
coneActor.SetMapper(coneMapper)
coneActor.GetProperty().SetColor(colors.GetColor3d('MistyRose'))

ren1 = vtkRenderer()
ren1.AddActor(coneActor)
ren1.SetBackground(colors.GetColor3d('MidnightBlue'))
ren1.ResetCamera()

renWin = vtkRenderWindow()
renWin.AddRenderer(ren1)
renWin.SetSize(300, 300)
renWin.SetWindowName('Tutorial_Step2')

# Here is where we setup the observer.
mo1 = vtkMyCallback(ren1)
ren1.AddObserver('StartEvent', mo1)

#
# Now we loop over 360 degrees and render the cone each time.
#
for i in range(0, 360):
# Render the image.
renWin.Render()
# Rotate the active camera by one degree.
ren1.GetActiveCamera().Azimuth(1)


class vtkMyCallback(object):
"""
Callback for the interaction.
"""

def __init__(self, renderer):
self.renderer = renderer

def __call__(self, caller, ev):
position = self.renderer.GetActiveCamera().GetPosition()
print('({:5.2f}, {:5.2f}, {:5.2f})'.format(*position))


if __name__ == '__main__':
import sys

main(sys.argv)
117 changes: 117 additions & 0 deletions vtk/tutorial/step3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
#!/usr/bin/env python

"""
=========================================================================
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
"""

# First access the VTK module (and any other needed modules) by importing them.
# noinspection PyUnresolvedReferences
import vtkmodules.vtkInteractionStyle
# noinspection PyUnresolvedReferences
import vtkmodules.vtkRenderingOpenGL2
from vtkmodules.vtkCommonColor import vtkNamedColors
from vtkmodules.vtkFiltersSources import vtkConeSource
from vtkmodules.vtkRenderingCore import (
vtkActor,
vtkPolyDataMapper,
vtkRenderWindow,
vtkRenderer
)


def main(argv):
colors = vtkNamedColors()

#
# Next we create an instance of vtkConeSource and set some of its
# properties. The instance of vtkConeSource 'cone' is part of a
# visualization pipeline (it is a source process object) it produces data
# (output type is vtkPolyData) which other filters may process.
#
cone = vtkConeSource()
cone.SetHeight(3.0)
cone.SetRadius(1.0)
cone.SetResolution(10)

#
# In this example we terminate the pipeline with a mapper process object.
# (Intermediate filters such as vtkShrinkPolyData could be inserted in
# between the source and the mapper.) We create an instance of
# vtkPolyDataMapper to map the polygonal data into graphics primitives. We
# connect the output of the cone source to the input of this mapper.
#
coneMapper = vtkPolyDataMapper()
coneMapper.SetInputConnection(cone.GetOutputPort())

#
# Create an actor to represent the cone. The actor orchestrates rendering
# of the mapper's graphics primitives. An actor also refers to properties
# via a vtkProperty instance, and includes an internal transformation
# matrix. We set this actor's mapper to be coneMapper which we created
# above.
#
coneActor = vtkActor()
coneActor.SetMapper(coneMapper)
coneActor.GetProperty().SetColor(colors.GetColor3d('MistyRose'))

#
# Create two renderers and assign actors to them. A renderer renders into
# a viewport within the vtkRenderWindow. It is part or all of a window on
# the screen and it is responsible for drawing the actors it has. We also
# set the background color here. In this example we are adding the same
# actor to two different renderers it is okay to add different actors to
# different renderers as well.
#
ren1 = vtkRenderer()
ren1.AddActor(coneActor)
ren1.SetBackground(colors.GetColor3d('RoyalBlue'))

ren1.SetViewport(0.0, 0.0, 0.5, 1.0)

ren2 = vtkRenderer()
ren2.AddActor(coneActor)
ren2.SetBackground(colors.GetColor3d('DodgerBlue'))
ren2.SetViewport(0.5, 0.0, 1.0, 1.0)

#
# Finally we create the render window which will show up on the screen.
# We put our renderer into the render window using AddRenderer. We also
# set the size to be 300 pixels by 300.
#
renWin = vtkRenderWindow()
renWin.AddRenderer(ren1)
renWin.AddRenderer(ren2)
renWin.SetSize(600, 300)
renWin.SetWindowName('Tutorial_Step3')

#
# Make one view 90 degrees from other.
#
ren1.ResetCamera()
ren1.GetActiveCamera().Azimuth(90)

#
# Now we loop over 360 degrees and render the cones each time.
#
for i in range(0, 360): # render the image
renWin.Render()
# rotate the active camera by one degree
ren1.GetActiveCamera().Azimuth(1)
ren2.GetActiveCamera().Azimuth(1)


if __name__ == '__main__':
import sys

main(sys.argv)
Loading

0 comments on commit fa8432f

Please sign in to comment.