feat: implement Actions Gallery with character integration and triple LoRA chaining
- Added Actions gallery with CRUD and JSON sync - Implemented Triple LoRA workflow (Character -> Outfit -> Action) - Added character-integrated previews for Actions with style matching - Implemented granular prompt selection and default persistence for Actions - Added detailed development guide for extending gallery features
This commit is contained in:
105
README.md
105
README.md
@@ -6,16 +6,17 @@ A local web-based GUI for managing character profiles (JSON) and generating cons
|
||||
|
||||
- **Character Gallery**: Automatically scans your `characters/` folder and builds a searchable, sortable database.
|
||||
- **Outfit Gallery**: Manage reusable outfit presets that can be applied to any character.
|
||||
- **AI-Powered Creation**: Create new characters and outfits using AI to generate profiles from descriptions, or manually create blank templates.
|
||||
- **Granular Prompt Control**: Every field in your character JSON (Identity, Wardrobe, Styles) has a checkbox. You decide exactly what is sent to the AI.
|
||||
- **Actions Gallery**: A library of reusable poses and actions (e.g., "Belly Dancing", "Sword Fighting") that can be previewed on any character model.
|
||||
- **AI-Powered Creation**: Create new characters, outfits, and actions using AI to generate profiles from descriptions, or manually create blank templates.
|
||||
- **character-Integrated Previews**: Standalone items (Outfits/Actions) can be previewed directly on a specific character's model with automatic style injection (e.g., background color matching).
|
||||
- **Granular Prompt Control**: Every field in your JSON models (Identity, Wardrobe, Styles, Action details) has a checkbox. You decide exactly what is sent to the AI.
|
||||
- **ComfyUI Integration**:
|
||||
- **SDXL Optimized**: Designed for high-quality SDXL workflows.
|
||||
- **SDXL Optimized**: Designed for high-quality SDXL/Illustrious workflows.
|
||||
- **Localized ADetailer**: Automated Face and Hand detailing with focused prompts (e.g., only eye color and expression are sent to the face detailer).
|
||||
- **LoRA Support**: Automatically detects and applies LoRAs specified in your character sheets.
|
||||
- **Triple LoRA Chaining**: Chains up to three distinct LoRAs (Character + Outfit + Action) sequentially in the generation workflow.
|
||||
- **Real-time Progress**: Live progress bars and queue status via WebSockets (with a reliable polling fallback).
|
||||
- **Batch Processing**:
|
||||
- **Fill Missing**: Generate covers for every character missing one with a single click.
|
||||
- **Refresh All**: Unassign all current covers and generate a fresh set for the whole collection.
|
||||
- **Advanced Generator**: A dedicated page to mix-and-match characters with different checkpoints (Illustrious/Noob support) and custom prompt additions.
|
||||
- **Smart URLs**: Sanitized, human-readable URLs (slugs) that handle special characters and slashes gracefully.
|
||||
|
||||
@@ -47,104 +48,30 @@ A local web-based GUI for managing character profiles (JSON) and generating cons
|
||||
|
||||
## Usage
|
||||
|
||||
### Creating Characters & Outfits
|
||||
- **AI Generation**: Toggle "Use AI to generate profile from description" on, then describe your character or outfit. The AI will generate a complete profile with appropriate tags.
|
||||
### Creating Content
|
||||
- **AI Generation**: Toggle "Use AI to generate profile from description" on, then describe your character, outfit, or action. The AI will generate a complete profile with appropriate tags.
|
||||
- **Manual Creation**: Toggle AI generation off to create a blank template you can edit yourself.
|
||||
- **Auto-naming**: Leave the filename field empty to auto-generate one from the name. If a file already exists, a number will be appended automatically.
|
||||
|
||||
### Gallery Management
|
||||
- **Rescan**: Use the "Rescan Character Files" button if you've added new JSON files or manually edited them.
|
||||
- **Save Defaults**: On a character page, select your favorite prompt combination and click "Save as Default Selection" to remember it for future quick generations.
|
||||
- **Rescan**: Use the "Rescan" buttons if you've added new JSON files or manually edited them.
|
||||
- **Save Defaults**: On any detail page, select your favorite prompt combination and click "Save as Default Selection" to remember it for future generations.
|
||||
|
||||
### Generation
|
||||
- **Preview**: Generates an image and shows it to you without replacing your current cover.
|
||||
- **Replace**: Generates an image and sets it as the character's official gallery cover.
|
||||
- **Replace**: Generates an image and sets it as the item's official gallery cover.
|
||||
- **Clean Start**: If you want to wipe the database and all generated images to start fresh:
|
||||
```bash
|
||||
./launch.sh --clean
|
||||
```
|
||||
|
||||
## JSON Structure
|
||||
|
||||
### Character Profile
|
||||
```json
|
||||
{
|
||||
"character_id": "example_character",
|
||||
"character_name": "Example Character",
|
||||
"identity": {
|
||||
"base_specs": "1girl, slender build, fair skin",
|
||||
"hair": "long blue hair",
|
||||
"eyes": "blue eyes",
|
||||
"hands": "",
|
||||
"arms": "",
|
||||
"torso": "",
|
||||
"pelvis": "",
|
||||
"legs": "",
|
||||
"feet": "",
|
||||
"extra": ""
|
||||
},
|
||||
"defaults": {
|
||||
"expression": "smile",
|
||||
"pose": "standing",
|
||||
"scene": "simple background"
|
||||
},
|
||||
"wardrobe": {
|
||||
"default": {
|
||||
"full_body": "",
|
||||
"headwear": "",
|
||||
"top": "white blouse",
|
||||
"bottom": "blue skirt",
|
||||
"legwear": "black thighhighs",
|
||||
"footwear": "black shoes",
|
||||
"hands": "",
|
||||
"accessories": "ribbon"
|
||||
}
|
||||
},
|
||||
"styles": {
|
||||
"aesthetic": "anime style",
|
||||
"primary_color": "blue",
|
||||
"secondary_color": "white",
|
||||
"tertiary_color": ""
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "",
|
||||
"lora_weight": 1.0,
|
||||
"lora_triggers": ""
|
||||
},
|
||||
"tags": ["tag1", "tag2"]
|
||||
}
|
||||
```
|
||||
|
||||
### Outfit Profile
|
||||
```json
|
||||
{
|
||||
"outfit_id": "school_uniform_01",
|
||||
"outfit_name": "School Uniform",
|
||||
"wardrobe": {
|
||||
"full_body": "",
|
||||
"headwear": "",
|
||||
"top": "white blouse, sailor collar",
|
||||
"bottom": "pleated skirt",
|
||||
"legwear": "knee socks",
|
||||
"footwear": "loafers",
|
||||
"hands": "",
|
||||
"accessories": "ribbon tie"
|
||||
},
|
||||
"lora": {
|
||||
"lora_name": "",
|
||||
"lora_weight": 0.8,
|
||||
"lora_triggers": ""
|
||||
},
|
||||
"tags": ["school uniform", "uniform"]
|
||||
}
|
||||
```
|
||||
|
||||
## File Structure
|
||||
|
||||
- `/data/characters`: Your character JSON files.
|
||||
- `/data/characters`: Character JSON files.
|
||||
- `/data/clothing`: Outfit preset JSON files.
|
||||
- `/static/uploads`: Generated images (organized by character subfolders).
|
||||
- `/templates`: HTML UI using Bootstrap 5.
|
||||
- `/data/actions`: Action/Pose preset JSON files.
|
||||
- `/static/uploads`: Generated images (organized by subfolders).
|
||||
- `app.py`: Flask backend and prompt-building logic.
|
||||
- `comfy_workflow.json`: The API-format workflow used for generations.
|
||||
- `models.py`: SQLite database schema.
|
||||
- `models.py`: SQLAlchemy database models.
|
||||
- `DEVELOPMENT_GUIDE.md`: Architectual patterns for extending the browser.
|
||||
|
||||
Reference in New Issue
Block a user