Boat and Sea Simulation

About the Project

I'm Anthony Pierson, and this is my final project for the CSCE 450 course. Inspired by maritime adventures from games like the Disney's "Pirates of the Caribbean" and "Sea of Thieves," I aimed to recreate the iconic look of a ship bobbing on the ocean with misty green terrain in the background.

Demo Video

Project Details

In this project, I've developed a boat and sea simulation using various programming techniques. The terrain is generated using static, 2D Perlin Noise, and the ocean surface is created with 3D Perlin Noise. A purchased 3D boat model is integrated into the environment.

Perlin noise, a gradient noise used for procedural texture generation, helps in creating natural-appearing textures on computer-generated surfaces. I've used Perlin noise in different dimensions to simulate various physical phenomena - the terrain and the ocean. For the terrain, the goal was to create a more rugged, varied elevation, while the ocean simulation focuses on capturing the fluidity and subtlety of water surfaces.

The terrain generation occurs once at the beginning of the simulation, whereas the ocean surface is dynamically generated in each frame, considering performance limitations and aiming for real-time rendering. The shaders I implemented are relatively simple, focusing on basic color variations based on angles and a straightforward fog model to give a sense of distance and depth.

The boat simulation involves a physics-based approach, where the hull is represented by points on a half-cylinder, interacting with the ocean surface. These points help in calculating the forces of buoyancy and gravity affecting the boat. I've used a linear approximation for buoyancy relative to the depth of each point. The boat's movement and stability are influenced by these calculations, taking into account the center of mass and the resultant force vectors.

I've included demonstrations of the simulation under various sea conditions to display the functionality and responsiveness of the model in different scenarios, such as calm and rough seas.