This series of projects are from the course CS8803 Procedural Content Generation that I undertook at Georgia Institute of Technology. The projects focus on utilizing procedural techniques to generate 3D assets/content. These projects use an array of techniques including Flood Fill Algorithm, Perlin Noise, Cellular Automata, Random Numbers, Implicit Surfaces, Marching Cube Algorithm, and Reynold's Flocking Principles to perform their respective tasks.
Project 1 deals with creating a 3D procedural dungeon using a grid-based approach; each tile describing either a room or a wall. Multiple steps of Cellular Automata is applied to the grid to ensure a cave-like appearance is generated in the grid. Using the flood-fill algorithm, the largest region is found, and the other disconnected regions' empty space is filled up. Finally, this grid is used to create a 3D dungeon by placing floors and walls where appropriate.
Project 2's goal is to create procedural buildings based on a few fundamental configurations in the form of a grid. These configurations include a building Footprint, and Vertical Profile. A variety of Footprints are predefined that describe whether a grid cell is empty or not. The Vertical Profile describes the height of each grid cell that the building can reach. Finally, based on a random seed, a Footprint and its corresponding Vertical Profile are selected. Based on the selected configuration, the 3d walls are placed. After placing the walls, I place windows, roofs, chimneys, and doors randomly based on appropriate locations (For Example: Doors on the ground floor).
Project 3 shifts its focus into creating a vehicle (particularly, a ship) using implicit surfaces. The body of the ship is described by an array of implicit functions that describe spheres, and rounded cuboids. These carefully placed implicit surfaces are "added" together using implicit surface boolean logic, and finally the Marching Cubes algorithm is run to create the mesh of the ship body.
The goal of Project 4 is to learn about procedural animation based on particle systems. This assignment is based on the simulated flocking work of Craig Reynolds. There are 4 pivotal forces that are the principles of Reynold's flocking that include Centering Force, Wandering Force, Velocity Matching, and Collision Avoidance. The key to successfully simulate flocks is the implementation and balancing of these forces i.e. their weightages.