graphkit-vtk 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.1
data/graphkit-vtk.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "graphkit-vtk"
8
- s.version = "0.1.1"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Edmund Highcock"]
12
- s.date = "2012-12-28"
12
+ s.date = "2012-12-30"
13
13
  s.description = "An extension allowing graphkits to be rendered using the Visualization Toolkit. Uses the RubyPython gem to access the Python bindings for VTK."
14
14
  s.email = "edmundhighcock@sourceforge.net"
15
15
  s.extra_rdoc_files = [
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
33
33
  s.homepage = "http://github.com/edmundhighcock/graphkit-vtk"
34
34
  s.licenses = ["GPLv3"]
35
35
  s.require_paths = ["lib"]
36
- s.rubygems_version = "1.8.24"
36
+ s.rubygems_version = "1.8.23"
37
37
  s.summary = "An extension allowing graphkits to be rendered using the Visualization Toolkit."
38
38
 
39
39
  if s.respond_to? :specification_version then
data/lib/graphkit-vtk.rb CHANGED
@@ -34,6 +34,86 @@ class GraphKit
34
34
 
35
35
  end
36
36
 
37
+ # This module contains methods for rendering GraphKits
38
+ # using the Visualization Toolkit (VTK). It uses the
39
+ # Python interface to VTK via the RubyPython bridge
40
+ # (see rubygems.org/gems/rubypython).
41
+ #
42
+ # It should work with vtk and vtk-python installed
43
+ # on any Linux distro.
44
+ #
45
+ # If you want to use it on a supercomputer you will
46
+ # almost certainly have to build Python and VTK yourself.
47
+ #
48
+ # The instructions below have been tested on Hector but
49
+ # can be easily adapted to work anywhere.
50
+ #
51
+ # First you need to configure your system to use the GNU
52
+ # compilers and with dynamic linking enabled. The instructions
53
+ # for configuring your system for installing CodeRunner should
54
+ # work well. See the CodeRunner wiki (coderunner.sourceforge.net).
55
+ #
56
+ # Choose a directory to install everything: <tt>myprefix</tt>.
57
+ #
58
+ # Download the source for Python 2.x (2.7 works as of Dec 2012),
59
+ # extract it and build it (with shared libraries) as follows.
60
+ # $ cd Python-2.7.3
61
+ # $ ./configure --prefix=<myprefix> --enable-shared LDFLAGS="-Wl,-rpath <myprefix/lib"
62
+ # $ make && make install
63
+ #
64
+ # Download the VTK source (tested with VTK 5.10) and extract it.
65
+ #
66
+ # Make a directory at the same level as the VTK source folder,
67
+ # e.g. VTK-bin. Make sure CMake is available (e.g. module load CMake).
68
+ # Configure like this:
69
+ # 1. $ cd VTK-bin
70
+ # 2. $ ccmake -i ../VTK5.10.1 # (replace with appropriate folder)
71
+ #
72
+ # You will now enter the CMake interactive configuration. Press 'c' to
73
+ # run the initial configuration. Press 't' to get to the advanced options.
74
+ # Make sure the settings below are as follows
75
+ # CMAKE_INSTALL_PREFIX <myprefix>
76
+ # VTK_WRAP_PYTHON on
77
+ # VTK_USE_RENDERING on
78
+ # VTK_USE_X off
79
+ # VTK_OPENGL_HAS_OSMESA on
80
+ #
81
+ # The last two settings mean that VTK won't try to pop up windows when
82
+ # it is rendering: instead it will write them straight to file.
83
+ # OSMESA stands for Off Screen Mesa, where Mesa is the open source
84
+ # graphics library.
85
+ #
86
+ # Press 'c' to update the configuration.
87
+ # Now update the following settings:
88
+ # PYTHON_EXECUTABLE <myprefix>/bin/python
89
+ # PYTHON_INCLUDE_DIR <myprefix>/include/python2.x
90
+ # PYTHON_LIBRARY <myprefix>/lib/libpython2.x.so
91
+ # VTK_USE_OFFSCREEN on
92
+ #
93
+ #
94
+ # Here is the funky bit: we don't want to use the standard hardware-enabled
95
+ # OpenGL libraries because we want to render offscreen. The standard OpenGL
96
+ # conflicts with OSMESA and makes SEGFAULTS (yuk). Instead we can have OSMESA
97
+ # replace all their functionality by setting
98
+ # OPENGL_glu_LIBRARY
99
+ # OPENGL_gl_LIBRARY
100
+ # to the same value as
101
+ # OSMESA_LIBRARY
102
+ #
103
+ # This will of course not be as fast, but that's OK because we are going
104
+ # to parallelise over the supercomputer when we write our rendering scripts!
105
+ #
106
+ # Press 'c' to configure once more, and 'g' to generate the makefiles.
107
+ # Now build
108
+ # $ make # This will take about 40 mins.
109
+ # $ make install
110
+ #
111
+ # Finally we need to setup python: add these lines to your .bashrc
112
+ # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<myprefix>/lib/vtk-5.10/
113
+ # export PYTHONPATH=$PYTHONPATH:<myprefix>/lib/python2.7/site-packages/
114
+ # export PATH=<myprefix>/bin:$PATH
115
+ module VTK
116
+
37
117
  # This method returns a VTKObjectGroup object, which
38
118
  # contains references to the VTK/Python objects
39
119
  # which are necessary to plot the graph.
@@ -43,7 +123,7 @@ class GraphKit
43
123
  temp_write = false
44
124
  unless filename
45
125
  temp_write = true
46
- filename = (Time.now.to_i).to_s + rand(10000).to_s + ".tmp.vtk"
126
+ filename = (Time.now.to_i).to_s + rand(1000000).to_s + ".tmp.vtk"
47
127
  to_vtk_legacy_fast(file_name: filename)
48
128
  end
49
129
 
@@ -68,12 +148,23 @@ class GraphKit
68
148
  mapper.SetInput(output)
69
149
  mapper.SetScalarRange(scalar_range)
70
150
 
151
+ look_up_table = vtk.vtkLookupTable
152
+ look_up_table.SetNumberOfColors(64)
153
+ look_up_table.SetHueRange(0.0, 0.667)
154
+ mapper.SetLookupTable(look_up_table)
155
+ mapper.SetScalarModeToDefault
156
+ #mapper.CreateDefaultLookupTable
157
+ mapper.ScalarVisibilityOn
158
+ #mapper.SelectColorArray('myvals')
159
+
160
+
71
161
  vtk_og.actor = actor = vtk.vtkActor
72
162
  actor.SetMapper(mapper)
163
+ actor.VisibilityOn
73
164
 
74
165
  vtk_og.renderer = renderer = vtk.vtkRenderer
75
166
  renderer.AddActor(actor)
76
- renderer.SetBackground(0,0,0)
167
+ #renderer.SetBackground(0,0,0)
77
168
 
78
169
  vtk_og.renderer_window = renderer_window = vtk.vtkRenderWindow
79
170
  renderer_window.SetSize(640,480)
@@ -83,9 +174,9 @@ class GraphKit
83
174
  render_large.SetInput(vtk_og.renderer)
84
175
  render_large.SetMagnification(4)
85
176
 
86
- #vtk_og.interactor = interactor = vtk.vtkRenderWindowInteractor
87
- #interactor.SetRenderWindow(renderer_window)
88
- #interactor.Initialize
177
+ vtk_og.interactor = interactor = vtk.vtkRenderWindowInteractor
178
+ interactor.SetRenderWindow(renderer_window)
179
+ interactor.Initialize
89
180
  #interactor.Start
90
181
 
91
182
  return vtk_og
@@ -131,6 +222,9 @@ class GraphKit
131
222
 
132
223
 
133
224
 
225
+ end #module VTK
226
+
227
+ include VTK
134
228
 
135
229
 
136
230
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphkit-vtk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-28 00:00:00.000000000 Z
12
+ date: 2012-12-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: graphkit
@@ -143,7 +143,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
143
143
  version: '0'
144
144
  segments:
145
145
  - 0
146
- hash: 3330358015702513800
146
+ hash: -3523229928342679442
147
147
  required_rubygems_version: !ruby/object:Gem::Requirement
148
148
  none: false
149
149
  requirements:
@@ -152,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
152
  version: '0'
153
153
  requirements: []
154
154
  rubyforge_project:
155
- rubygems_version: 1.8.24
155
+ rubygems_version: 1.8.23
156
156
  signing_key:
157
157
  specification_version: 3
158
158
  summary: An extension allowing graphkits to be rendered using the Visualization Toolkit.