Christmas school holidays can be pretty tough for getting long enough stretches of time to make any meaningful progress on my core tools. However, I can usually snatch a few hours here and there to work on some smaller and less involved projects, so this Christmas I decided to work on a couple of apps that I have been thinking about for ages.

Tree Generator App

Screenshot of Tree Generator app. Launch app in new tab...
Figure 1: Tree Generator app.

The first is a Tree Generator that lets you interactively create parametric or procedural 3D trees. As I develop my BIM tools and use them on some of our development projects, I have always wanted to be able to properly include site vegetation as it makes the model much more believable. However, this usually involves arm-wrestling 3D modelling tools attempting to create and import the kinds of slightly abstract and light-weight forms I was after. But no more – I have finally integrated geometric tree modelling into my BIM workflow.

Types of low-poly procedural tree you can generate.
Figure 2: Some types of low-poly procedural tree you can create with the Tree Generator app.

Moreover, I have included a bit of experimental work on the seasonal variation of deciduous trees so that I can finally have the site vegetation respond dynamically to date changes and change color or shed / regrow their leaves at the appropriate time of year.

Finally able to dynamically model seasonal variation in deciduous vegetation.
Figure 3: Finally able to dynamically model seasonal variation in deciduous vegetation.

Polyhedra Generator App

Screenshot of Polyhedra Generator app. Launch app in new tab...
Figure 4: Polyhedra Generator app.

The second is a Polyhedra Generator that lets you create complex higher-order polyhedra as well as some interesting structural and architectural forms. As I had to convert some old Java code I had for generating polyhedra to use in my Tree Generator, I figured this was the excuse I needed to rewrite a new version of my old polyhedra viewer in JavaScript and WebGL.

In the interim though, I had discovered and been completely inspired by Anselm Levskaya’s polyH√©dronisme which allows you to apply mathematical operations to a ‘seed’ polyhedra in order to generate more complex shapes and forms. I simply had to include that in my new version.

Some examples of different operations on the same polyhedra.
Figure 5: Some examples of polyhedra with different operations applied.

In doing so, I have borrowed quite heavily from Anselm Levskaya's code as well as George Hart’s original VRML implementation to create an alternative WebGL version that hopefully builds on their fantastic work.

Also, to make working with Conway Polyhedra Notion a bit easier, I added some user interface elements to convert the notation text into an operations stack, and visa versa. This allows you to build up operator sequences and explore the various parameters of each operation visually rather than having to know or understand the actual notation.

Click here to comment on this page.