Game-ready 3D asset toolkit for Blender
Mesh repair · LOD generation · UV atlas · Collider generation · Engine export — all in one N-panel
Features · Install · Quick Start · Screenshots · Roadmap · FAQ · Contributing
📚 English version · Русская версия
PolyPulse is a Blender addon that consolidates the most common asset-pipeline operations into a single N-panel: mesh repair, automatic LOD generation, UV atlas creation, collider generation, and engine-specific FBX/GLB export for Unreal Engine 5, Unity, and Godot.
Built for technical artists, prop modelers, and indie game devs who want a fast, deterministic path from Blender to a game engine — without leaving the viewport.
⚠️ Open Beta: This is a public beta release. All features are free and unlocked. Please report bugs and feedback via GitHub Issues.
What comes next: PolyPulse Community Beta remains free and fully unlocked. The next-generation Blender asset pipeline is now being developed as VORVEXON. Follow development updates and early-access news on Telegram.
- Scene Analyze — object/mesh/material statistics at a glance
- Advanced Scan — deep mesh diagnostics: ngons, tris, non-manifold edges, UV islands, duplicate verts (via KDTree, O(N log N))
- Draw Calls Estimator — estimate engine draw calls before export
- Game Ready Score — weighted readiness score across geometry, UV, textures, materials
- Auto Fix Mesh — one-click cleanup: remove doubles, recalc normals, remove loose geometry, clean material slots
- Remove Doubles — configurable merge distance
- Recalculate Normals — outside/front-facing
- Remove Loose Geometry — zero-area faces and stray verts
- Clean Material Slots — drop unused material slots
- Visual Overlay — viewport highlight of problem areas (ngons, bad UVs, dup verts)
- Smart Decimate — context-aware polygon reduction preserving silhouette
- LOD Chain Generator — automatically produce LOD1 / LOD2 / LOD3 with progressive decimation and proper naming (
_LOD0,_LOD1,_LOD2,_LOD3)
- UV Atlas Generator — Smart Project + island packing + optional material merge
- Bake Texture Atlas — bake multiple objects onto a single shared atlas image
- Collider Generator — Box / Sphere / Capsule / Convex Hull, properly positioned and named (
_COLLISION_*) - Visual Overlay — viewport diagnostics for ngons, broken UVs, duplicate vertices
- UE5 preset — FBX with proper forward/up axis and Y-forward
- Unity preset — FBX with Z-forward, Y-up
- Godot preset — GLB with embedded materials and textures
- Export Report — full audit of what was exported (geometry, materials, textures, file size)
Built-in internationalization with full translations for:
- 🇬🇧 English · 🇷🇺 Russian · 🇩🇪 German · 🇪🇸 Spanish · 🇯🇵 Japanese
Switch language from the addon preferences — UI updates instantly.
- Go to Releases
- Download
polypulse_v0.5.8_beta.zip - In Blender: Edit → Preferences → Add-ons → Install…
- Select the downloaded ZIP file
- Enable PolyPulse checkbox
- Open 3D Viewport, press
Nto open sidebar - Switch to PolyPulse tab
git clone https://github.com/polypulse/polypulse.git
cd polypulse
python build_release.py --tag beta
# Output: dist/polypulse_v0.5.8_beta.zipThen install the ZIP from dist/ as described above.
💡 The ZIP must contain a top-level
polypulse/folder. If you see "ZIP packaged incorrectly" in Blender, you downloaded the source code ZIP, not a Release build — download from the Releases page instead.
- Open a scene with at least one mesh object
- Press
Nin the 3D Viewport → switch to PolyPulse tab - Select one or more objects (Shift-click for multi-select — works great on cabinets/shelves/etc.)
- Click Analyze Scene to see statistics
- Click Advanced Scan for deep diagnostics
- Click Auto Fix Mesh to clean up common issues
- Click Generate LOD Chain to create LOD0–LOD3
- Click Create UV Atlas to pack UVs
- Pick an export preset (UE5 / Unity / Godot) to export the asset
Multi-selection works on full hierarchies — selecting a cabinet also selects its shelves and contents. The UV atlas operator processes all selected objects as a batch.
🎨 Screenshots coming soon. Want to contribute? See
CONTRIBUTING.mdand open a PR adding images todocs/screenshots/.
Placeholder preview:
┌─────────────────────────────────────────────────────────┐
│ PolyPulse │
│ ───────── │
│ ▼ Game Ready Score │
│ [████████░░] 82/100 — Game Ready │
│ │
│ ▼ Analysis │
│ [Analyze Scene] [Advanced Scan] │
│ Objects: 24 Meshes: 18 Verts: 12.4k │
│ │
│ ▼ Optimization │
│ [Auto Fix Mesh] [Remove Doubles] │
│ [Smart Decimate] [Generate LOD Chain] │
│ │
│ ▼ Asset Preparation │
│ [Box] [Sphere] [Capsule] [Convex] │
│ [Create UV Atlas] [Visual Scan] │
│ │
│ ▼ Export │
│ [Unreal Engine 5] [Unity] [Godot] │
└─────────────────────────────────────────────────────────┘
Run the full operator/exporter/collider/LOD/UV test suite:
blender --background --factory-startup --python tests/polypulse_smoke_tests.pyExpected: Blender exits with code 0, console ends with SUMMARY passed=... failed=0, and a JSON report is written next to the test file.
See BETA_TEST_PLAN.md for the full manual test workflow.
Found a bug? Please open an issue and include:
- Blender version (Help → About Blender)
- Operating system (Windows / macOS / Linux + version)
- PolyPulse version (visible in addon preferences)
- Steps to reproduce (step-by-step, starting from a fresh Blender file if possible)
- Expected vs. actual behavior
- Console output (Window → Toggle System Console) — copy-paste any traceback
- Minimal
.blendfile (only if it contains no private/commercial assets — strip textures if needed)
💡 Tip: Before reporting, try File → New to confirm the bug reproduces on a fresh scene. This rules out project-specific issues.
Have an idea? Open a feature request. Please describe your use case and workflow — knowing why you want a feature is more useful than knowing what you want.
Pull requests are welcome! Before opening one:
- Open an issue first to discuss large changes
- Keep PRs focused — one feature or fix per PR
- Test on Blender 3.6 LTS and Blender 4.3+
- Run smoke tests:
blender --background --factory-startup --python tests/polypulse_smoke_tests.py - Compile-check:
python -m compileall -q . - Never commit
.blendfiles containing private work,__pycache__, or generated ZIP archives
See CONTRIBUTING.md for full guidelines.
PolyPulse is in open beta. All features are currently free and unlocked.
Planned for future releases:
- 🔲 Pro tier ($15/month) — Advanced batch processing, automation scripts, custom export profiles
- 🔲 Premium tier ($45/month) — Team workflows, cloud asset validation, priority support
- 🔲 Blender 5.x compatibility tests on official release
- 🔲 More languages — French, Portuguese, Korean, Chinese
- 🔲 GPU-accelerated mesh analysis for large scenes
- 🔲 Plugin API — let third parties extend PolyPulse
ℹ️ The current open beta will remain free for personal and commercial use. Future paid tiers will add new features, not lock existing ones behind a paywall.
See SECURITY_AUDIT.md for the full Community / Pro architecture and licensing strategy.
Yes. PolyPulse v0.5.x is licensed under GNU GPL v3.0 and is free for both personal and commercial use. You can modify it, distribute it, and use it in production. The only requirement is that derivative works must also be GPL-3.0.
The Community edition will always be free. Future Pro/Premium features ($15/$45/month) will be new code, not existing features locked behind a paywall. See SECURITY_AUDIT.md for the dual-licensing strategy.
Yes. Your game project is separate from PolyPulse — GPL-3.0 only applies to PolyPulse itself, not to the assets or games you create using it. This is the same model as Blender itself.
Yes, but you must:
- Keep the GPL-3.0 license
- Publish your modified source code
- Include the original copyright notice
This is the standard copyleft requirement of GPL-3.0.
| Version | Status | Notes |
|---|---|---|
| 5.x (current) | ✅ Supported | Primary test target |
| 4.3+ | ✅ Supported | Primary test target |
| 3.6 LTS | ✅ Supported | Primary test target |
| 2.93 LTS | Code paths retained, not actively tested | |
| 2.83 LTS | Code paths retained, not actively tested |
Operating systems: Windows 10/11, macOS 12+, Ubuntu 22.04+
This error appears on Blender 4.2+ when installing via the Extensions Manager. PolyPulse v0.5.8 ships as a legacy addon (not an extension), so:
- Use Edit → Preferences → Add-ons (not Extensions) → Install…
- Select the ZIP file
- Enable the addon in the list
We plan to ship a proper extension manifest in a future release.
This was fixed in v0.5.7. If you still see a black atlas:
- Make sure you're on PolyPulse v0.5.7 or later (check addon preferences)
- Make sure Cycles is available (the addon sets it automatically, but custom Blender builds without Cycles will fail)
- If bake fails, the atlas image will be magenta
(1, 0, 1, 1)as a debug indicator — this means "no pixels were written". Open the System Console to see the error.
This was fixed in v0.5.8. The bug was caused by cap_tris=True on cylinder caps, which created triangle fans that bevel caught as edges. Update to v0.5.8 or later.
PolyPulse respects Blender's selection hierarchy:
- If you select a parent object, child objects are NOT automatically selected
- Use Shift+click to multi-select
- If a cabinet + its shelves + its contents are all selected, the UV Atlas operator processes all of them as a batch
For large groups (e.g. 8 cabinets in a row), Shift-click each one — works fine up to 128 unique meshes per UV Atlas bake.
See CHANGELOG.md — it follows the Keep a Changelog format.
Please do NOT open a public GitHub issue. See SECURITY.md for private disclosure instructions.
| Blender version | Status | Notes |
|---|---|---|
| 5.x (current) | ✅ Supported | Primary test target |
| 4.3+ | ✅ Supported | Primary test target |
| 3.6 LTS | ✅ Supported | Primary test target |
| 2.93 LTS | Code paths retained, not actively tested | |
| 2.83 LTS | Code paths retained, not actively tested |
Operating systems: Windows 10/11, macOS 12+, Ubuntu 22.04+
polypulse/
├── __init__.py # Addon entry point (bl_info, registration, panels)
├── modules/
│ ├── __init__.py # Shared UI helpers (section_header)
│ ├── collider.py # Collider Generator (Box/Sphere/Capsule/Convex)
│ ├── uv_atlas.py # UV Atlas + Bake Texture Atlas
│ └── visual_overlay.py # Viewport diagnostics overlay
├── translations/
│ ├── en.json ru.json de.json es.json jp.json
├── tests/
│ ├── polypulse_smoke_tests.py
│ └── README.md
├── docs/
│ └── README.ru.md # Russian documentation
├── .github/
│ ├── workflows/ci.yml # CI: compile check + structure check + ZIP build
│ ├── ISSUE_TEMPLATE/ # bug_report.md, feature_request.md, config.yml
│ └── PULL_REQUEST_TEMPLATE.md
├── build_release.py # ZIP packaging script
├── CHANGELOG.md # Keep a Changelog format
├── CONTRIBUTING.md # Contributor guide
├── CODE_OF_CONDUCT.md # Contributor Covenant v2.1
├── SECURITY.md # Vulnerability disclosure policy
├── SECURITY_AUDIT.md # Community/Pro architecture & IP strategy
├── BETA_TEST_PLAN.md # Manual QA checklist
├── RELEASE_CHECKLIST.md # Maintainer release workflow
├── LICENSE # GNU GPL v3.0
├── .gitignore
└── README.md
PolyPulse is released under the GNU General Public License v3.0 — see LICENSE.
You are free to:
- ✅ Use the addon for personal and commercial projects
- ✅ Modify the source code
- ✅ Distribute the addon (with attribution)
- ✅ Submit pull requests and contribute
Copyleft requirement: If you distribute a modified version, you must publish the source code under the same GPL-3.0 license. This protects the project from being forked into closed-source commercial products.
The copyright notice and license text must be included in all copies or substantial portions of the software.
PolyPulse is built on top of Blender's excellent Python API and BMesh library. Thanks to the Blender Foundation and the entire Blender community for making tools like this possible.
Special thanks to early beta testers who provided invaluable feedback on collider generation, UV atlas baking, and exporter compatibility.
⬆ Back to top · Report a bug · Request a feature · Security disclosure
Made with ⚡ for the Blender community