Here’s an not-so-satisfying GIF (that takes time to load) and a few screenshots:
I recommend you, dear reader, to watch the screen recording here: https://ru2saig.github.io/assets/recording.mp4.
The aquarium uses Raylib. Compile and install it (as a static library). For the latest information, check https://github.com/raysan5/raylib?tab=readme-ov-file#build-and-installation.
sudo apt install build-essential git libasound2-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libxcursor-dev libxinerama-dev libgflw3-dev # Debian based systems
git clone https://github.com/raysan5/raylib.git raylib
cd raylib/src
make PLATFORM=PLATFORM_DESKTOP GRAPHICS=GRAPHICS_API_OPENGL_33 -j$(nproc)
sudo make install
Make sure you have a C/C++ compiler that supports at least C++20.
git clone https://github.com/ru2saig/fishy-merry-go-round
cd fishy-merry-go-round
make -j$(nproc)
# binary is main.out
With a scanner, print out a few copies of the templates found under resources/templates/.
Run the aquarium software suite with:
cd /path/to/fishy-merry-go-round/
MESH_GL_VERSION_OVERRIDE=3.3 ./main.out
python scanner.py --cam 2 --path resoures/textures/ # running the scanner application
For calibration, run scanner.py and adjust lights in the scanner box until the entire fish is visible in the preview window. Use the “s” key to take and save the image. The scanned fish will be visible in the screen, given sufficient space and time for it to load. It’s usually instantaneous. To exit the scanning, hit “q”.
A maximum of about 200 fish are visible well, on a 16:10 screen. Too many, and it can become quite the school!
Check release for the zip files; choose one and unzip the files under resources/textures/. Watch as the fish start spawning, one-by-one!
Here are the steps for that:
cd /path/to/fishy-merry-go-round/
unzip /path/to/MakerFaire23-<choose which one>.zip -d resources/textures/
# now, start with:
export MESH_GL_VERSION_OVERRIDE=3.3 # if using a Raspberry Pi
./main.out # MUST run from the root of the source code
Simply remove everything under resources/textures/ (zip them up somewhere) and run it again. TODO: Working on a better system for this, which automagically clears the fish.
All of the art in the zip files, and the textures under resources/textures is licensed under CC BY-SA 4.0. To view a copy of this license, visit https://creativecommons.org/licenses/by-sa/4.0/.
The fish templates were created by @kottimira_worma.
caustic.fs is based heavily on Beneath the Sea by zel. Distributed with a CC BY-NC-SA 3.0Attribution-NonCommercial-ShareAlike 3.0 Unported. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/3.0/.
rays.fs is based heavily on Light rays by ElusivePete.
All the files in the zip’s were templates coloured in by the visitors of MakerFaire Hyderabad 2023. One love <3 to everyone who contributed a fish (or two).
T-Works for hosting the event and exhibit, and everyone who participated. Y’all are the best.