|
1 | | -# 🌿 EfficientManim — The Ultimate Node-Based Manim IDE |
2 | | - |
3 | | - |
4 | | - |
5 | | -[](https://ideacred.com/submissions) |
6 | | - |
7 | | -**🌈 Create mathematical animations visually with the power of Python, AI, and real-time collaboration.** |
8 | | - |
9 | | ---- |
10 | | - |
11 | | -## 🚀 Key Features |
12 | | - |
13 | | -### 🎬 Node-Based Visual Workflow |
14 | | -- **Visual Editor:** Drag-and-drop Mobjects and Animations with intuitive wiring |
15 | | -- **Infinite Canvas:** Pan and zoom freely to manage large node graphs |
16 | | -- **Live Preview:** Real-time static previews of individual nodes |
17 | | -- **Smart Connections:** Automatic wire validation and scene synchronization |
18 | | - |
19 | | -### 🎬 Multiple Scenes |
20 | | -- Manage multiple scenes per project in the **Scenes** tab |
21 | | -- Create, rename, delete, and switch between scenes — each with its own node graph |
22 | | -- Scene state auto-saved and restored when switching |
23 | | - |
24 | | -### 📦 VGroup Utility |
25 | | -- Select Mobject nodes → click **Create VGroup** in the **VGroups** tab |
26 | | -- VGroup code automatically generated: `group_1 = VGroup(circle_1, square_1)` |
27 | | -- Groups shown in expandable tree view with source badges (canvas / AI / snippet / GitHub) |
28 | | -- Full member management: add, remove, highlight on canvas, copy code |
29 | | - |
30 | | ---- |
31 | | - |
32 | | -## 🤝 Live Collaboration |
33 | | - |
34 | | -EfficientManim supports **real-time multi-user editing** over a local network or on the same machine — no cloud accounts, no third-party services. |
35 | | - |
36 | | -### What It Is |
37 | | -Two or more EfficientManim windows share the same node graph live. Every node move, property change, wire add/delete, and scene switch is broadcast as a JSON delta and applied to all connected instances within milliseconds. A 6-digit **PIN** identifies the session — easy to read aloud or paste into chat. |
38 | | - |
39 | | -### Starting a Session |
40 | | -1. Open your project in EfficientManim. |
41 | | -2. Click **Collaboration → Start Live Collaboration**. |
42 | | -3. A dialog shows your PIN in large, bold text. Share it with collaborators. |
43 | | -4. The toolbar shows a green ● and the active PIN. |
44 | | - |
45 | | -### Joining a Session |
46 | | -1. Click **Collaboration → Join Collaboration**. |
47 | | -2. Enter the 6-digit PIN. |
48 | | -3. Click **Connect** — your canvas loads the host's full graph and live sync begins. |
49 | | - |
50 | | -### Multi-Window (Same Machine) |
51 | | -Run `python main.py` a second time, join via the same PIN — both windows stay in sync. |
52 | | - |
53 | | -### Network Requirements |
54 | | -- **Same machine:** No setup needed. |
55 | | -- **LAN:** Host firewall must allow the ephemeral TCP port shown in the session dialog. |
56 | | -- **Internet:** Not supported out-of-the-box; use a reverse proxy (e.g. `ngrok`) on the host. |
57 | | - |
58 | | -📖 Full details: [docs/live_collaboration.md](docs/live_collaboration.md) |
59 | | - |
60 | | ---- |
61 | | - |
62 | | -## 🤖 Gemini AI Integration |
63 | | - |
64 | | -### Code Generation |
65 | | -- Describe animations in plain English — AI generates a complete `Scene.construct()` block |
66 | | -- AI code parsed into typed, editable nodes with correct wiring |
67 | | -- Streaming responses with real-time feedback in the AI Assistant dock |
68 | | - |
69 | | -### MCP Agent Mode |
70 | | -- Gemini reads the live scene state as JSON and issues typed commands executed directly against the running app |
71 | | -- No merge step — Gemini edits the graph the same way a human would |
72 | | -- Full action log: **Help → MCP Agent → Show Action Log** |
73 | | - |
74 | | -### Auto Voiceover Agent |
75 | | -- Analyzes all nodes, writes per-node scripts, generates TTS, attaches audio automatically |
76 | | -- At render time, all segments merge into a synchronized voiceover track |
77 | | - |
78 | | -📖 Full details: [docs/ai_features.md](docs/ai_features.md) |
79 | | - |
80 | | ---- |
81 | | - |
82 | | -## 🎙️ AI Voiceover Studio |
83 | | -- Gemini TTS with six voices: Puck, Charon, Kore, Fenrir, Aoede, Zephyr |
84 | | -- Built-in audio player with play/pause/stop/seek and time display |
85 | | -- Attach audio to any node — duration auto-syncs `run_time=` |
86 | | - |
87 | | ---- |
88 | | - |
89 | | -## 🐙 GitHub Snippet Loader |
90 | | -- Clone any GitHub repository and browse its `.py` files |
91 | | -- Double-click to load into the AI panel as a snippet |
92 | | -- VGroup definitions auto-detected and registered |
93 | | - |
94 | | ---- |
95 | | - |
96 | | -## ⭐ Recents Panel |
97 | | -- Top-5 most-used Mobjects and Animations by actual insertion count |
98 | | -- Persisted to `~/.efficientmanim/usage.json` |
99 | | -- Double-click to instantly add to canvas |
100 | | - |
101 | | ---- |
102 | | - |
103 | | -## ⌨️ Editable Keybindings |
104 | | -- **Help → Edit Keybindings…** — changes apply instantly, no restart |
105 | | -- Duplicate detection; persisted to `QSettings` |
106 | | - |
107 | | ---- |
108 | | - |
109 | | -## 📦 Portable Project Format (.efp) |
110 | | -- ZIP-based: graph JSON + compiled code + all bundled media |
111 | | -- Cross-platform — one file contains everything |
112 | | -📖 Full details: [docs/efp_format.md](docs/efp_format.md) |
113 | | - |
114 | | ---- |
115 | | - |
116 | | -## 🎨 Manim Class Browser |
117 | | -- 60+ Manim classes in 8 categories with real-time search filter |
118 | | -- Double-click or drag to add node to canvas |
119 | | - |
120 | | ---- |
121 | | - |
122 | | -## 🎬 Professional Video Rendering |
123 | | -- Full scene export to MP4/WebM, up to 4K, 15–60 FPS, four quality presets |
124 | | -- Integrated video player for instant review |
125 | | - |
126 | | ---- |
127 | | - |
128 | | -## ✒️ LaTeX Studio |
129 | | -- Live LaTeX preview via MathPad API |
130 | | -- One-click apply to any `MathTex` or `Tex` node |
131 | | - |
132 | | ---- |
133 | | - |
134 | | -## 🔌 Plugin / Extension System |
135 | | -- Extensions in `~/.efficientmanim/ext/<author>/<name>/` |
136 | | -- Permission-gated: nodes, UI panels, timeline tracks, MCP hooks |
137 | | -📖 Full details: [docs/plugin_api.md](docs/plugin_api.md) |
138 | | - |
139 | | ---- |
140 | | - |
141 | | -## 🏠 Home Screen |
142 | | - |
143 | | -```bash |
144 | | -python home.py # Home screen with recent projects |
145 | | -python main.py # Open editor directly |
146 | | -``` |
147 | | - |
148 | | ---- |
149 | | - |
150 | | -## ⌨️ Keyboard Shortcuts |
151 | | - |
152 | | -| Action | Shortcut | Action | Shortcut | |
153 | | -|--------|----------|--------|----------| |
154 | | -| New Project | `Ctrl+N` | Fit View | `Ctrl+0` | |
155 | | -| Open Project | `Ctrl+O` | Zoom In | `Ctrl+=` | |
156 | | -| Save Project | `Ctrl+S` | Zoom Out | `Ctrl+-` | |
157 | | -| Save As | `Ctrl+Shift+S` | Auto-Layout | `Ctrl+L` | |
158 | | -| Exit | `Ctrl+Q` | Export Code | `Ctrl+E` | |
159 | | -| Undo | `Ctrl+Z` | Copy Code | `Ctrl+Shift+C` | |
160 | | -| Redo | `Ctrl+Y` | Render Video | `Ctrl+R` | |
161 | | -| Delete Selected | `Del` | Add Play Node | `Ctrl+Shift+P` | |
162 | | -| Select All | `Ctrl+A` | Add Wait Node | `Ctrl+Shift+W` | |
163 | | -| Create VGroup | `Ctrl+G` | Edit Keybindings | `Ctrl+,` | |
164 | | - |
165 | | -📖 Full reference: [docs/shortcuts.md](docs/shortcuts.md) |
166 | | - |
167 | | ---- |
168 | | - |
169 | | -## 📚 Documentation |
170 | | - |
171 | | -| Document | Contents | |
172 | | -|---|---| |
173 | | -| [docs/overview.md](docs/overview.md) | Architecture, modules, data flow | |
174 | | -| [docs/setup.md](docs/setup.md) | Installation, requirements, first launch | |
175 | | -| [docs/live_collaboration.md](docs/live_collaboration.md) | PIN sessions, delta sync, network setup | |
176 | | -| [docs/node_reference.md](docs/node_reference.md) | All node types and properties | |
177 | | -| [docs/ai_features.md](docs/ai_features.md) | Code gen, MCP agent, voiceover, LaTeX | |
178 | | -| [docs/shortcuts.md](docs/shortcuts.md) | Full keyboard shortcut reference | |
179 | | -| [docs/efp_format.md](docs/efp_format.md) | Project file format internals | |
180 | | -| [docs/plugin_api.md](docs/plugin_api.md) | Extension / plugin development guide | |
181 | | -| [docs/contributing.md](docs/contributing.md) | Dev setup, code style, PR guide | |
182 | | - |
183 | | ---- |
184 | | - |
185 | | -## 🛠️ Installation |
186 | | - |
187 | | -```bash |
188 | | -git clone https://github.com/pro-grammer-SD/EfficientManim.git |
189 | | -cd EfficientManim |
190 | | -pip install -r requirements.txt |
191 | | -python main.py |
192 | | -``` |
193 | | - |
194 | | -**Requirements:** Python 3.10+, FFmpeg (on PATH), Git, LaTeX (for MathTex) |
195 | | - |
196 | | -Full guide: [docs/setup.md](docs/setup.md) |
197 | | - |
198 | | ---- |
199 | | - |
200 | | -## 🌿 About |
201 | | - |
202 | | -© 2026 — Soumalya Das (@pro-grammer-SD) · Co-authored with Bailey Beber |
203 | | -Built with PySide6 · Manim · Google Gemini |
| 1 | +# EfficientManim |
| 2 | + |
| 3 | +EfficientManim is a node-based Manim editor that helps you build mathematical animations visually, preview quickly, and export clean Python code. |
| 4 | + |
| 5 | +## Highlights |
| 6 | +- Visual graph editor for Mobjects and Animations |
| 7 | +- Live preview rendering for quick iteration |
| 8 | +- Video render pipeline with quality presets |
| 9 | +- Gemini-powered helpers for code generation and voiceover |
| 10 | + |
| 11 | +## Quick Start |
| 12 | +1. Install dependencies: |
| 13 | + ```bash |
| 14 | + pip install -r requirements.txt |
| 15 | + ``` |
| 16 | +2. Run the app: |
| 17 | + ```bash |
| 18 | + python main.py |
| 19 | + ``` |
| 20 | + |
| 21 | +## Documentation |
| 22 | +See `docs/README.md` for architecture, workflow, and developer guidance. |
0 commit comments