This C++ program generates smoothly-evolving textures by blending a user-specified set of images. With the right source material, this can result in animations with a "waving" or "breathing" feel, as seen in this example.
The only external dependency is OpenCV for image processing and rendering.
Usage:
# Install OpenCV dependency (on macOS). brew install opencv # Build the executable. mkdir -p build cmake -S . -B build cmake --build build -j 8 # Run in real-time mode (assuming an "images" folder). # Quit by pressing Ctrl-C in the terminal. build/undula --images_path images/ # Run with a fixed random seed for repeatability. build/undula --images_path images/ --seed 1234567890 # Change the animation speed by a factor. build/undula --images_path images/ --speedup 2.5 # Run in offline mode to output a video (10 minutes at 30 frames per second). # The output video will be named after the random seed. mkdir -p recordings build/undula --images_path images/ --recordings_path recordings/ --record_mins 10 --record_fps 30