91 lines
2.8 KiB
Markdown
91 lines
2.8 KiB
Markdown
# ComfyUI-MultiCutAndDrag
|
|
|
|
A ComfyUI extension that allows cutting and dragging multiple parts of an image along specified paths, with advanced masking capabilities.
|
|
|
|
## Features
|
|
|
|
### MultiCutAndDragOnPath
|
|
|
|
This node allows you to cut out parts of an image based on masks and then animate them along specified coordinate paths.
|
|
|
|
**Features:**
|
|
- Cut multiple regions from an image using masks
|
|
- Drag these regions along coordinate paths
|
|
- Optionally rotate the cut regions during animation
|
|
- Background inpainting for removed regions
|
|
- Supports custom background images
|
|
- Creates a batch of frames showing the animation
|
|
|
|
**Input Format:**
|
|
Coordinate paths should be provided as a JSON array of arrays containing coordinate objects:
|
|
|
|
```json
|
|
[
|
|
[{"x": 100, "y": 100}, {"x": 200, "y": 200}, {"x": 300, "y": 100}],
|
|
[{"x": 50, "y": 150}, {"x": 40, "y": 200}, {"x": 30, "y": 250}],
|
|
]
|
|
```
|
|
|
|
### BatchImageToMask
|
|
|
|
This node converts RGB images to binary masks using grayscale conversion and thresholding.
|
|
|
|
**Features:**
|
|
- Batch processing of multiple images
|
|
- Automatic handling of different tensor formats and dimensions
|
|
- Adjustable threshold for mask creation
|
|
- Optional morphological dilation to expand mask areas
|
|
|
|
### MapTrajectoriesToSegmentedMasks
|
|
|
|
This node aligns trajectory paths with mask centroids, allowing for more intuitive animation of segmented objects.
|
|
|
|
**Features:**
|
|
- Automatically calculates the centroid of each mask
|
|
- Translates trajectory paths to align with mask centroids
|
|
- Maintains the shape and relative positions within each path
|
|
- Handles multi-channel and single-channel masks
|
|
- Returns both transformed masks and the translated trajectory JSON
|
|
|
|
## Installation
|
|
|
|
### Method 1: Via ComfyUI Manager
|
|
|
|
1. Open ComfyUI Manager
|
|
2. Search for "MultiCutAndDrag"
|
|
3. Click Install
|
|
|
|
### Method 2: Manual Installation
|
|
|
|
```
|
|
WORKDIR /comfyui/custom_nodes
|
|
RUN git clone https://github.com/pablerdo/ComfyUI-MultiCutAndDrag.git --recursive
|
|
WORKDIR /comfyui/custom_nodes/ComfyUI-MultiCutAndDrag
|
|
RUN git reset --hard (latestcommit hash)
|
|
RUN if [ -f requirements.txt ]; then python -m pip install -r requirements.txt; fi
|
|
RUN if [ -f install.py ]; then python install.py || echo "install script failed"; fi
|
|
```
|
|
3. Restart ComfyUI
|
|
|
|
## Example Workflow
|
|
|
|
1. Load an image and create masks for the areas you want to animate
|
|
2. Use BatchImageToMask to convert segmentation images to proper masks if needed
|
|
3. Define coordinate paths for each mask
|
|
4. Connect them to MultiCutAndDragOnPath to create an animation sequence
|
|
5. Alternatively, use MapTrajectoriesToSegmentedMasks to automatically align trajectories with mask centroids
|
|
|
|
## Requirements
|
|
|
|
- torch >= 2.0.0
|
|
- torchvision >= 0.15.0
|
|
- numpy >= 1.20.0
|
|
- Pillow >= 9.0.0
|
|
- scipy >= 1.8.0
|
|
- opencv-python
|
|
- Other dependencies as listed in requirements.txt
|
|
|
|
## License
|
|
|
|
This project is licensed under the GNU General Public License v3.0
|