Here is an example of using another java processing library with ruby-processing:-
load_library :hemesh
include_package 'wblut.math'
include_package 'wblut.processing'
include_package 'wblut.core'
include_package 'wblut.hemesh'
include_package 'wblut.geom'
RES=20
attr_reader :mesh, :inv_mesh, :render
def setup
size(800, 800, P3D)
smooth(8)
values = []
(0 .. RES).each do |i|
valu = []
(0 .. RES).each do |j|
val = []
(0 .. RES).each do |k|
val << 2.1*noise(0.35*i, 0.35*j, 0.35*k)
end
valu << val
end
values << valu
end
creator=HEC_IsoSurface.new
creator.set_resolution(RES,RES, RES)
creator.set_size(400.0/RES, 400.0/RES, 400.0/RES)
creator.set_values(values.to_java(Java::float[][]))
creator.set_isolevel(1)
creator.set_invert(false)
creator.set_boundary(100)
@mesh=HE_Mesh.new(creator)
creator.set_invert(true)
@inv_mesh=HE_Mesh.new(creator)
inv_mesh.modify(HEM_Smooth.new.set_iterations(10).set_auto_rescale(true))
@render=WB_Render.new(self)
end
def draw
background(120)
lights
translate(400, 400, 0)
rotate_y(mouse_x.to_f/width*TWO_PI)
rotate_x(mouse_y.to_f/height*TWO_PI)
no_stroke
fill(255,0,0)
render.draw_faces(inv_mesh)
stroke(0)
render.draw_edges(mesh)
stroke(255,0,0,80)
render.draw_edges(inv_mesh)
end
No comments:
Post a Comment