A few months ago I was wondering around the gardens of Burghley House and came across this really interesting geometric sculpture…
It was made by an artist called Michele Ciribifera and is one of those elegant structures that uses a simple rule to build a complex pattern. My head was mostly full of Wooscript at the time as I was planning the next steps with the scripting application, but I took the chance to take some photos and promised myself to spend a bit of time building the object procedurally.
Due to the simple pattern that’s repeated to build the sculpture it’s an ideal candidate for building a simple procedural script. First off I started by building a basic spiral. This is pretty easily done. First off I move the position to a place above the ground plane where I can start to build up the central spine.
The principle will be to add a single beam, then move the position along the axis, rotate a little around the axis, and place another beam. By doing this multiple times you can build up the basic spine pattern of the sculpture…
rule main { pos.y += 5 pos.x -= 10 rx += 85 repeat (object, 41) } rule object { diff = vec(0.3,0.3,0.3) refl = vec(0.6,0.6,0.6) gloss = 0.98 call(spoke) pos.x += 0.1 rx += 12 } rule spoke { scale = vec(0.1, 5, 0.1) call(box) }
From here it’s not too tricky to add the additional elements required to complete the sculpture. You’ll notice there are four segments between each of the major spines. These are slightly twisted to face the direction of curvature and then pinned together with a metal strut. For the purposes of reproducing the sculpture I’m ignoring the strut!
The modification to the script involves adding an additional spoke type which is placed four times between each of the major spines. I’ve taken the following screenshot from the same position as the photo above to test the rough proportions. Close enough for these purposes.
rule main { pos.y += 5 pos.x -= 10 rx += 85 repeat (object, 41) } rule object { diff = vec(0.3, 0.3, 0.3) refl = vec(0.6,0.6,0.6) gloss = 0.98 call(spoke) pos.x += 0.02 rx += 2 call(spoke2) pos.x += 0.02 rx += 3 call(spoke2) pos.x += 0.02 rx += 3 call(spoke2) pos.x += 0.02 rx += 3 call(spoke2) pos.x += 0.02 rx += 3 } rule spoke { scale = vec(0.1, 5, 0.1) call(box) } rule spoke2 { scale = vec(0.08, 0.8, 0.15) pos.y += 3.75 ry += 5 call(box) }
For the hero render I’ve set up a simple scene to highlight the geometry. This uses a low orange directional light with a small amount of directional spread, coupled with a uniform blue light to simulate daylight. I’ve also added a touch of depth of field to give it that cinematic feel.
If you’re waiting for the Wooscripter to be released then I can definitely say that things are getting closer. I thought I was weeks away 6 months ago, so no promises, but I’m in the bug fixing phase at the moment, and also adding some user features that will make the tool easier to use and significantly more stable.
Finally, thanks to Michele Ciribifera for coming up with this lovely object!
He-he, I’m going to have to make this shape in MY procedural modelling tool now Dom. http://thesymbiosisofsoftwareandhardware.blogspot.ie/2013/06/approaching-phase-2.html
Found a higher-res photo here: http://www.flickr.com/photos/faun070/8905516496/in/set-72157633850808882/
Looks like extruded aluminium box section. Not sure what the fixings are but I can see two supports above the nearest end.
Made
https://plus.google.com/photos?pid=5971480272331031506&oid=101847136544348139473
Barely any lighting model in my (real-time) engine, no surface properties either. Rendering is only a secondary goal to the procedural modelling.
I can’t see that image, do we need to be in the same circles? Very interested to have a look.