Daniel Farnham

← Back to Portfolio

Heart Garden

Role: Environment & Technical Lead

Created an immersive environment that dynamically responds to a user’s heart coherence, using real-time data to drive interactive visuals.

Team Size: 7
Time Spent on Project: 3 months
Mark Awarded: 88/100

My Contributions:

Summary

This was a consultancy group project where we were asked to expand and improve the Heart Garden, an interactive environment which reacts to the users heart data, created in Unreal Engine. I led both the technical development and client communication aspects of this project. On the technical side, I created several key environment features, including a dynamic water system, reactive foliage (grass, trees, flowers), and an interactive bell. On the communication side, I worked closely with the client converting loose ideas into a final, polished product, implementing their feedback throughout.

Heart Garden connects to emWave Pro software via TCP, receiving real-time heart data from a sensor clipped to the user's earlobe. The software calculates a coherence value between 0 (stressed) and 1 (calm) - this is designed for therapy sessions, where users can see their emotional state visualised in the changing environment. Both clients were very pleased with the result and even mentioned the potential for another academic paper based on this version of Heart Garden. Their original paper found here was written before the extension of Heart Garden.

Water

To create a smooth transition between calm and stressed states, I used dynamic material instances controlled by a Lerp node, with coherence as the alpha. As coherence drops, the water material gradually changes to be darker, murkier and more agitated by changing parameters like opacity, normal intensity, distortion and panning speed. When coherence rises, it changes back to a bright, clearer surface. This change is improved by the skybox, which becomes grey and cloudy at low coherence, and then changes to a clear blue sky with bright sunlight as coherence increases, shown in the background of the video below.

Bell

To create a realistic swinging effect for the bell, I used a sine wave to simulate the oscillation and a lerp node to control its amplitude, with coherence as the alpha. When coherence is high (> 0.7), the bell slows down and eventually stops. As coherence drops, the Lerp gets closer to the bell's max rotation, making the swing higher and more intense. This is much simpler than my original method of using an animation timeline and allows for easier control of amplitude and a gradual slow down at high coherence.