A Blender add-on that generates procedural trees from natural language prompts using Geometry Nodes and a lightweight LLM. 🌳✨
- Natural Language → Geometry Nodes
Example: "A tall pine with sparse leaves" → instantly generates a procedural tree. - Real-time adjustment UI
After generation, fine-tune trunk length, branch angles, leaf density, etc. with sliders. - Undo/Redo supported
Safe experimentation workflow. - Few-shot + retry mechanism
Ensures valid socket values even if inference fails. - Open Source (MIT License)
- Blender 4.3.0+
- Windows / macOS / Linux
- CPU (works) or GPU (optional, via llama.cpp)
- Internet connection (for first model download)
-
Download
- Grab the latest release ZIP from the Releases page.
-
Install in Blender
- Open Blender →
Edit > Preferences > Add-ons > Install...
- Select the ZIP → Enable Tree Gen LLM.
- Open Blender →
-
Model setup
- Online: In
Preferences > Add-ons > Tree Gen LLM
, press Setup to auto-download the required model from Hugging Face. - Offline: Place the GGUF file into
/models/
and press Refresh Model Path.
- Online: In
- Open the 3D View > Sidebar (N) > Tree Gen LLM panel.
- Enter a prompt, e.g.:
- “A broadleaf tree with dense leaves”
- “Sparse branches, leaning upwards”
- Click Generate → a procedural tree mesh will appear in the viewport.
- Adjust parameters (trunk, branches, leaves) with the sliders.
- Use Reset to delete the current tree and start over.
- Press Cancel if you need to stop an ongoing inference.
treegen-llm/
├── __init__.py # Main add-on code
├── custom_defaults.py # Default socket values
├── user_socket_schema.py # Geometry Nodes socket schema
├── blender_manifest.toml # Dependencies (wheels, permissions)
├── manifest.json # Required model definition (Qwen2.5-7B)
├── TreeNodeGen.blend # Geometry Nodes template
├── models/ # GGUF model folder (user provides/downloads)
└── wheels/ # Bundled wheels (llama-cpp-python, numpy, etc.)
MIT License — free for both personal and commercial use.
- llama-cpp-python
- Hugging Face Hub
- Blender Geometry Nodes community
Found a bug or have a feature request?
👉 Please open an Issue.
Stars ⭐ and feedback are greatly appreciated!