79 lines
3.4 KiB
Markdown
79 lines
3.4 KiB
Markdown
---
|
|
name: alpha-mask-creator
|
|
description: Takes an image and creates a high quality alpha mask of the requested entity. Typically invoked when the user asks to "create a specific alpha mask for"
|
|
---
|
|
# Alpha Mask Creator
|
|
|
|
This skill creates alpha masks from images based on user requests. Use this when the user asks to "create a specific alpha mask for..." along with providing an image.
|
|
|
|
## Workflow
|
|
|
|
### 0. Extract layer (conditional)
|
|
If the user provided a layer name from an ora file, you should use the ora-editing skill to extract a png of that layer. First use the inspect to list the layers, then use the extract.
|
|
|
|
### 1. Draw Polygon Outline (optional, default)
|
|
Use the `polygon-drawer` skill to draw a polygon outline around the identified object. If the user asks to bypass the polygon, do so. Save the output to `./tmp/` with a sensible filename:
|
|
- Format: `<original_name>.<object>.png`
|
|
- Example: If the user wants a door mask from `room_010.png`, name it `room_010.door.png`
|
|
|
|
### 2. Extract Mask
|
|
Run the `extract_mask` script to generate the alpha mask. If a polygon was added, make sure to include "with the <color> outline", or "outlined in <color>". You can also explicitly omit things:
|
|
```bash
|
|
source ./tools/venv/bin/activate
|
|
python tools/extract_mask.py "the door with the red outline" ./tmp/<original_name>.<object>.png ./tmp/<original_name>.<object>.mask.png
|
|
```
|
|
|
|
Examples:
|
|
- The boulder outlined in red
|
|
- The door with the blue polygon around it
|
|
- The fence, excluding the bushes behind it
|
|
- The house, including the windows and chimney, outlined in blue
|
|
- The mailbox, including the flag, omitting the house behind it
|
|
|
|
### 3. Quality Check
|
|
Examine the generated mask using the `image-expert` agent:
|
|
- Check if the mask is precise and accurate
|
|
- Verify the object is properly isolated
|
|
- Ensure no artifacts or incorrect areas
|
|
|
|
**If the mask quality is poor:**
|
|
- Retry the polygon-drawer step with different parameters or seed
|
|
- Iterate until the mask is satisfactory
|
|
|
|
### 5. Report Results
|
|
Tell the user:
|
|
- Location of the polygon outline image: `./tmp/<original_name>.<object>.png`
|
|
- Location of the mask: `./tmp/<original_name>.<object>.mask.png`
|
|
- Confirm the mask quality is acceptable
|
|
|
|
### 6. Integrate into existing ora file
|
|
If the user asked to create an alpha mask for a layer from an ora file, offer to add the masked element to the ora file, using the ora-editing skill.
|
|
|
|
## Naming Conventions
|
|
|
|
| User Request | Original File | Output Files |
|
|
|--------------|---------------|--------------|
|
|
| Door | `room_010.png` | `room_010.door.png`, `room_010.door.mask.png` |
|
|
| Tree | `forest_bg.png` | `forest_bg.tree.png`, `forest_bg.tree.mask.png` |
|
|
| Character | `scene_005.png` | `scene_005.character.png`, `scene_005.character.mask.png` |
|
|
|
|
## Tools Used
|
|
|
|
- `image-inspector` - Analyze images to locate objects
|
|
- `polygon-drawer` - Draw polygon outlines
|
|
- `bash` - Run extract_mask script
|
|
- `image-expert` - Verify mask quality
|
|
|
|
## Example Interaction
|
|
|
|
**User:** "Create a specific alpha mask for the door in this image" [attaches `cottage_exterior.png`]
|
|
|
|
**You:**
|
|
1. Analyze the image to locate the door
|
|
2. Draw polygon around the door → `./tmp/cottage_exterior.door.png`
|
|
3. Extract mask → `./tmp/cottage_exterior.door.mask.png`
|
|
4. Verify mask quality
|
|
5. Report: "Mask created successfully! Files saved to:
|
|
- Polygon outline: `./tmp/cottage_exterior.door.png`
|
|
- Alpha mask: `./tmp/cottage_exterior.door.mask.png`"
|