Introduction
Introduction Statistics Contact Development Disclaimer Help
tadd function to visualize particles directly from python module - sphere - GPU…
git clone git://src.adamsgaard.dk/sphere
Log
Files
Refs
LICENSE
---
commit 5d2500342b74ad102c08fcea14092dcea82d466e
parent 43a754c8d75b526c6c6a23f5a860afd125c23c2e
Author: Anders Damsgaard <[email protected]>
Date: Fri, 20 Feb 2015 14:19:58 +0100
add function to visualize particles directly from python module
Diffstat:
M python/sphere.py | 82 +++++++++++++++++++++++++++++…
1 file changed, 80 insertions(+), 2 deletions(-)
---
diff --git a/python/sphere.py b/python/sphere.py
t@@ -1840,10 +1840,12 @@ class sim:
polydata.SetPoints(points)
polydata.SetLines(lines)
#polydata.GetCellData().SetScalars(colors)
+ #polydata.GetCellData().SetScalars(forces) # default scalar
polydata.GetCellData().SetScalars(forces) # default scalar
#polydata.GetCellData().AddArray(forces)
- polydata.GetCellData().AddArray(stresses)
- polydata.GetPointData().AddArray(stresses)
+ #polydata.GetCellData().AddArray(stresses)
+ #polydata.GetPointData().AddArray(stresses)
+ polydata.GetPointData().SetScalars(stresses) # default scalar
# write VTK XML image data file
writer = vtk.vtkXMLPolyDataWriter()
t@@ -2038,6 +2040,82 @@ class sim:
if verbose:
print('Output file: ' + filename)
+ def show(self, coloring=numpy.array([]), resolution=6):
+ '''
+ Show a rendering of all particles in a window.
+
+ :param coloring: Color the particles from red to white to blue accordi…
+ to the values in this array.
+ :type coloring: numpy.array
+ :param resolution: The resolution of the rendered spheres. Larger valu…
+ increase the performance requirements.
+ :type resolution: int
+ '''
+
+ if py_vtk == False:
+ print('Error: vtk module not found, cannot show scene.')
+ return
+
+ # create a rendering window and renderer
+ ren = vtk.vtkRenderer()
+ renWin = vtk.vtkRenderWindow()
+ renWin.AddRenderer(ren)
+
+ # create a renderwindowinteractor
+ iren = vtk.vtkRenderWindowInteractor()
+ iren.SetRenderWindow(renWin)
+
+ if coloring.any():
+ #min_value = numpy.min(coloring)
+ max_value = numpy.max(coloring)
+ #min_rgb = numpy.array([50, 50, 50])
+ #max_rgb = numpy.array([255, 255, 255])
+ #def color(value):
+ #return (max_rgb - min_rgb) * (value - min_value)
+
+ def red(ratio):
+ return numpy.fmin(1.0, 0.209*ratio**3. - 2.49*ratio**2.
+ + 3.0*ratio + 0.0109)
+ def green(ratio):
+ return numpy.fmin(1.0, -2.44*ratio**2. + 2.15*ratio + 0.369)
+ def blue(ratio):
+ return numpy.fmin(1.0, -2.21*ratio**2. + 1.61*ratio + 0.573)
+
+ for i in numpy.arange(self.np):
+
+ # create source
+ source = vtk.vtkSphereSource()
+ source.SetCenter(self.x[i,:])
+ source.SetRadius(self.radius[i])
+ source.SetThetaResolution(resolution)
+ source.SetPhiResolution(resolution)
+
+ # mapper
+ mapper = vtk.vtkPolyDataMapper()
+ if vtk.VTK_MAJOR_VERSION <= 5:
+ mapper.SetInput(source.GetOutput())
+ else:
+ mapper.SetInputConnection(source.GetOutputPort())
+
+ # actor
+ actor = vtk.vtkActor()
+ actor.SetMapper(mapper)
+
+ # color
+ if coloring.any():
+ ratio = coloring[i]/max_value
+ r,g,b = red(ratio), green(ratio), blue(ratio)
+ actor.GetProperty().SetColor(r,g,b)
+
+ # assign actor to the renderer
+ ren.AddActor(actor)
+
+ ren.SetBackground(0.3, 0.3, 0.3)
+
+ # enable user interface interactor
+ iren.Initialize()
+ renWin.Render()
+ iren.Start()
def readfirst(self, verbose=True):
'''
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.