The presented project consists of a Three.js-based interactive 3D SCUBA diving experience. It takes inspiration from the Endless Ocean series by ARIKA and aims to be an open-source alternative that captures its characteristic chill underwater style and vibe.
- 📄 Technical Report (PDF) – Detailed documentation covering setup and implementation details.
- 🖥️ Presentation (PDF) – A brief slide deck featuring screenshots and project highlights.
The project is runnable directly from the browser at this link.
The controls are the following:
- Use the Mouse Cursor to look around;
- Hold the Left Mouse Button to move;
- Press the F key to turn the flashlight on/off;
- Press the H key to show/hide the FPS counter.
Any type of feedback is greatly appreciated!
-
Install Node.js (skip if already installed)
-
Follow the official installation instructions.
-
Verify that Node.js is installed correctly:
node --version
-
-
Clone the Repository
- HTTPS:
git clone https://github.com/SapienzaInteractiveGraphicsCourse/final-project-astrographics_industries.git
- SSH:
git clone git@github.com:SapienzaInteractiveGraphicsCourse/final-project-astrographics_industries.git
- HTTPS:
-
Enter the Repository Folder
cd ./final-project-astrographics_industries -
Install the Required Dependencies
npm install
-
Run the Local Server
npx vite
-
Open the App in a Browser
Navigate to
http://localhost:5173.If the terminal displays a different port, navigate to the URL shown there instead.
-
Scuba Diver: "Nanando diver - Underwater" by Marco Lopez, licensed under Creative Commons Attribution.
-
Marine Creatures:
- "Emperor Angelfish (Update v2)" by Mikhail Nesterov, licensed under Creative Commons Attribution.
- "coral fish" by polyplant3d, licensed under Creative Commons Attribution.
- "Model 99A - Whale Shark" by DigitalLife3D, licensed under Creative Commons Attribution-NonCommercial.
- "Killer Whale" by Trouvaille, licensed under Creative Commons Attribution.
- "Manta Ray Birostris" by Violaine, licensed under CC Attribution-NonCommercial-ShareAlike.
-
Scenery:
- "William H McAllister Tugboat 1963" by garyle802, licensed under Creative Commons Attribution.
- "fish tank ornament" by kokfyt, licensed under Creative Commons Attribution.
- "Rock Mountain with cave (realistic version)" by Jungle Jim, licensed under Creative Commons Attribution.
- "Artificial reef, Prado, Marseilles, France" by Septentrion, licensed under Creative Commons Attribution.
- "Stránská rock 1" by 3dhdscan, licensed under Creative Commons Attribution.
- "NGI 000 - WP_A_8989" by VIRKM, licensed under Creative Commons Attribution.
- "Kelp Plant" by maxliebscher, licensed under CC Attribution-NonCommercial-ShareAlike.
- "Flat Large Rock" (used as corals base rock), generated with Meshy AI.
- Corals:
- "Giant barrel sponge monitoring DAX-AQS1-2019" by Lauren Olinger PhD, licensed under Creative Commons Attribution-NonCommercial.
- "Pocillopora eydouxi" by thehydrous, licensed under Creative Commons Attribution-NonCommercial.
- "Coral Piece" by Sharon Kunne, licensed under Creative Commons Attribution.
- "Fan Coral Med" by Valery.Li, licensed under Creative Commons Attribution.
- "crescent moon coral" by gavinpgamer1, licensed under Creative Commons Attribution.
- "Spined Sea Coral" by RubaQewar, licensed under Creative Commons Attribution.
Embedded textures within the models' .glb files were used whenever available.
Supplementary textures were sourced primarily from TextureLabs, while the roughness, normal, and Ambient Occlusion (AO) maps for the seabed were provided by ambientCG.
- Music:
- "Deep Ocean Dream", generated with Suno AI (Model v4).
- Sound Effects:
- "Underwater Deep" by u_xg7ssi08yr from Pixabay.
- "Scuba_bubbles.mp3" by sbvitug, licensed under Creative Commons 0.
- Loading Screen UI Click by Universfield from Pixabay.
- Splash Sound by Universfield from Pixabay.
- Flashlight Click by morganpurkis (Freesound) from Pixabay.
The light and dark versions of the OpenSCUBA logo were generated using ChatGPT.
The original source code and the overall compilation of this project are licensed by its author under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Anyone is free to use, edit, and share this project, provided that proper credit is given, no commercial use is made, and any derivative works are shared under the same license.
Note on Third-Party Assets: This license applies to the project "as is" and its original code. It does not override or re-license the third-party 3D models, textures, sounds, or open-source libraries used within. All third-party assets retain their original respective licenses as detailed in the Assets Credits section above.

