346 lines
12 KiB
Markdown
346 lines
12 KiB
Markdown
# Text Texture Generator - Blender Addon
|
|
|
|
A modern Blender addon that generates image textures from text with extensive customization options and advanced features.
|
|
|
|
## Features
|
|
|
|
- **Text Input & Processing**:
|
|
|
|
- Enter any text to convert into a texture (up to 1024 characters)
|
|
- Prepend and append text support with customizable margins
|
|
- Horizontal and vertical text layout options
|
|
- Text fitting system with automatic font size adjustment
|
|
|
|
- **Advanced Positioning System**:
|
|
|
|
- 9-point anchor positioning system (top-left, center, bottom-right, etc.)
|
|
- Manual coordinate positioning with percentage or pixel units
|
|
- Fine-tuning offsets for precise placement
|
|
- Canvas constraint options
|
|
|
|
- **Font System**:
|
|
|
|
- System font detection and selection
|
|
- Custom font file support (.ttf, .otf)
|
|
- Font validation with mixed-case support testing
|
|
- Adjustable font size (8-500px)
|
|
- Text alignment (left, center, right)
|
|
|
|
- **Image Overlay System**:
|
|
|
|
- Multiple image overlays with individual controls
|
|
- Three positioning modes: Absolute, Prepend, Append
|
|
- Per-overlay scaling, rotation, and z-index control
|
|
- Image spacing and sequencing for complex layouts
|
|
- Enable/disable individual overlays
|
|
|
|
- **Color & Transparency**:
|
|
|
|
- RGBA text color picker with full alpha support
|
|
- RGBA background color picker
|
|
- Transparent background option
|
|
- Preview background options (transparent, solid color, gradient)
|
|
|
|
- **Normal Map Generation**:
|
|
|
|
- Automatic normal map creation from text alpha channel
|
|
- Adjustable strength, blur radius, and invert options
|
|
- Proper colorspace handling for normal maps
|
|
|
|
- **Advanced Shader Generation**:
|
|
|
|
- Complete material shader creation
|
|
- Multiple shader types: Principled BSDF, Emission, Transparent
|
|
- Light path control: disable shadows, reflections, backfacing
|
|
- Auto-assignment to selected objects
|
|
- Normal map integration in shaders
|
|
|
|
- **Preset Management System**:
|
|
|
|
- Three-tier storage: Blend File, Persistent, Local presets
|
|
- All preset types now display properly in the interface
|
|
- Presets travel with .blend files (Blend File type)
|
|
- Import/export functionality for backup and sharing
|
|
- Automatic migration system for addon updates
|
|
- Conflict resolution for preset imports
|
|
|
|
- **Preview System**:
|
|
|
|
- Full-resolution live preview generation
|
|
- Zoomable preview window with Image Editor integration
|
|
- Multiple preview background options
|
|
- Real-time updates on property changes
|
|
|
|
- **Blender Integration**:
|
|
- Works in Shader Editor, 3D Viewport, and Properties panel
|
|
- Automatic texture node creation with proper connections
|
|
- Generated textures are packed into the .blend file
|
|
- Menu integration across multiple editors
|
|
|
|
## Installation
|
|
|
|
### Method 1: Modern Blender 4.0+ (Recommended)
|
|
|
|
1. Download the addon files (`blender_manifest.toml` and `__init__.py`)
|
|
2. Create a folder named `text_texture_generator`
|
|
3. Place both files in this folder
|
|
4. In Blender, go to `Edit > Preferences > Add-ons`
|
|
5. Click `Install from Disk` and select the folder
|
|
6. Enable the "Text Texture Generator" addon
|
|
|
|
### Method 2: Traditional Installation
|
|
|
|
1. Download the `__init__.py` file
|
|
2. In Blender, go to `Edit > Preferences > Add-ons`
|
|
3. Click `Install from Disk` and select the `__init__.py` file
|
|
4. Enable the "Text Texture Generator" addon
|
|
|
|
## Usage
|
|
|
|
### In Shader Editor:
|
|
|
|
1. Select a material with nodes enabled
|
|
2. Open the Shader Editor
|
|
3. Press `N` to open the side panel
|
|
4. Navigate to the "Text Texture" tab
|
|
5. Configure your text and settings
|
|
6. Click "Generate Texture"
|
|
7. The texture node will be automatically added to your material
|
|
|
|
### In 3D Viewport:
|
|
|
|
1. Press `N` to open the side panel
|
|
2. Navigate to the "Text Texture" tab
|
|
3. Configure your text and settings
|
|
4. Click "Generate Texture"
|
|
5. Find your texture in the Image Editor or use it in materials
|
|
|
|
## Settings Reference
|
|
|
|
### Text Settings
|
|
|
|
- **Main Text**: Primary text to render (up to 1024 characters)
|
|
- **Prepend Text**: Text to add before main text (up to 512 characters)
|
|
- **Append Text**: Text to add after main text (up to 512 characters)
|
|
- **Layout**: Horizontal or vertical arrangement of text elements
|
|
- **Margins**: Percentage-based spacing between text elements
|
|
|
|
### Font Settings
|
|
|
|
- **System Fonts**: Auto-detected system fonts with validation
|
|
- **Custom Font**: Load external .ttf/.otf font files
|
|
- **Font Size**: Size in pixels (8-500px)
|
|
- **Text Alignment**: Left, center, right alignment options
|
|
|
|
### Positioning & Layout
|
|
|
|
- **Position Mode**: Preset anchor points or manual coordinates
|
|
- **Anchor Points**: 9-point positioning grid (top-left to bottom-right)
|
|
- **Margins**: Percentage-based margins from canvas edges (0-50%)
|
|
- **Offsets**: Pixel-perfect fine-tuning (-200 to +200px)
|
|
- **Manual Positioning**: Direct X,Y coordinates in percentage or pixels
|
|
- **Canvas Constraints**: Keep text within canvas bounds
|
|
|
|
### Text Fitting
|
|
|
|
- **Auto-Sizing**: Automatically adjust font size to fit canvas
|
|
- **Fitting Modes**: Fit width, height, both, or contain within bounds
|
|
- **Size Limits**: Minimum and maximum font size constraints
|
|
- **Fitting Margin**: Percentage margin for auto-fitting calculations
|
|
|
|
### Texture Settings
|
|
|
|
- **Dimensions**: Canvas size in pixels (64x64 to 4096x4096)
|
|
- **Text Color**: RGBA color picker with full alpha support
|
|
- **Background**: Transparent or solid color with RGBA control
|
|
|
|
### Image Overlays
|
|
|
|
- **Multiple Images**: Add unlimited image overlays
|
|
- **Positioning Modes**: Absolute coordinates, prepend, or append to text
|
|
- **Transform Controls**: Scale (0.1-5.0x), rotation (360°), z-index layering
|
|
- **Spacing Controls**: Configurable spacing between images and text
|
|
- **Sequence Control**: Order overlays in prepend/append modes
|
|
|
|
### Normal Maps
|
|
|
|
- **Auto-Generation**: Create normal maps from text alpha channel
|
|
- **Strength Control**: Adjust normal map intensity (0.1-5.0)
|
|
- **Blur Radius**: Smooth normal map edges (0-10px)
|
|
- **Invert Option**: Switch between emboss and deboss effects
|
|
|
|
### Shader Generation
|
|
|
|
- **Shader Types**: Principled BSDF, Emission, Transparent materials
|
|
- **Texture Connections**: Base color, emission, or alpha channels
|
|
- **Light Path Controls**: Disable shadows, reflections, or backfacing
|
|
- **Auto-Assignment**: Automatically apply materials to selected objects
|
|
- **Normal Map Integration**: Automatic normal map nodes and connections
|
|
|
|
### Preview Options
|
|
|
|
- **Live Preview**: Real-time texture generation and display
|
|
- **Preview Size**: Adjustable preview resolution (128-2048px)
|
|
- **Background Display**: Transparent, solid color, or gradient options
|
|
- **Zoom Controls**: Open preview in zoomable Image Editor window
|
|
|
|
## System Requirements
|
|
|
|
- Blender 4.0.0 or newer
|
|
- Python 3.10+ (included with Blender)
|
|
- Pillow library (>=10.0.0, automatically installed via pip)
|
|
|
|
## Font Support
|
|
|
|
The addon features intelligent font detection and validation:
|
|
|
|
### System Font Detection
|
|
|
|
- Automatically scans system font directories
|
|
- Supports .ttf, .ttc, .otf, and .dfont files
|
|
- Mixed-case rendering validation for quality assurance
|
|
- Platform-specific fallback fonts with guaranteed compatibility
|
|
|
|
### Windows Fallback Fonts
|
|
|
|
- Arial, Calibri, Segoe UI, Verdana, Tahoma, Times, Trebuchet MS
|
|
|
|
### macOS Fallback Fonts
|
|
|
|
- Helvetica, Arial, Times, Avenir, Geneva, Palatino
|
|
|
|
### Linux Fallback Fonts
|
|
|
|
- Liberation Sans, DejaVu Sans, Ubuntu, Noto Sans, Lato, Open Sans
|
|
|
|
### Custom Fonts
|
|
|
|
- Load any .ttf or .otf font file
|
|
- Automatic validation for mixed-case support
|
|
- Error handling and fallback for unsupported fonts
|
|
|
|
## Dependencies
|
|
|
|
The addon automatically installs required dependencies:
|
|
|
|
- **Pillow** (>=10.0.0): For image generation and text rendering
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
1. **"Failed to generate texture" error**:
|
|
|
|
- Ensure Pillow is installed (addon does this automatically)
|
|
- Check that your text isn't empty
|
|
- Verify texture dimensions are within limits
|
|
|
|
2. **Font not displaying correctly**:
|
|
|
|
- Try using "Default" font option
|
|
- Some system fonts may not be available
|
|
- Custom font paths vary by system
|
|
|
|
3. **Texture appears in wrong location**:
|
|
- In Shader Editor: Ensure you have a material selected
|
|
- Check the generated image in the Image Editor
|
|
- Look for the texture in `bpy.data.images`
|
|
|
|
### Performance Notes
|
|
|
|
- Large textures (2048x2048+) may take longer to generate
|
|
- Very long text strings may affect performance
|
|
- Generated textures are stored in memory and packed with the .blend file
|
|
|
|
## Preset System
|
|
|
|
The addon features a sophisticated three-tier preset system:
|
|
|
|
### Storage Locations (Priority Order)
|
|
|
|
1. **Blend File Storage** (Highest Priority)
|
|
|
|
- Presets stored in scene custom properties
|
|
- Travel with your .blend file
|
|
- Perfect for project-specific presets
|
|
|
|
2. **Persistent File Storage** (Medium Priority)
|
|
|
|
- Survives addon updates and Blender upgrades
|
|
- Stored in Blender's user config directory
|
|
- Shared across all blend files
|
|
|
|
3. **Local File Storage** (Lowest Priority)
|
|
- Local addon-specific presets
|
|
- Automatically migrated to persistent storage when needed
|
|
|
|
### Preset Features
|
|
|
|
- **Improved UI Display**: Recent bug fix ensures all three preset types (Blend File, Persistent, Local) display properly in the interface
|
|
- **Auto-Migration**: Seamlessly upgrades presets during addon updates
|
|
- **Import/Export**: Backup and share presets across installations
|
|
- **Conflict Resolution**: Smart handling of duplicate preset names
|
|
- **Migration Reports**: Detailed logs of preset migration operations
|
|
|
|
## Development
|
|
|
|
### File Structure
|
|
|
|
```
|
|
text_texture_generator/
|
|
├── blender_manifest.toml # Modern addon manifest (Blender 4.0+)
|
|
├── __init__.py # Main addon code (~5000 lines)
|
|
└── README.md # Documentation
|
|
```
|
|
|
|
### Code Organization
|
|
|
|
- **Utility Functions**: Font detection, validation, system compatibility
|
|
- **Preview Generation**: Real-time texture creation and display
|
|
- **Normal Map Generation**: Height-based normal map algorithms
|
|
- **Positioning System**: 9-point anchors, manual coordinates, constraints
|
|
- **Preset Management**: Three-tier storage with migration system
|
|
- **UI Components**: Collapsible sections, shared drawing functions
|
|
- **Operators**: 20+ operators for all addon functionality
|
|
- **Property Groups**: Comprehensive property system with validation
|
|
|
|
### Contributing
|
|
|
|
The addon is designed with modularity and extensibility in mind. Key areas for contribution:
|
|
|
|
- Additional shader types and material presets
|
|
- Extended image overlay positioning modes
|
|
- Font rendering improvements and compatibility
|
|
- UI/UX enhancements and workflow optimization
|
|
- Platform-specific font detection improvements
|
|
|
|
## License
|
|
|
|
GPL-3.0-or-later
|
|
|
|
## Author
|
|
|
|
Marc Mintel <marc@mintel.me>
|
|
|
|
## Changelog
|
|
|
|
### Version 2.3.2 (Current Code Version)
|
|
|
|
- Advanced positioning system with 9-point anchors and manual coordinates
|
|
- Text fitting with automatic font size adjustment and multiple modes
|
|
- Comprehensive image overlay system with absolute, prepend, and append positioning
|
|
- Normal map generation from text alpha channels with strength/blur controls
|
|
- Advanced shader generation with Principled BSDF, Emission, and Transparent types
|
|
- Light path controls for shadows, reflections, and backfacing geometry
|
|
- Three-tier preset system (blend file → persistent → legacy) with auto-migration
|
|
- Live preview with zoomable Image Editor integration and multiple backgrounds
|
|
- Prepend/append text support with horizontal/vertical layouts
|
|
- Custom font support with mixed-case validation and fallback systems
|
|
- Import/export functionality for preset backup and cross-installation sharing
|
|
- Enhanced error handling and user feedback throughout the interface
|
|
|
|
### Version 1.0.0 (Manifest Version)
|
|
|
|
- Note: The blender_manifest.toml shows version 1.0.0 but the code implements v2.3.2 features
|
|
- Recommendation: Update manifest version to match actual code capabilities
|