Metropolitan Works workshop: Facade tool

As announced a few months ago, I recently taught two London based workshops and in the interest of learning, the source code of various examples done at both events is now available in the repository. Released under the same license as toxiclibs itself, LGPLv2.1.

The most recent workshop took place at Metropolitan Works, the London Metropolitan University’s digital fabrication facility. Under the overarching theme of digital fabrication, initially this workshop was focused almost exclusively on geometry aspects and how to use various toxiclibs classes to construct shapes & forms and solve problems in this domain. During the 2nd workshop session, I wanted to combine several related topics into a single large exercise and we started building a little hypothetical facade design tool.

Over the past couple of weeks I squeezed in some extra time to finish cleaning up and adding comments (lots of!) to the source code of that tool with some further descriptions below…

Facade designs generally require to take into account the varying light conditions & requirements of the space sections on the inside of the building. Using strategically placed particles & attractors we can model & modulate these different spatial densities on the facade surface…

Step 1: Strategically place some attractors & particles to modulate the spatial density of the facade

Step 2: Connect particles into a 2D mesh using Delaunay triangulation...

Step 2a: ...or use Voronoi to create more cell like patterning

Step 3: Map the 2D mesh onto the extruded profile of the facade

Step 4: Apply & tweak surface deformation along normal vectors

Step 5: Produce a water tight Iso-surface mesh of the wireframe structure and export as STL for 3D printing

Result of using a more complex profile spline

Since we didn’t fully get to finish everything as a group, I have added several more features (some on popular demand):

  • Allow for selecting, repositioning & adjusting of particle attractors
  • Produce 3d iso surface of facade wireframe/lattice mesh and export as STL
  • Allow selecting & moving of points in spline editor component (incl. realtime updates in 3d wireframe preview)
  • Added user adjustable 3D surface deformation using simplex noise
  • Added toggle to switch between Delaunay & Voronoi shapes
  • Adding arc ball controller to more naturally change 3D view orientation
  • Integrating mouse wheel to adjust zooming in 3D
  • Generally improved usability and made ControlP5 GUI more dynamic (some controllers are now context sensitive and only visible in certain display/edit modes)

It’s almost a proper little tool now and should provide a lot of food for thought for the dear students (and maybe give them something to do over the holidays :)

You can download the entire Eclipse project from here:

Please note, this project is a plain Java project (no Processing Eclipse plugin required) and contains all required libraries in the project’s /lib folder:

  • Processing 1.5.1 + JOGL (only with OSX & Win32/64 binaries)
  • ControlP5 0.5.4
  • pre-release of toxiclibs-0021

Below are some quick steps to import the project into your Eclipse workspace:

  • Download via the .zip link in the top toolbar…
  • Unzip to anywhere on your disk
  • Rename resulting folder into “metworks-2011-facade” (all lower case, use dashes, no quotes)
  • In Eclipse, choose File > Import… > General > Existing projects into workspace…

  • In the import dialog use the “select root directory” option and navigate to the folder in step 3
  • The project should now show up just below, make sure it’s ticked
  • Press “Finish”

  • Back in the Eclipse workbench, open up the project in the project explorer…
  • Right click on the file “FacadeApp.launch” and choose “Run > FacadeApp”… Have fun! That is all, if you’re on OSX…

Windows users will have to do a few more additional steps and edit the location of the native library components first (used by JOGL):

  • Right click on the “metworks-2011-facade” project and choose “Properties > Java Build Path > Libraries”.
  • open the sub-tree for jogl.jar, select “Native library location” and then press the “Edit…” button

  • Now choose the /lib/windows64 (or 32) folder inside your project folder and then confirm all changes. Then you can have fun too! :)

Some more brief overview of the different classes in the project’s /src folder:

  • FacadeApp – main application (extends PApplet)
  • ParticleSystem – physics based particle simulation & simple editor features for attractors
  • SplineEditor – simple 2D curve editor for designing the facade profile
  • FacadePoint – extension of Vec3D to include surface normal and normalized 2D position (needed for displacement)
  • DisplacementStrategy – interface definition for defining concrete displacement operators (applied to FacadePoints)
  • NoiseDisplacement – the currently sole available implementation of DisplacementStrategy, using 2d simplex noise
  • ArcBall – re-usable arc ball view component for easier navigation/rotation of the 3D view

Last, but definitely not least: Many, many dear thanks to Arthur Mamou-Mani and Marcus Bowerman for organising, your hospitality, 3d printing and making everything happen… We all hope to repeat something similar in the next year. You’ve been (and will be again) warned! :)


Comments are closed.