Emerge

by | Apr 3, 2018 | Opinions, Rendering, Software, Thoughts

I’ve been taking a computer science course this semester, CPSC 607 Biological Computation, and I’ve learned by studying nature’s processes we can simulate different emerging systems like ants colonies, swarms and cells. The key is ‘simulate’. Although we have an understanding of how some of these biological systems function, the inner workings of biological coding are still out of reach. Genetic algorithms, cellular automata and other approaches are only guesstimations from observing and replicating behaviour.

We needed to create a class project that incorporated biological computing in some way whether that was an approach that tweaked existing methods or built upon a theory or implementation. I chose to attempt to simulate organic behaviour using a PBR pipeline approach in Unity. My goal was to render at the highest possible quality in a procedural way so that simulations could be achieved that are closer to reality or what we perceive it to be.

I experimented with vertex mesh manipulation for animation, PBR shaders for translucency and sub-surface scattering as well as HDRI environment maps for lighting. After struggling to implement a complex cellular growth algorithm, I stumbled across the Reaction Diffusion algorithm that appears in chemistry, biology and physics. Keijiro Takahashi provided Unity source code via GitHub, an excellent implementation, that I applied to my organic shapes as well as title text to produce some wonderful textures and pattern animations. In the end, I pieced together several experiments to create a short real-time rendered film called ‘EMERGE’ that I screen captured from my workstation and presented to my class as well as at the Computer Science Showcase. I used a simple sphere and manipulated it via plugins and code, triggering animations using Unity’s Timeline. I also leveraged Cinemachine creating several virtual cameras to provide a cinematic feel. Unfortunately, Unity’s audio controls were lacking for a timeline based flow so I synced the audio in After Effects for the final video.