Experiments with ruby-processing (processing-2.2.1) and JRubyArt for processing-3.0
Showing posts with label vanilla processing. Show all posts
Showing posts with label vanilla processing. Show all posts
Thursday, 3 October 2013
Checking out jruby-complete-9000.dev.jar (waiting for jruby-1.7.5)
I just tested the 2 October 2013 snapshot of jruby-complete-9000 with ruby-processing, so far so good (still issue with fisica library that I had thought had gone away with jruby-1.7.5.dev, but I might have been using my "corrected" version of the fisica library, anyway I will be interested to see the effect of Charlies pruning basically removing ruby-1.8.7 compatibility). I've also been reviewing "app.rb", with a view to being a bit more specific about which processing classes to import. Having failed abysmally to make any use of processing event classes directly, they are in firing line. Also I will only import opengl classes for P2D and P3D sketches (work in progress, will be ready for next ruby-processing commit to coincide with jruby-1.7.5 release). On the processing front a new release of vanilla processing may not be too far away either (at long last, and then probably only because of the Mac Retina display issue, java version is going to be upgraded to version 1.7.0_40).
Labels:
jruby-9000,
Mac Retina,
ruby-processing,
vanilla processing
Wednesday, 5 December 2012
Creating a Mock Vanilla Processing Distribution
It is possible to create a distribution version of processing from the git version. I wanted a mock version to use in my development version of ruby-processing.
These are the steps for a linux64 distribution:-
Clone processing from github here:-
https://github.com/processing/processing
Updated 6 November 2013, to match github and most recent pre-version
These are the steps for a linux64 distribution:-
- Build the git version from the build folder
- cd linux/work
- mkdir processing-2.1.1
- mkdir processing-2.1.1/modes
- cp -rf modes/java processing-2.1.1/modes
- cp -rf core processing-2.1.1
- tar czvf processing-2.1.1-linux64.tgz processing-2.1.1
Clone processing from github here:-
https://github.com/processing/processing
Updated 6 November 2013, to match github and most recent pre-version
Labels:
distribution,
github,
processing,
vanilla processing
Thursday, 2 February 2012
Export ruby-processing sketch to PovRAY mesh2
Updated 8 March hemesh library since 1.70 beta includes export code
Here I present how to export from ruby-processing to PovRAY mesh2 format. The beauty of this approach is it does not rely on the processing rendering method, further the mesh2 object is better matched to PovRAY internals then raw triangles so rendering is quicker. However the major advantage is by using the normals calculated by the hemesh library (I'm using svn version 108 here) we get "smooth" surfaces (there is an option to exclude normals and view facets if desired). Here is the ruby processing sketch:-
####################################################### # twin_iso.rb by Martin Prout aka monkstone # Original sketch by Frederik Vanhoutte aka wblut # Using svn(108) hemesh library (wblut) # to export a ruby-processing sketch) # to PovRAY mesh2 format (two meshes/one file) ###################################################### load_libraries 'hemesh', 'opengl' include_package 'wblut.hemesh' include_package 'wblut.hemesh.core' include_package 'wblut.hemesh.creators' include_package 'wblut.hemesh.modifiers' include_package 'wblut.hemesh.subdividors' include_package 'wblut.hemesh.tools' include_package 'wblut.core.processing' attr_accessor :render, :mesh, :inv_mesh, :display, :creator def setup() size(800, 800, OPENGL) @display = true res = 20 count = res + 1 values=init_array(count, count, count) count.times do |i| count.times do |j| count.times do |k| values[i][j][k]=2.1*noise(0.35*i, 0.35*j, 0.35*k) end end end @creator=HEC_IsoSurface.new() creator.set_resolution(res, res, res)# number of cells in x,y,z direction creator.set_size(400.0/res, 400.0/res, 400.0/res) # cell size creator.set_values(values.to_java(Java::float[][]))# note cast to Javas # values can also be double[][][] creator.set_isolevel(1)# isolevel to mesh creator.set_invert(false)# invert mesh creator.set_boundary(100)# value of isoFunction outside grid # use creator.clearBoundary() to rest boundary values to "no value". # A boundary value of "no value" results in an open mesh @mesh=HE_Mesh.new(creator) mesh.modify(HEM_Smooth.new().set_iterations(20).set_auto_rescale(true)) creator.set_invert(true) @inv_mesh=HE_Mesh.new(creator) inv_mesh.modify(HEM_Smooth.new().set_iterations(3).set_auto_rescale(true)) @render=WB_Render.new(self) end def draw() if (display) screen_render() else povray_render() end end def screen_render() background(120) lights() translate(400, 400, 0) rotate_y(mouse_x*1.0/width*TWO_PI) rotate_x(mouse_y*1.0/height*TWO_PI) no_stroke() fill(255) render.draw_faces(mesh) 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 def povray_render() file_id = "mesh0" pw = create_writer(file_id + ".inc") HET_Export.saveToPOV(mesh, pw) # (mesh, pw, false) no normals HET_Export.saveToPOV(inv_mesh, pw) # default is to use normals (smooth faces) pw.flush pw.close exit end def init_array(width, height, depth) Array.new(width).map!{ Array.new(height).map!{ Array.new(depth)}} end def key_pressed() case key when 'e', 'E' @display = false when 's', 'S' save_frame("twin_iso.png") end endHere is the associated "pov" file:-
// Persistence Of Vision Ray Tracer Scene Description File // File: Simple Scene <template for povwriter> // Vers: 3.7 // Date: January 2012 // Auth: Martin Prout #version 3.7; global_settings{ assumed_gamma 1.0 radiosity{ pretrace_start 0.04 pretrace_end 0.01 count 200 recursion_limit 3 nearest_count 10 error_bound 0.5 } } #include "colors.inc" #include "skies.inc" #include "mesh0.inc" #include "metals.inc" //----------------declare scene Settings #declare camera0 = camera { // define additional cameras to suit viewing preferences location <-1.5, 30.0, -150.0> direction <0.0, 0.0, 2.0> up <0.0, 1.0, 0.0> right <1.0, 0.0, 0.0> look_at <0.0, 25.0, 35.0> } #declare light0 = light_source { <100.0, 100.0, -200.0> colour White } #declare ground0 = plane { <0.0, 1.0, 0.0>, 0.0 // a reflective ground plane pigment { NeonBlue } finish {reflection 0.15} } //------------------end of declare scene settings // -----------------set the scene camera { camera0 } // ------------------------------------------ // The use of declared values makes it possible to easily light_source{ light0 } // change the way the scene is rendered. Just define an // additional camera say for your template, and do the sky_sphere{ S_Cloud3 } // substitution here. Retain the original definition and // you can easily backtrack. Definitions can also be saved plane{ ground0 } // as included file see colors.inc for an example. // --------------------------------------------- // -----------------end set the scene object{ mesh2{ obj0 } // name obj0 created by modified Hemesh library texture {T_Silver_5E} scale<0.3, 0.3, 0.3> rotate<0, 15, 0> translate<0, 50, 400> } object{ mesh2{ obj2 } // name obj2 created by modified Hemesh library (why not 1?) texture {T_Copper_1A} scale<0.3, 0.3, 0.3> rotate<0, 15, 0> translate<0, 50, 400> }
![]() |
| PovRAY rendered |
![]() |
| Opengl Rendered |
Labels:
array conversion,
export,
hemesh,
mesh2,
povray,
ruby-processing,
vanilla processing
Subscribe to:
Posts (Atom)
Followers
About Me
- monkstone
- I have developed JRubyArt and propane new versions of ruby-processing for JRuby-9.1.5.0 and processing-3.2.2

