1- load_libraries :hemesh , :vbo
2- # module MS imports necessary java classes and contains ruby MeshToVBO class
3- include MS
1+ load_libraries :hemesh
2+ java_import 'wblut.processing.WB_Render'
3+ java_import 'wblut.hemesh.HEC_IsoSurface'
4+ java_import 'wblut.hemesh.HE_Mesh'
5+ java_import 'wblut.hemesh.HEM_Smooth'
6+
47RES ||= 20
58
6- attr_reader :mesh_ret , :inv_mesh_ret , :render
9+ attr_reader :mesh , :inv_mesh , :render
710
811def setup
912 sketch_title 'Twin Iso'
@@ -24,30 +27,22 @@ def setup
2427 creator = HEC_IsoSurface . new
2528 creator . set_resolution ( RES , RES , RES ) # number of cells in x,y,z direction
2629 creator . set_size ( 400.0 / RES , 400.0 / RES , 400.0 / RES ) # cell size
27-
28- # JRuby requires a bit of help to determine correct 'java args', particulary
29- # with overloaded arrays args as seen below. Note we are saying we have an
30- # 'array' of 'float array' here, where the values can also be double[][][].
30+ # JRuby requires a bit of help to determine correct 'java args', particulary with
31+ # overloaded arrays args as seen below. Note we are saying we have an 'array' of
32+ # 'float array' here, where the values can also be double[][][].
3133 java_values = values . to_java ( Java ::float [ ] [ ] ) # pre-coerce values to java
32- creator . set_values ( java_values ) # the grid points
33-
34- creator . set_isolevel ( 1 ) # isolevel to mesh
34+ creator . set_values ( java_values ) # the grid points
35+ creator . set_isolevel ( 1 ) # isolevel to mesh
3536 creator . set_invert ( false ) # invert mesh
3637 creator . set_boundary ( 100 ) # value of isoFunction outside grid
3738 # use creator.clear_boundary to set boundary values to "no value".
3839 # A boundary value of "no value" results in an open mesh
39-
40- mesh = HE_Mesh . new ( creator )
40+ @mesh = HE_Mesh . new ( creator )
4141 # mesh.modify(HEM_Smooth.new.set_iterations(10).setAutoRescale(true))
4242 creator . set_invert ( true )
43-
44- inv_mesh = HE_Mesh . new ( creator )
43+ @inv_mesh = HE_Mesh . new ( creator )
4544 inv_mesh . modify ( HEM_Smooth . new . set_iterations ( 10 ) . set_auto_rescale ( true ) )
46- @render = MeshToVBO . new ( self )
47- no_stroke
48- # no color args produces a default light grey fill
49- @mesh_ret = render . meshToVBO ( mesh , color ( 200 , 0 , 0 ) )
50- @inv_mesh_ret = render . meshToVBO ( inv_mesh , color ( 0 , 0 , 200 ) )
45+ @render = WB_Render . new ( self )
5146end
5247
5348def settings
@@ -59,8 +54,13 @@ def draw
5954 background ( 200 )
6055 lights
6156 define_lights
62- shape ( inv_mesh_ret )
63- shape ( mesh_ret )
57+ no_stroke
58+ fill ( 255 , 0 , 0 )
59+ render . draw_faces ( inv_mesh )
60+ stroke ( 0 )
61+ render . draw_edges ( mesh )
62+ stroke ( 255 , 0 , 0 , 80 )
63+ render . draw_edges ( inv_mesh )
6464end
6565
6666def define_lights
0 commit comments