wip
This commit is contained in:
BIN
Archive.zip
BIN
Archive.zip
Binary file not shown.
262
README.md
262
README.md
@@ -1,26 +1,80 @@
|
|||||||
# Text Texture Generator - Blender Addon
|
# Text Texture Generator - Blender Addon
|
||||||
|
|
||||||
A modern Blender addon that generates image textures from text with extensive customization options.
|
A modern Blender addon that generates image textures from text with extensive customization options and advanced features.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- **Text Input**: Enter any text to convert into a texture
|
- **Text Input & Processing**:
|
||||||
- **Customizable Size**: Adjust texture dimensions (64x64 to 4096x4096 pixels)
|
|
||||||
- **Font Controls**:
|
- Enter any text to convert into a texture (up to 1024 characters)
|
||||||
- Multiple font options (system-dependent)
|
- Prepend and append text support with customizable margins
|
||||||
- Adjustable font size (8-200px)
|
- 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)
|
- Text alignment (left, center, right)
|
||||||
- **Color Controls**:
|
|
||||||
- Text color picker with alpha
|
- **Image Overlay System**:
|
||||||
- Background color picker with alpha
|
|
||||||
|
- 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
|
- Transparent background option
|
||||||
- **Layout Options**:
|
- Preview background options (transparent, solid color, gradient)
|
||||||
- Adjustable padding around text
|
|
||||||
- Professional text positioning
|
- **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, Legacy
|
||||||
|
- Presets travel with .blend files
|
||||||
|
- 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**:
|
- **Blender Integration**:
|
||||||
- Automatic image texture node creation in Shader Editor
|
- Works in Shader Editor, 3D Viewport, and Properties panel
|
||||||
- Works in both Shader Editor and 3D Viewport
|
- Automatic texture node creation with proper connections
|
||||||
- Generated textures are packed into the .blend file
|
- Generated textures are packed into the .blend file
|
||||||
|
- Menu integration across multiple editors
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -64,40 +118,105 @@ A modern Blender addon that generates image textures from text with extensive cu
|
|||||||
|
|
||||||
### Text Settings
|
### Text Settings
|
||||||
|
|
||||||
- **Text**: The text to render (up to 1024 characters)
|
- **Main Text**: Primary text to render (up to 1024 characters)
|
||||||
- **Font**: System font selection (varies by OS)
|
- **Prepend Text**: Text to add before main text (up to 512 characters)
|
||||||
- **Font Size**: Size of the text in pixels (8-200)
|
- **Append Text**: Text to add after main text (up to 512 characters)
|
||||||
- **Alignment**: Text alignment (left, center, right)
|
- **Layout**: Horizontal or vertical arrangement of text elements
|
||||||
- **Padding**: Space around text in pixels (0-100)
|
- **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
|
### Texture Settings
|
||||||
|
|
||||||
- **Width/Height**: Texture dimensions in pixels (64-4096)
|
- **Dimensions**: Canvas size in pixels (64x64 to 4096x4096)
|
||||||
- **Text Color**: RGBA color picker for text
|
- **Text Color**: RGBA color picker with full alpha support
|
||||||
- **Transparent Background**: Enable/disable background transparency
|
- **Background**: Transparent or solid color with RGBA control
|
||||||
- **Background Color**: RGBA color picker for background (when not transparent)
|
|
||||||
|
### 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
|
## System Requirements
|
||||||
|
|
||||||
- Blender 4.0.0 or newer
|
- Blender 4.0.0 or newer
|
||||||
- Python 3.10+ (included with Blender)
|
- Python 3.10+ (included with Blender)
|
||||||
- Pillow library (automatically installed via pip)
|
- Pillow library (>=10.0.0, automatically installed via pip)
|
||||||
|
|
||||||
## Supported Fonts
|
## Font Support
|
||||||
|
|
||||||
The addon includes several built-in font options that vary by operating system:
|
The addon features intelligent font detection and validation:
|
||||||
|
|
||||||
### Windows
|
### System Font Detection
|
||||||
|
|
||||||
- Arial, Times New Roman, Courier New, Calibri, Segoe UI
|
- 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
|
||||||
|
|
||||||
### macOS
|
### Windows Fallback Fonts
|
||||||
|
|
||||||
- Arial, Times New Roman, Courier New, Helvetica, SF Pro Display, Menlo
|
- Arial, Calibri, Segoe UI, Verdana, Tahoma, Times, Trebuchet MS
|
||||||
|
|
||||||
### Linux
|
### macOS Fallback Fonts
|
||||||
|
|
||||||
- DejaVu Sans, DejaVu Serif, DejaVu Sans Mono, Ubuntu
|
- 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
|
## Dependencies
|
||||||
|
|
||||||
@@ -132,20 +251,66 @@ The addon automatically installs required dependencies:
|
|||||||
- Very long text strings may affect performance
|
- Very long text strings may affect performance
|
||||||
- Generated textures are stored in memory and packed with the .blend file
|
- 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. **Legacy File Storage** (Lowest Priority)
|
||||||
|
- Backward compatibility with old addon versions
|
||||||
|
- Automatically migrated to persistent storage
|
||||||
|
|
||||||
|
### Preset Features
|
||||||
|
|
||||||
|
- **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
|
## Development
|
||||||
|
|
||||||
### File Structure
|
### File Structure
|
||||||
|
|
||||||
```
|
```
|
||||||
text_texture_generator/
|
text_texture_generator/
|
||||||
├── blender_manifest.toml # Modern addon manifest
|
├── blender_manifest.toml # Modern addon manifest (Blender 4.0+)
|
||||||
├── __init__.py # Main addon code
|
├── __init__.py # Main addon code (~5000 lines)
|
||||||
└── README.md # This file
|
└── 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
|
### Contributing
|
||||||
|
|
||||||
Feel free to submit issues and enhancement requests. The addon is designed to be simple and focused on core text texture generation functionality.
|
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
|
## License
|
||||||
|
|
||||||
@@ -157,11 +322,22 @@ Marc Mintel <marc@mintel.me>
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
### Version 1.0.0
|
### Version 2.3.2 (Current Code Version)
|
||||||
|
|
||||||
- Initial release
|
- Advanced positioning system with 9-point anchors and manual coordinates
|
||||||
- Text to texture conversion
|
- Text fitting with automatic font size adjustment and multiple modes
|
||||||
- Customizable fonts, colors, and sizing
|
- Comprehensive image overlay system with absolute, prepend, and append positioning
|
||||||
- Transparent background support
|
- Normal map generation from text alpha channels with strength/blur controls
|
||||||
- Automatic Blender integration
|
- Advanced shader generation with Principled BSDF, Emission, and Transparent types
|
||||||
- Cross-platform font support
|
- 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
|
||||||
|
|||||||
@@ -1265,7 +1265,7 @@ def generate_texture_image(props, width, height):
|
|||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|
||||||
# Get the main text
|
# Get the main text
|
||||||
main_text = props.text if props.text and props.text.strip() else "Hello World"
|
main_text = props.text if props.text is not None else ""
|
||||||
|
|
||||||
# Get prepend and append text
|
# Get prepend and append text
|
||||||
prepend_text = props.prepend_text.strip() if props.prepend_text else ""
|
prepend_text = props.prepend_text.strip() if props.prepend_text else ""
|
||||||
@@ -1956,7 +1956,7 @@ class TEXT_TEXTURE_Properties(PropertyGroup):
|
|||||||
text: StringProperty(
|
text: StringProperty(
|
||||||
name="Text",
|
name="Text",
|
||||||
description="Text to render as texture",
|
description="Text to render as texture",
|
||||||
default="Hello World",
|
default="",
|
||||||
maxlen=1024,
|
maxlen=1024,
|
||||||
update=update_live_preview
|
update=update_live_preview
|
||||||
)
|
)
|
||||||
|
|||||||
BIN
demo.blend
Normal file
BIN
demo.blend
Normal file
Binary file not shown.
Reference in New Issue
Block a user