Voxel-Based Sand Simulation

My master's thesis research was focused on the development of a novel, real-time, GPU-based simulation of fine-grained materials, such as sand, soil, and dirt. In our approach, we use a 3D voxel grid to track the motion and evolution of granular materials in a virtual environment. With a voxel-based approach, we are able to simulate complex, three-dimensional effects that are difficult, if not impossible, in previous heightmap and particle-based approaches. To our knowledge, this is the first voxel-based approach to simulating sands and soils in real-time computer graphics applications.

This research project was done in collaboration with Serious Labs, a company that develops interactive training simulators for high-stake jobs the construction, mining, and oil and gas industries. The research project was also featured on NSERC's homepage in October 2014, where they released a video interview with my supervisor, Dr. Howard Hamilton, and our liason at Serious Labs.

My master's thesis can be found here: PDF


Details

Tech:

  • C++
  • HLSL
  • Direct3D 11
  • DirectCompute
  • DirectInput
  • Windows API
  • Arachnid II Game Engine

Features:

  • Voxel-Based Sand Simulation
  • Soil-Terrain Interaction
  • Soil-Object Interaction
  • GPU Implementation
  • Deformation
  • Advection

Features (cont'd):

  • Soil Erosion
  • Marching Cubes
  • Triplanar Texturing
  • 5,000 Lines of Code
  • Real-Time Simulation

Videos


Gallery

A rigid block pouring a quantity of excavated sand back onto the ground. In our voxel-based approach, quantities of sand and soil can be piled on an arbitrary number of rigid objects

2015

A rigid block digging into a quantity of voxel-based sand and lifting it out of the ground. Some of the sand above the block slides off the edges of the block due to slippage and erosion

2015

A rigid block pushing horizontally through a landscape filled with voxel-based sand. A mound of soil is carried in front of the block as it cuts through the sand-filled landscape

2015

A rigid block pushing horizontally through a landscape filled with voxel-based sand. Notice that the rigid block creates a wake in its path as it is cuts through the sand-filled landscape

2015

The result of dropping a quantity of voxel-based sand on multiple rigid blocks with varying heights. Notice that the surface of the sand above each block connects seamlessly with the sand on the ground

2015

The result of dropping a quantity of voxel-based sand on a chunk of Marching Cubes terrain. To our knowledge, this is the first real-time sand/soil simulation that can be coupled with voxel-based terranis

2015