graphkit-vtk 0.3.0 → 0.3.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 +1 -1
- data/graphkit-vtk.gemspec +2 -2
- data/lib/graphkit-vtk.rb +69 -30
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.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.3.
|
8
|
+
s.version = "0.3.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 = "
|
12
|
+
s.date = "2013-11-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 = [
|
data/lib/graphkit-vtk.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'rubypython'
|
2
|
+
|
1
3
|
class GraphKit
|
2
4
|
class VTKObjectGroup
|
3
5
|
|
@@ -42,6 +44,18 @@ class GraphKit
|
|
42
44
|
|
43
45
|
# A hash containing other VTK objects
|
44
46
|
attr_reader :other_objects
|
47
|
+
|
48
|
+
def delete
|
49
|
+
#([@reader, @mapper, @actor, @volume, @renderer, @renderer_window, @large_image_renderer, @interactor] + other_objects.values).each do |obj|
|
50
|
+
#next unless obj
|
51
|
+
#begin
|
52
|
+
#obj.Delete
|
53
|
+
#rescue NoMethodError => err
|
54
|
+
#puts err, obj
|
55
|
+
#next
|
56
|
+
#end
|
57
|
+
#end
|
58
|
+
end
|
45
59
|
|
46
60
|
|
47
61
|
end
|
@@ -135,12 +149,10 @@ class GraphKit
|
|
135
149
|
temp_write = false
|
136
150
|
unless filename
|
137
151
|
temp_write = true
|
138
|
-
filename = (Time.now.to_i).to_s + rand(1000000).to_s + ".tmp.vtk"
|
152
|
+
filename = (Time.now.to_i).to_s + $$.to_s + rand(1000000).to_s + ".tmp.vtk"
|
139
153
|
to_vtk_legacy_fast(file_name: filename)
|
140
154
|
end
|
141
155
|
|
142
|
-
require 'rubypython'
|
143
|
-
RubyPython.start
|
144
156
|
vtk_og = VTKObjectGroup.new
|
145
157
|
vtk = vtk_og.vtk_module = RubyPython.import('vtk')
|
146
158
|
file_name = filename
|
@@ -205,29 +217,32 @@ class GraphKit
|
|
205
217
|
# rendering.
|
206
218
|
|
207
219
|
def vtk_render(output_file='window', input_file=nil, &block)
|
220
|
+
#RubyPython.start
|
208
221
|
vtk_og = vtk_object_group(filename)
|
209
222
|
yield(vtk_og) if block
|
210
|
-
|
211
|
-
#
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
#vtk_og.
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
jpeg_writer.SetInput(
|
226
|
-
|
227
|
-
|
228
|
-
jpeg_writer.
|
229
|
-
|
230
|
-
|
223
|
+
write_file(output_file, vtk_og)
|
224
|
+
#vtk = vtk_og.vtk_module
|
225
|
+
##filter = vtk.vtkWindowToImageFilter
|
226
|
+
##vtk_og.renderer_window.SetOffScreenRendering(1)
|
227
|
+
##gf = vtk.vtkGraphicsFactory
|
228
|
+
##gf.SetOffScreenOnlyMode(1)
|
229
|
+
#vtk_og.renderer_window.Start
|
230
|
+
##vtk_og.reader.Update
|
231
|
+
##vtk_og.renderer.Update
|
232
|
+
##filter.SetInput(vtk_og.renderer_window)
|
233
|
+
###########case File.extname(output_file)
|
234
|
+
###########when '.jpeg', '.jpg'
|
235
|
+
###########jpeg_writer = vtk.vtkJPEGWriter
|
236
|
+
############vtk_og.renderer.DeviceRender
|
237
|
+
############jpeg_writer.SetInput(vtk_og.renderer.GetOutput)
|
238
|
+
############jpeg_writer.SetInput(render_large.GetOutput)
|
239
|
+
###########jpeg_writer.SetInput(vtk_og.large_image_renderer.GetOutput)
|
240
|
+
############filter.Update
|
241
|
+
###########jpeg_writer.SetFileName(output_file)
|
242
|
+
###########jpeg_writer.Write
|
243
|
+
###########end
|
244
|
+
#vtk_og.renderer_window.Finalize
|
245
|
+
#RubyPython.stop
|
231
246
|
|
232
247
|
end
|
233
248
|
|
@@ -239,18 +254,18 @@ class GraphKit
|
|
239
254
|
#
|
240
255
|
# function can be :raycast or :tetrahedra
|
241
256
|
#
|
242
|
-
def vtk_volume_object_group( function = :raycast, filename = nil)
|
257
|
+
def vtk_volume_object_group( function = :raycast, filename = nil, options={})
|
243
258
|
# If we are not given a filename, need to write the
|
244
259
|
# data in VTK format... can change at some point?
|
245
260
|
temp_write = false
|
246
261
|
unless filename
|
247
262
|
temp_write = true
|
248
|
-
filename = (Time.now.to_i).to_s + rand(1000000).to_s + ".tmp.vtk"
|
263
|
+
filename = (Time.now.to_i).to_s + $$.to_s + rand(1000000).to_s + ".tmp.vtk"
|
249
264
|
to_vtk_legacy_fast(file_name: filename)
|
250
265
|
end
|
251
266
|
|
252
|
-
require 'rubypython'
|
253
|
-
RubyPython.start
|
267
|
+
#require 'rubypython'
|
268
|
+
#RubyPython.start
|
254
269
|
vtk_og = VTKObjectGroup.new
|
255
270
|
vtk = vtk_og.vtk_module = RubyPython.import('vtk')
|
256
271
|
file_name = filename
|
@@ -279,6 +294,11 @@ class GraphKit
|
|
279
294
|
ep scalar_range.to_a
|
280
295
|
max = max.to_s.to_f
|
281
296
|
min = min.to_s.to_f
|
297
|
+
range = (max-min)
|
298
|
+
if options[:cut_range_factor]
|
299
|
+
min = min + range/2.0*options[:cut_range_factor]
|
300
|
+
max = max - range/2.0*options[:cut_range_factor]
|
301
|
+
end
|
282
302
|
ep 'max', max, max.class, 'min', min, min.class
|
283
303
|
|
284
304
|
coltranfunc.AddRGBPoint(min, 0.0, 0.0, 1.0)
|
@@ -297,6 +317,7 @@ class GraphKit
|
|
297
317
|
|
298
318
|
case function
|
299
319
|
when :raycast
|
320
|
+
ep "RAYCAST"
|
300
321
|
vtk_og.mapper = mapper = vtk.vtkUnstructuredGridVolumeRayCastMapper
|
301
322
|
mapper.SetInput(tf.GetOutput)
|
302
323
|
mapper.SetRayCastFunction(vtk.vtkUnstructuredGridBunykRayCastFunction)
|
@@ -359,10 +380,17 @@ class GraphKit
|
|
359
380
|
# The optional block yields a VTKObjectGroup which contains references
|
360
381
|
# to all the VTK objects for arbitrary manipulation before
|
361
382
|
# rendering.
|
362
|
-
|
383
|
+
|
384
|
+
#puts 'LOADING'
|
363
385
|
def vtk_render_volume(output_file='window', function = :raycast, input_file=nil, &block)
|
386
|
+
puts 'HERE'
|
364
387
|
vtk_og = vtk_volume_object_group(function, filename)
|
365
388
|
yield(vtk_og) if block
|
389
|
+
write_file(output_file, vtk_og)
|
390
|
+
#vtk_og.delete
|
391
|
+
end
|
392
|
+
|
393
|
+
def write_file(output_file, vtk_og)
|
366
394
|
vtk = vtk_og.vtk_module
|
367
395
|
#filter = vtk.vtkWindowToImageFilter
|
368
396
|
#vtk_og.renderer_window.SetOffScreenRendering(1)
|
@@ -382,9 +410,20 @@ class GraphKit
|
|
382
410
|
#filter.Update
|
383
411
|
jpeg_writer.SetFileName(output_file)
|
384
412
|
jpeg_writer.Write
|
413
|
+
when '.gif'
|
414
|
+
gif_writer = vtk.vtkGIFWriter
|
415
|
+
gif_writer.SetInput(vtk_og.large_image_renderer.GetOutput)
|
416
|
+
gif_writer.SetFileName(output_file)
|
417
|
+
gif_writer.Write
|
418
|
+
when '.tiff'
|
419
|
+
tiff_writer = vtk.vtkTIFFWriter
|
420
|
+
tiff_writer.SetInput(vtk_og.large_image_renderer.GetOutput)
|
421
|
+
tiff_writer.SetFileName(output_file)
|
422
|
+
tiff_writer.Write
|
423
|
+
else
|
424
|
+
raise 'Cannot write files of this type: ' + output_file
|
385
425
|
end
|
386
426
|
vtk_og.renderer_window.Finalize
|
387
|
-
|
388
427
|
end
|
389
428
|
|
390
429
|
|
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.3.
|
4
|
+
version: 0.3.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:
|
12
|
+
date: 2013-11-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:
|
146
|
+
hash: 2778311942598943607
|
147
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
148
|
none: false
|
149
149
|
requirements:
|