piGeon + ControlP5 Template

This template code provides a method for combining ControlP5 with the piGeon geometry library and interface. The method gives the user dynamic control over geometry variables using interactive controls such as sliders, toggles, knobs, and other cool GUI stuff.

The template creates a separate control window for manipulating geometry parameters in the piGeon interface. Each slider event will regenerate

Download the template code...!

Download the supershape example...!

/*
 This template code provides a method for combining ControlP5 
 with the piGeon geometry library and interface.  The method
 gives the user dynamic control over geometry variables using 
 interactive controls such as sliders, toggles, knobs, and 
 other cool GUI stuff.
 
 Required Libraries 
 piGeon:  http://igeo.jp
 ControlP5:  http://www.sojamo.de/libraries/controlP5/
*/
 
//2011 Nathan Miller, The Proving Ground
 
import igeo.*;
import processing.opengl.*;
import controlP5.*;
 
//DECLARE CONTROLS
ControlP5 controlP5;
ControlWindow myControlWindow;  //initialize control window
Controller slider;  //initialize slider
 
//SETUP
/*
 Use void setup() to initialize piGeon interface, and ControlP5. 
 void setup() can also be used to establish static geometry 
 (imports, references)
*/
void setup() {
  //INITIALIZE MAIN INTERFACE
  size(480, 360, IG.GL);
 
  //INITIALIZE CONTROLP5 AND CONTROL WINDOW
  controlP5 = new ControlP5(this);
  myControlWindow = controlP5.addControlWindow("piGeon Controls", 100, 100, 480, 360);
  myControlWindow.hideCoordinates(); //hides window dimensions
 
  //INITIALIZE CONTROLS
  slider = controlP5.addSlider("X", 0, 20, 10, 80, 70, 300, 14);
  slider.setWindow(myControlWindow); //assign slider to myControlWindow
}
 
//DRAW
/*
 Use void draw() for creating variable geometry that will 
 update with slider changes.
*/
void draw() {
  //REFRESH PIGEON GEOMETRY
  refpiGeon(); //function to refresh variable piGeon geometry
 
  //SLIDER PARAMETERS
  //Assign slider parameters to script variables.
  float myParam = slider.value();
 
  //MAIN CODE TO RUN GOES BELOW....
  new IBox(0,0,0,  myParam, myParam, myParam).clr(255, 150, 0);
}
 
//REFRESH FUNCTION.
//Clears piGeon geometry in the scene.
void refpiGeon() {
  //Refreshes (deletes) iGeo geometry.
 
  IPoint[] ptarr = IG.points();
  ICurve[] crvarr = IG.curves();
  ISurface[] srfarr = IG.surfaces();
  IBrep[] breparr = IG.breps();
  IMesh[] mesharr = IG.meshes();
 
  //clear points
  for (IPoint pt: ptarr) {
    pt.del();
  }
  //clear curves
  for (ICurve crv: crvarr) {
    crv.del();
  }
  //clear surfaces
  for (ISurface srf:  srfarr) {
    srf.del();
  }
  //clear BReps
  for (IBrep brep:  breparr) {
    brep.del();
  }
  //clear meshes
  for (IMesh mesh: mesharr) {
    mesh.del();
  }
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License