A professional Blender addon for intelligently cleaning up your 3D scenes with advanced filtering options and a safe trash bin system.
- Name Prefix Filter - Target objects by naming convention (e.g.,
DEL_,TMP_,OLD_) - Volume Filter - Select objects above or below a specific volume threshold
- Polygon Count Filter - Filter meshes by face count (perfect for LOD cleanup)
- Distance Filter - Find objects lost in space beyond a certain distance from origin
- Empty Geometry Filter - Detect and remove meshes with zero vertices
- Move to Trash - Soft-delete objects to a hidden collection instead of permanent removal
- Restore Feature - Undo mistakes by restoring objects to their original collections
- Memory Preservation - Automatically remembers and restores objects to their exact original locations
- Empty Trash - Permanently delete when you're ready (with confirmation dialog)
- Select Only - Preview what will be affected before taking action
- Move to Trash - Safe mode with full restore capability
- Delete - Permanent removal for when you're absolutely sure
- Download
delete_meshes_by_filter.py - Open Blender
- Go to
Edit > Preferences > Add-ons - Click
Install... - Select the downloaded
.pyfile - Enable "Smart Mesh Cleaner Pro" checkbox
- Locate your Blender scripts folder:
- Windows:
%APPDATA%\Blender Foundation\Blender\{version}\scripts\addons\ - macOS:
~/Library/Application Support/Blender/{version}/scripts/addons/ - Linux:
~/.config/blender/{version}/scripts/addons/
- Windows:
- Copy
delete_meshes_by_filter.pyto theaddonsfolder - Restart Blender
- Enable the addon in Preferences
- Open the 3D Viewport
- Press
Nto open the sidebar - Navigate to the Clean tab
- The Smart Mesh Cleaner panel will appear
1. Select Action: "Move to Trash"
2. Filter Mode: "Volume (Size)"
3. Direction: "Below"
4. Threshold: 0.1
5. Click "MOVE TO TRASH"
6. Review your scene
7. If satisfied, click "EMPTY TRASH BIN"
8. If not, click "RESTORE OBJECTS"
1. Select Action: "Select Only" (preview first)
2. Filter Mode: "Name Prefix"
3. Prefix: "TMP_"
4. Click "EXECUTE SELECT"
5. Review selected objects
6. Change to "Delete" action
7. Click "EXECUTE DELETE"
1. Select Action: "Move to Trash"
2. Filter Mode: "Poly Count"
3. Direction: "Above"
4. Faces: 100000
5. Click "MOVE TO TRASH"
6. Check performance improvement
7. Restore or empty as needed
1. Select Action: "Select Only"
2. Filter Mode: "Lost in Space"
3. Distance: 1000
4. Click "EXECUTE SELECT"
5. Review outliers in your scene
- Remove meshes with too many polygons for real-time rendering
- Clean up tiny objects that won't be visible in-game
- Filter out development scaffolding by prefix
- Remove empty geometry left over from modeling
- Delete objects accidentally placed far from the scene
- Clean up imported models with excess detail
- Use name prefixes to mark objects for deletion across multiple scenes
- Standardize LOD (Level of Detail) management
- Automated cleanup workflow for production pipelines
- Non-destructive Preview - "Select Only" mode lets you see what will be affected
- Undo Support - All operations are undo-able with
Ctrl+Z - Trash Bin - Soft-delete objects with full restore capability
- Confirmation Dialog - Empty Trash requires explicit confirmation
- Collection Memory - Restored objects return to their exact original collections
The addon is built using object-oriented design principles:
- Strategy Pattern - Each filter mode is an independent strategy
- Domain-Driven Design - Clear separation between utilities, filters, UI, and operators
- Clean Code - Type hints, ABC interfaces, and SOLID principles
- Efficient filtering using list comprehensions
- Minimal overhead on Blender's scene graph
- Safe collection management without data corruption
- Blender Version: 3.0 and above
- Platform: Windows, macOS, Linux
- Type: Add-on (Python script)
All filters inherit from ObjectFilter ABC:
PrefixFilter(prefix: str)- Match object names starting with prefixVolumeFilter(threshold: float, keep_above: bool)- Filter by bounding box volumePolyCountFilter(threshold: int, keep_above: bool)- Filter by polygon countDistanceFilter(max_dist: float)- Filter by distance from originEmptyMeshFilter()- Match meshes with zero vertices
move_to_trash(objects: Sequence[bpy.types.Object]) -> None
restore_from_trash() -> None
empty_trash_bin() -> None
get_trash_collection() -> Optional[bpy.types.Collection]Contributions are welcome! Here are some ways you can help:
- ๐ Report bugs and issues
- ๐ก Suggest new filter modes
- ๐ง Submit pull requests
- ๐ Improve documentation
- โญ Star this repository
This project is licensed under the MIT License - see the LICENSE file for details.
Igor Garcia
- Built for the Blender community
- Inspired by real production pipeline challenges
- Special thanks to all contributors and users
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with โค๏ธ for the Blender Community