Inspiration
The project is loosely based on the Chinese creation mythology, where the world is built by the giant, Pan Gu, with five traditional Chinese elements. We are also inspired by previous experiments with particle sandbox toys in the vein of the classic Falling Sand games. We started out with a vision of creating a large scale, fun and impressive visual experience simulating physical particles or fluids.
What it does
It is a virtual playground where players play as Pan Gu, a progenitor god of ancient Chinese mythology, and use different gestures to manipulate massive amounts of GPU generated particles. There are 5 types of particles representing the 5 elements, different reactions occur when two different types of particles collide with each other. We also use players' hand-movement as an instrument to let them compose and play their own music while playing in VR. Using spheres as physical particles, the interaction of the user with the spheres causing their collision, and morphing from one element to another.
How we built it
We started developing our ideas by brainstorming and creating the experience journey map in Miro Board. The team also explored different interactions and sound effects to improve the immersive and engagement for the experience. With every interaction, we hope we can spark a positive emotion from our players.
Wei focused on interaction design and experimenting different form of hand gestures and implemented them using Unity.
Rustin converted a reference OpenGL implementation of SPH on the GPU into a version targeting Unity's Compute Shader API, then implemented a system for processing the gesture input data as part of the particle system update loop. Once these basic interactions were finished, more types of elements and interactions between elements were programmed to create the feeling of a dynamic environment where particles react to create interesting emergent interactions.
Julia created 5 elements in Tilt Brush to populate in the environment. Dawn used Photoshop to design the Interaction Tutorial UI and used Shader Graph to create some materials under LWRP for the experience.
Challenges we ran into
Originally we were going to target Unity's Lightweight Render Pipeline, but ran into poor support for previewing scenes on Oculus Quest and had to abandon LWRP halfway through. Most of Saturday ended up being wasted on first a C# Job System implementation of SPH with improved spatial partitioning, and then a hybrid method where neighbor lists are calculated on the CPU and sent to the GPU every frame, but both methods actually ended up slower than a simple brute force implementation on the GPU!
Accomplishments that we're proud of
The interaction between different elements and the four gestures used to control these particles are insanely satisfying. We managed to have hall 5 types of particles and 4 ways of interaction working (Thanks to our programming powerhouse, Rustin). Our original design has really good outcomes. Another accomplishment we are proud of is that you can generate different beats and sound and compose your own music simply with your hand-movements. It really brings another layer of drama and emotion to the already awesome particle interactions.
What we learned
Implementing particles with limited lifetimes that can be removed from the GPU compute buffer at runtime, as well as particles that dynamically spawn other particles, originally seemed like it might be out of scope for a 2.5 day hackathon, but the functionality turned out to be fairly straightforward using an AppendStructuredBuffer. Implementing particle interactions once the basic physics simulation was working turned out to be deceptively simple and we saw some really interesting emergent behavior with relatively simple rules.
What's next for Pan Gu
Pan Gu will have the ability to create terrain, weather, ocean and animals out of the 5 elements. Our player will also have the ability to teleport and move higher and far away to see their creation. Further than that, this will also be a multiplayer experience, where the other player will play as "human" and seeing how Pan Gu is manipulating the 5 elements in their world.
Built With
- c#
- oculus-gear-vr
- photoshop
- tilt-brush
- unity


Log in or sign up for Devpost to join the conversation.