Procedural Rock Piles into Contact
This is a video of the pipeline of using the command line tool that was developed, called ‘Mesh Rockture’, and also showing some basic scenes at the end.
This is another programming project that we had. We were to choose any CGI technique and implement it. I chose a publication from 2009 Pacific Graphics Conference Proceedings called, “Procedural Generation of Rock Piles using Aperiodic Tiling”, by Peytavie, A., Galin, E., Merillou, S. and Grosjean, J. I found the idea of generating piles of rocks into contact in any shape, quite interesting. Their output was also quite impressive, it can be seen here.
Even though I started off by following the implementation described in their paper, soon I realised that a great part of it deals with optimisation, rather than the actual technique. At that point I had to make the decision of going my separate way, but due to the fact that part of their implementation was dependent on the optimisation process, namely the voxelisation, I had to develop around that and find a solution which would achieve similar results. At the end I managed to get results very similar to theirs without going through the tilling process and without the overhead of voxelisation. I managed to do this by deriving a simple spheroidal erosion process which mimics the results produced by the spheroidal erosion process described in their paper, which relies on voxels and a discretised voronoi.
The technique described in a few generalised steps is:
- Distribution of seed points within a mesh volume
- For each seed point creating an implicit voronoi cell fucntion and an implicit sphere function with radius equal to the closest half-plane.
- Blending between the two values (voronoi & sphere) based on the distance of the current sample point (Marching cubes alg) to the closest mid-point
- Applying surface roughness using classical Perlin Noise.
- Intersecting with container (mesh bounding box) to avoid holes.
- Most above steps are done within the processing stage (the main algorithm) which is called numerous times by the Marching Cubes algorithm. Thus Meshing.
- When the mesh(es) is complete export to an .OBJ file.