This repository contains a presentation for the scientific computing course project at OIST, using Manim Community - the mathematical animation engine made famous by 3Blue1Brown.
- Overview
- Prerequisites
- Installation
- Project Structure
- Usage
- Rendering Individual Scenes
- Creating the Complete Presentation
- Editing Guide
- Troubleshooting
- Contact
This presentation demonstrates a computational pipeline for analyzing liquid nitrogen-water instability patterns using Python. The project showcases:
- Computer Vision: Circle detection using Hough transforms and geometric algorithms
- Coordinate Transformations: Converting Cartesian grids to polar coordinates
- Signal Processing: Angular binning and intensity profile analysis
- Data Visualization
Presentation Duration: ~3 minutes
Target Audience: Technical/scientific community
Key Technologies: Python, OpenCV, SciPy, NumPy, Manim
Before running this project, ensure you have:
- Python 3.8+ - Download here
- FFmpeg - For video rendering
- Windows: Download from gyan.dev
- Mac:
brew install ffmpeg - Linux:
sudo apt install ffmpeg
- LaTeX (Optional) - For mathematical symbols
- Windows: MiKTeX
- Mac:
brew install --cask mactex - Linux:
sudo apt install texlive-full - Note: Current version uses Text instead of MathTex, so LaTeX is optional
All required packages are listed in requirements.txt
git clone https://github.com/ayman-alashkar/SC_presentation.git
cd SC_presentation- Click the green "Code" button on GitHub
- Select "Download ZIP"
- Extract the ZIP file to your desired location
- Open terminal/command prompt in that folder
# Windows
python -m venv venv
venv\Scripts\activate
# Mac/Linux
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtmanim --versionShould display: Manim Community v0.18.x or similar
SC_presentation/
β
βββ scenes/ # Scene source files
β βββ scene1.py # Introduction with titles
β βββ scene2.py # Circle detection method
β βββ scene3.py # Polar transformation
β βββ scene4.py # Results and conclusions
β
βββ data/ # Experimental data
β βββ d4_T20_1.JPG # LN2-water experimental image
β
βββ media/ # Generated videos (created after rendering)
β βββ videos/
β βββ scene1/
β βββ scene2/
β βββ scene3/
β βββ scene4/
β
βββ merge_list.txt # FFmpeg concat file for merging
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ COMPLETE_PRESENTATION.mp4 # Final merged video (after rendering)
-
Activate virtual environment (if not already active)
# Windows venv\Scripts\activate # Mac/Linux source venv/bin/activate
-
Render a test scene (low quality, fast)
manim -pql scenes/scene1.py IntroSceneWithTitles
-
Check the output
- Navigate to:
media/videos/scene1/480p15/ - Open
IntroSceneWithTitles.mp4 - If it plays, you're all set! π
- Navigate to:
manim -pql scenes/scene1.py IntroSceneWithTitlesDuration: ~30-35 seconds
Content: Title card, experimental setup, sampling strategy, signal unwrapping
manim -pql scenes/scene2.py CircleDetectionSceneDuration: ~42-45 seconds
Content: Hough circles, 3-point geometric fallback method
manim -pql scenes/scene3.py PolarTransformSceneDuration: ~70-75 seconds
Content: Cartesian to polar grid transformation, angular binning
manim -pql scenes/scene4.py ResultsSceneDuration: ~25-30 seconds
Content: Intensity vs angle plot, peak detection, conclusions
Step 1: Render all scenes in high quality
manim -pqh scenes/scene1.py IntroSceneWithTitles
manim -pqh scenes/scene2.py CircleDetectionScene
manim -pqh scenes/scene3.py PolarTransformScene
manim -pqh scenes/scene4.py ResultsSceneStep 2: Verify merge_list.txt has correct paths
file 'media/videos/scene1/1080p60/IntroSceneWithTitles.mp4'
file 'media/videos/scene2/1080p60/CircleDetectionScene.mp4'
file 'media/videos/scene3/1080p60/PolarTransformScene.mp4'
file 'media/videos/scene4/1080p60/ResultsScene.mp4'
Step 3: Merge all scenes
ffmpeg -f concat -safe 0 -i merge_list.txt -c copy COMPLETE_PRESENTATION.mp4Result: COMPLETE_PRESENTATION.mp4 in your project root!
pip install moviepy
python merge_scenes.py# Find:
color=BLUE
# Change to:
color=RED, color=GREEN, color=YELLOW, etc.# Make animation faster:
run_time=2 β run_time=1
# Add more pause for narration:
self.wait(2) β self.wait(4)# Find:
Text("Thank You!", ...)
# Change to:
Text("Thanks for Watching!", ...)# Make text bigger:
font_size=36 β font_size=48
# Make lines thicker:
stroke_width=3 β stroke_width=6-pql: Low quality (480p, 15fps) - Fast for testing-pqm: Medium quality (720p, 30fps) - Good balance-pqh: High quality (1080p, 60fps) - Final export
Solution:
- Make sure virtual environment is activated (look for
(venv)in terminal) - Try:
python -m maniminstead of justmanim
Solution:
- Check file paths are correct
- Use forward slashes
/not backslashes\ - Verify file exists:
dir scenes\scene1.py
Solution:
- Check
merge_list.txtformat (must havefilekeyword) - Use forward slashes in paths
- Wrap paths in single quotes:
file 'path/to/video.mp4'
Solution:
- Current version uses
Text()instead ofMathTex()- no LaTeX needed! - If you want LaTeX: Install MiKTeX/MacTeX and restart VS Code
Solution:
- Check image path in scene1.py:
data/d4_T20_1.JPG - Verify image exists in data folder
- Try absolute path if relative path doesn't work
- Manim Documentation: https://docs.manim.community/
- Tutorial Videos: https://www.youtube.com/c/TheoremofBeethoven
- Example Gallery: https://docs.manim.community/en/stable/examples.html
- Community Discord: https://www.manim.community/discord/
# 1. Make changes to a scene file
# 2. Render quickly in low quality
manim -pql scenes/your_scene.py SceneClassName
# 3. Check output in media/videos/...
# 4. Repeat until satisfied# 1. Render all scenes in high quality
manim -pqh scenes/scene1.py IntroSceneWithTitles
manim -pqh scenes/scene2.py CircleDetectionScene
manim -pqh scenes/scene3.py PolarTransformScene
manim -pqh scenes/scene4.py ResultsScene
# 2. Merge into complete video
ffmpeg -f concat -safe 0 -i merge_list.txt -c copy COMPLETE_PRESENTATION.mp4
# 3. Your final presentation is ready!Created by: Ayman Alashkar
Institution: CFF Unit - OIST (Okinawa Institute of Science and Technology)
Topic: Nitrogen-Water Instability Pattern Analysis
Animation Framework: Manim Community Edition
Date: December 2025
This project is created for educational and research purposes.
If you find issues or want to improve this presentation:
- Create a detailed issue describing the problem
- Fork the repository
- Make your changes
- Submit a pull request
For questions about this presentation or the research:
- Email: a.alashkar@oist.jp
- Research Group: CFF Unit
Special thanks to:
- Professor Kenji Doya for guiding me through the Scientific Computing course
- Manim Community for the excellent animation framework
- 3Blue1Brown for inspiring mathematical visualization
- CFF Unit for supporting this research
Enjoy the presentation! π