diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..8f3303c --- /dev/null +++ b/readme.md @@ -0,0 +1,90 @@ +# 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