HE_Mesh GUI update

Just letting you know that I have resurrected the hemeshgui project to run on the latest versions of Processing, HE_Mesh, and controlP5. I’ll try and actively maintain it, so if you have any feature requests/bug reports let me know!

I’ve added some new creators and modifiers, tidied up the UI a bit, and made a couple of improvements. It’s still early days, so watch this space!

If you’re new to Processing and 3D this is a great way to learn all the ins and outs of creating and modifying unique and interesting shapes.


Sounds great! It would be cool to see screenshots in the GitHub page to know what to expect because the code.google link in the GitHub page is broken and the creativeapplications one is only for members.

I got a bit confused with who is who because HE_Mesh is by wblut and controlp5 by sojamo, how are AmnonOwed and struct78 connected to the hemeshgui? Just curious :slight_smile:

1 Like


Thank you for making your work available to the community!

@hamoid, I think it works like this:

  1. wblut made HE_Mesh
  2. sojamo made controlp5
  3. AmnonOwed made a GUI, HemeshGui, which was built on HE_Mesh and controlp5 ~2011.

Now @struct is announcing a fork / update of that GUI, “HE_Mesh GUI” which incorporates the latest versions of HE_Mesh and controlp5.

HE_Mesh --> HemeshGui <-- controlp5
   |           |              |
   |           v              |
    \-----> hemeshgui <------/
1 Like

Thanks for your feedback @hamoid. @jeremydouglass is right, it was started by AmnonOwed, picked up by https://bitbucket.org/StudioEtrange/hemeshgui in 2014, and then picked up by me.

I’ve just added some images to the README so you can see what it looks like with some basic shapes, will add more over time.

1 Like

You should think about making this available through the Processing PDE Contributions Manager!

1 Like

Version 0.5 has just been released!

Updates include:

  • Moved UI to grid-based layout
  • Code refactoring to make adding shapes/modifiers easier
  • Disabled unused parameter sliders for Shapes
  • Removed unused parameter sliders for Modifiers
  • Added Voronoi Cells and "UV Parametric shapes
  • Added Noise and Spherical Inversion modifiers
  • Added DooSabin subdivider
  • Added Ambient Occlusion shader
  • Added UI themes
  • Made non-blocking UI
  • Added multithreaded rendering


Version 0.6 has just been released!

Updates include:

  • Custom shapes! Import any 3DS, OBJ, or Hemesh file.
  • New Shapes: Sea Shell, Sweep Tube, and Twin ISO
  • New Modifiers: Spherify, Shrink Wrap and Voronoi Cells
  • Smoother animation
  • Save/load all your workspace settings to JSON format, including custom shapes!
  • Export to 3DS, OBJ, or Hemesh file formats
  • Examples!
  • Improved Sunflow rendering


Hello. Great work. Im working with a sweapTube. you know how i modify its values on the fly?

try this but it makes slow performance… think becouse its create a new Obj every frame…

import wblut.nurbs.*;
import wblut.hemesh.*;
import wblut.core.*;
import wblut.geom.*;
import wblut.processing.*;
import wblut.math.*;

WB_Render render;
WB_BSpline C;
WB_Point[] points;
HE_Mesh mesh;
HEC_SweepTube creator;

void setup() {
  size(1000, 1000, P3D);
  // Several WB_Curve classes are in development. HEC_SweepTube provides
  // a way of generating meshes from them.

  //Generate a BSpline
  points=new WB_Point[11];
  for (int i=0; i<11; i++) {
    points[i]=new WB_Point(5*(i-5)*(i-5), -200+40*i, random(100));
  C=new WB_BSpline(points, 4);
  creator=new HEC_SweepTube();
  creator.setCurve(C);//curve should be a WB_BSpline
  creator.setCap(true, true); // Cap start, cap end?

void draw() {
  mesh=new HE_Mesh(creator); 
  render=new WB_Render(this);
  directionalLight(255, 255, 255, 1, 1, -1);
  directionalLight(127, 127, 127, -1, -1, 1);
  translate(width/2, height/2);

can you help me? thanksss

Hi, I’m pretty sorry for write here… :sweat_smile:

I don’t have knowledge about how to import .3DS models, can someone make an example for processing 3? (3.5.3 is the version I’m using)

Just a simple

import hemeshlibrary.*;

PModel3DS a;

void setup(){
  size( displayWidth, displayHeight, P3D);
  a = load3Dmodel("myModel.3DS");

void draw(){

Sorry again for update the post, and thanks!

(If this is an error I can delete the post - notify me)