I was contracted as a Technical 3D Artist to the work with the QUT Cube team creating ‘The Living Reef’, an immersive underwater interactive experience of the Great Barrier Reef. I had a background in urban visualisation and an interest in procedural tool creation. In 2018 I wrote a tool to procedurally generate roads and buildings for urban infrastructure visualisations and when asked whether I could find solutions for generating coral I replied “I can and I must!”  

The Living Reef Credit: Ryan Bargiel via ArtStation

 

Illustrations of some of the coral species requiring generation.

The problem

The first thing I learned about coral is that there are a LOT of kinds, coral reefs are like an alien planet to me. So initially I focused on a ‘simple’ branching coral model, like a tree without leaves.

I started looking at the classic L-System where code can iterate over a rule and create really organic results. You can add some random values for variation but similar to my experiments with parametric modelling it is difficult to control and direct.

Within a production environment there will likely be a direction that says: “We want growth happening here, but we cannot have any growth happening in this area”. That sort of direction can be a show stopper if you aren’t prepared for it.

You can see my some of my procedural generation examples here: https://www.youtube.com/watch?v=WhrYrgHBXeY

 

L-System

Inspiring generation reference. Credit: Kevin McNamara via YouTube

Finding solutions

Much of my ‘research’ is done by entering a rabbit hole of YouTube videos, scouring old 3D forums and searching the names of Technical Directors from animated film credits.

In my attempts to gain more control over model generation I found some technical examples by Kevin McNamara. These days he is CEO for an autonomous data generation company in Palo Alto. At the time he made the coral generation samples that I saw, he may have been working an internship as a Technical Director for Pixar Animation Studios. This was in 2011 and I guessed that I was seeing a few research techniques that would be used for the Finding Nemo sequel, Finding Dory (2016).

Those samples were very inspiring and while researching I learned about the ‘Space Colonisation Algorithm’.

 
Leaf venation Credit: www.marcinignac.com/experiments/space-colonization/

Leaf venation Credit: www.marcinignac.com/experiments/space-colonization/

Simulating crowds based on a space colonisation algorithm. Credit: A.L. Bicho via YouTube.

Simulating crowds based on a space colonisation algorithm. Credit: A.L. Bicho via YouTube.

Space colonisation, but not as we know it.

My first encounter with a ‘Space Colonisation Algorithm’ was in the mid 2000’s where it was introduced to model leaf patterns and the branching architecture of trees. I worked in the construction visualisation sector and tree models were an important and time consuming part of the job. The software using these algorithms wasn’t open to be edited and utilising these algorithms was not in the scope of either my role or the 3D application I was using at that time.

 
Algorithmic environments were grown for the Machine World in Matrix Revolutions (2003)

Algorithmic environments were grown for the Machine World in Matrix Revolutions (2003)

Space colonisation algorithms have been used to simulate crowds where it mimics collision avoidance, relationship of crowd density and has proposed methods of modelling crowd control. Also in the realm of visual effects different inter-connected ecosystems have been simulated to create environments like the machine world in ‘The Matrix Revolutions’ (2003).

 

Variations in the amount and availability of food.

Traditionally when you needed to model an object which conforms to a given dimension or volume, you would manually create and move the vertices and polygons of a model that satisfies one single outcome, and while you try to fit a model to a space, it is done so solely by eye because 3D objects do not collide with each other the way real world objects do.

 

Initial coral meshes imported into the Unity engine.

Pillar coral variants created by moving the ‘food’ away from the coral, making it ‘reach’.

Being able to use a ‘Space Colonisation Algorithm’ means initially defining the volume that a model can grow within and then adding extra properties such as the availability of ‘food’ and what happens when the algorithm reaches that food. This gives the ability to quickly simulate variations on a model that satisfy the given limitations.

By randomising certain properties this method can (and does) vary wildly. The model performs in a much more organic way and ultimately I can produce an end product quicker, more faithfully and with an element of surprise.

 

Various bulbous growths I have generated with various procedural techniques.

More more more!

Read Allan Bishop’s blog post on ‘The Living Reef’ which focuses on simulating over 700 A.I controlled fish:
www.allanbishop.com/the-living-reef/

Visit Ryan Bargiel’s Artstation where he shares a close up look into how much attention the different species of fish and their environments were given:
www.artstation.com/artwork/2x6yyB
www.artstation.com/artwork/yb51b9
www.artstation.com/artwork/k48vK0

And on the tech arts side I show a video of the interoperability of 3ds Max and Side FX using the Houdini Engine for Max:
www.youtube.com/watch?v=6EPrSVht0Po
And interop for Unity with Runtime access to Houdini:
www.youtube.com/watch?v=j7xozBKc1fs

 
 

Contracts / Commissions

If you would like to contact me regarding a project, please do so at: lucasmilner3d@gmail.com