|
1 | | -# EfficientManim v2.0.1 |
| 1 | +# 🌿 EfficientManim — The Ultimate Node-Based Manim IDE |
2 | 2 |
|
3 | | -A visual, node-based Manim IDE with AI-powered code generation via Google Gemini. |
| 3 | + |
4 | 4 |
|
5 | | ---- |
6 | | - |
7 | | -## Features |
8 | | - |
9 | | -- **Node Graph Canvas** — Visually compose Manim scenes by connecting Mobject and Animation nodes |
10 | | -- **AI Code Generation** — Generate Manim code from natural language prompts using Gemini AI |
11 | | -- **Live Mobject Preview** — Automatically renders a PNG preview when you select and modify a node |
12 | | -- **Video Rendering** — Render full scenes to MP4/WebM via Manim with one click |
13 | | -- **Manim Class Browser** — Searchable palette of all built-in Manim classes |
14 | | -- **Code Snippet Library** — Load reusable templates directly into the editor |
15 | | -- **GitHub Snippets** — Clone and browse `.py` files from any GitHub repository |
16 | | -- **LaTeX Studio** — Live LaTeX preview with API-based rendering |
17 | | -- **AI Voiceover (TTS)** — Generate narration audio via Gemini TTS and sync it to animation nodes |
18 | | -- **VGroups** — Group Mobjects visually; VGroup code is auto-generated |
19 | | -- **Usage Tracking** — Recents pane shows your most-used Mobjects and Animations |
20 | | -- **Custom Keybindings** — Every action is remappable |
| 5 | +**🌈 Create mathematical animations visually with the power of Python, AI, and Production-Grade Type Safety.** |
21 | 6 |
|
22 | 7 | --- |
23 | 8 |
|
24 | | -## Requirements |
25 | | - |
26 | | -- Python 3.10+ |
27 | | -- [Manim Community Edition](https://www.manim.community/) |
28 | | -- PySide6 |
29 | | -- `google-genai` (for AI features) |
30 | | -- `pydub` (optional, for audio duration sync) |
31 | | - |
32 | | -Install dependencies: |
33 | | - |
34 | | -```bash |
35 | | -pip install manim PySide6 google-genai pydub |
36 | | -``` |
| 9 | +## 🚀 Key Features |
| 10 | + |
| 11 | +### 🎬 Node-Based Visual Workflow |
| 12 | +- **Visual Editor:** Drag-and-drop Mobjects and Animations with intuitive wiring |
| 13 | +- **Infinite Canvas:** Pan and zoom freely to manage large node graphs |
| 14 | +- **Live Preview:** Real-time static previews of individual nodes |
| 15 | +- **Smart Connections:** Automatic wire validation and scene synchronization |
| 16 | + |
| 17 | +### 🎬 Multiple Scenes |
| 18 | +- Manage multiple scenes per project in the **Scenes** tab |
| 19 | +- Create, rename, delete, and switch between scenes — each with its own node graph |
| 20 | +- Scene state auto-saved and restored when switching |
| 21 | + |
| 22 | +### 📦 VGroup Utility |
| 23 | +- Select Mobject nodes → click **Create VGroup** in the **VGroups** tab |
| 24 | +- VGroup code automatically generated: `group_1 = VGroup(circle_1, square_1)` |
| 25 | +- Groups shown in expandable tree view |
| 26 | + |
| 27 | +### 🤖 Gemini AI Code Generation |
| 28 | +- Describe animations in plain English — AI generates Manim code |
| 29 | +- AI code parsed into editable nodes with correct wiring |
| 30 | +- Streaming responses with real-time feedback |
| 31 | + |
| 32 | +### 🎙️ AI-Powered Voiceover Studio |
| 33 | +- Gemini TTS Integration with multi-voice support (Zephyr, Puck, Fenrir, etc.) |
| 34 | +- Auto-sync animation duration to audio length |
| 35 | + |
| 36 | +### 🐙 GitHub Snippet Loader |
| 37 | +- Clone any GitHub repository into `~/.efficientmanim/snippets/` |
| 38 | +- Browse `.py` files; double-click to load into AI panel as snippet |
| 39 | +- All cloned repos automatically repopulated on startup |
| 40 | + |
| 41 | +### ⭐ Recents Panel |
| 42 | +- Top-5 most-used Mobjects + top-5 most-used Animations tracked per session |
| 43 | +- Persisted to `~/.efficientmanim/usage.json` |
| 44 | +- Double-click to instantly add to canvas |
| 45 | + |
| 46 | +### ⌨️ Editable Keybindings |
| 47 | +- **Help → Edit Keybindings…** opens the keybindings editor |
| 48 | +- Double-click any shortcut to change it |
| 49 | +- Duplicate detection; changes persisted to QSettings |
| 50 | + |
| 51 | +### 📁 Editable Project Name |
| 52 | +- Project name textbox in the top-right corner of the window |
| 53 | +- Rename your `.efp` file without leaving the editor |
| 54 | + |
| 55 | +### 📦 Portable Project Format (.efp) |
| 56 | +- Bundled images, sounds, and videos included |
| 57 | +- ZIP-based, cross-platform, easy to share |
| 58 | + |
| 59 | +### 🌓 Dark / Light Themes |
| 60 | +- Full dark mode with no white bleed-through |
| 61 | +- Switch via the theme button in the corner or Settings |
| 62 | +- QSS-based styling with ColorToken system |
| 63 | + |
| 64 | +### 🎨 Manim Class Browser |
| 65 | +- 60+ Manim classes in 8 categories (Geometry, Text, Graphs, 3D, Animations, etc.) |
| 66 | +- Search bar filters in real-time |
| 67 | +- Double-click or drag to add node to canvas |
| 68 | + |
| 69 | +### 🎬 Professional Video Rendering |
| 70 | +- Full scene export to MP4/WebM |
| 71 | +- Up to 4K resolution, 15–60 FPS, quality presets |
37 | 72 |
|
38 | 73 | --- |
39 | 74 |
|
40 | | -## Running the Application |
| 75 | +## 🏠 Home Screen |
41 | 76 |
|
42 | | -```bash |
43 | | -# Launch home screen |
44 | | -python home.py |
45 | | - |
46 | | -# Or launch the editor directly |
47 | | -python main.py |
48 | | -``` |
| 77 | +Run `python home.py` to see the home screen with recent projects. |
| 78 | +Run `python main.py` to skip the home screen and open the editor directly. |
49 | 79 |
|
50 | 80 | --- |
51 | 81 |
|
52 | | -## AI Configuration |
53 | | - |
54 | | -1. Go to **File → Settings** |
55 | | -2. Enter your **Google Gemini API Key** |
56 | | -3. Select the desired code generation and TTS models |
| 82 | +## ⌨️ Keyboard Shortcuts |
| 83 | + |
| 84 | +| Action | Shortcut | |
| 85 | +|--------|----------| |
| 86 | +| New Project | `Ctrl+N` | |
| 87 | +| Open Project | `Ctrl+O` | |
| 88 | +| Save Project | `Ctrl+S` | |
| 89 | +| Save As | `Ctrl+Shift+S` | |
| 90 | +| Exit | `Ctrl+Q` | |
| 91 | +| Undo | `Ctrl+Z` | |
| 92 | +| Redo | `Ctrl+Y` | |
| 93 | +| Delete Selected | `Del` | |
| 94 | +| Fit View | `Ctrl+0` | |
| 95 | +| Auto-Layout | `Ctrl+L` | |
| 96 | +| Export Code | `Ctrl+E` | |
| 97 | +| Copy Code | `Ctrl+Shift+C` | |
| 98 | +| Toggle Theme | `Ctrl+T` | |
| 99 | +| Edit Keybindings | `Ctrl+,` | |
| 100 | + |
| 101 | +All shortcuts are editable via **Help → Edit Keybindings…** |
57 | 102 |
|
58 | 103 | --- |
59 | 104 |
|
60 | | -## Rendering |
| 105 | +## 🛠️ Prerequisites |
61 | 106 |
|
62 | | -Any valid Manim `Scene` subclass renders correctly. The renderer dynamically detects the scene class in generated code — **no forced renaming, no hidden rewriting**. |
| 107 | +1. **Python 3.10+** |
| 108 | +2. **FFmpeg** — for video rendering (must be in PATH) |
| 109 | +3. **Git** — optional, for GitHub Snippet Loader |
| 110 | +4. **LaTeX** — optional, for local LaTeX rendering |
63 | 111 |
|
64 | | -When you export code to `.py`, the class name is preserved exactly as defined. When rendering via the Video panel, the correct class is detected and rendered transparently. |
65 | | - |
66 | | ---- |
| 112 | +## 📦 Installation |
67 | 113 |
|
68 | | -## Project Files |
| 114 | +```bash |
| 115 | +git clone https://github.com/pro-grammer-SD/EfficientManim.git |
| 116 | +cd EfficientManim |
| 117 | +pip install -r requirements.txt |
| 118 | +python home.py # Full experience with home screen |
| 119 | +# or |
| 120 | +python main.py # Open editor directly |
| 121 | +``` |
69 | 122 |
|
70 | | -Projects are saved as `.efp` files (ZIP archives containing graph data, assets, and code). |
| 123 | +Manual install: |
| 124 | +```bash |
| 125 | +pip install manim PySide6 google-genai pydub requests numpy |
| 126 | +``` |
71 | 127 |
|
72 | 128 | --- |
73 | 129 |
|
74 | | -## Themes |
| 130 | +## 📸 Screenshots |
75 | 131 |
|
76 | | -EfficientManim uses a clean **light mode** design. No theme switching; one consistent, professional interface. |
| 132 | + |
| 133 | + |
| 134 | + |
| 135 | + |
77 | 136 |
|
78 | 137 | --- |
79 | 138 |
|
80 | | -## License |
| 139 | +Made with lots of ❤️💚💙 by Soumalya a.k.a. @pro-grammer-SD |
81 | 140 |
|
82 | | -© 2026 Soumalya Das (@pro-grammer-SD) |
| 141 | +Discussions: https://www.reddit.com/r/manim/comments/1qck0ji/i_built_a_nodebased_manim_ide_with_ai_assistance/ |
0 commit comments