ComfyUI-RotoMask
A rotoscoping tool for ComfyUI that allows you to create animated masks using polygon curves with keyframe interpolation.
Nodes (1)
ComfyUI Roto Mask
A rotoscoping tool for ComfyUI that allows you to create animated masks using polygon curves with keyframe interpolation.
Features
🎨 Interactive Canvas Editor
- Draw Mode: Click to create polygon curves on the canvas
- Edit Mode: Select and drag control points to modify curves
- Soften/Sharpen Points: Toggle individual points between smooth (curved) and sharp (angular)
- Visual Feedback: Selected curves highlighted in blue with semi-transparent overlays
- Auto-Resize: Canvas automatically matches loaded image dimensions (up to 2048px)
🎬 Animation & Timeline
- Keyframe Animation: Each curve has its own independent keyframe timeline
- Automatic Interpolation: Frames between keyframes are automatically interpolated
- Frame Playback: Play/Pause controls with 24fps playback
- Frame Slider: Scrub through frames to preview animation
- Batch Frame Loading: Upload multiple images to create frame sequences
- Output Frame Range: Set custom start and end frames for rendering
🛠️ Advanced Tools
- Feather Amount: Adjustable Gaussian blur for smooth mask edges (0-100)
- Background Color: Customizable mask background color
- Mask Visualization: Adjustable mask color and opacity for preview
- Curve List Panel: Manage all curves with per-curve keyframe navigation
- Multi-Curve Support: Combine multiple curves into a single mask
- Per-Curve Keyframes: Each curve interpolates independently
- Add Point: Add new points to existing curves by clicking on edges
📤 Multiple Outputs
- Mask as Image: RGB mask tensor for preview
- Mask: Single-channel mask for compositing
- Masked Image: Original image with mask overlay applied
- Loaded Image: Original loaded image
Installation
-
Clone or download this repository into your ComfyUI
custom_nodesdirectory:ComfyUI/custom_nodes/ComfyUI_Roto/ -
Install dependencies:
pip install -r requirements.txt -
Restart ComfyUI
Quick Start
-
Add the Node: Search for "Roto Mask" in the node menu and add it to your workflow
-
Load Frames (optional):
- Click "Load Frames" button
- Select multiple images (Ctrl+Click or Shift+Click)
- Images will be uploaded and the frame slider will update automatically
-
Draw Curves:
- Press
Bor click "Draw (B)" to enter Draw mode - Click on the canvas to create a polygon curve
- Curves are automatically closed for filled masks
- Press
-
Edit Curves:
- Press
Vor click "Edit (V)" to enter Edit mode - Click and drag control points to modify curves
- Use Shift+Click to select multiple points
- Click "Soften Point" to make selected points smooth (curved)
- Click "Sharpen Point" to make selected points angular
- Press
-
Add Points:
- Select a curve in Edit mode
- Click "Add Point" button
- Click on a curve edge to add a new point at that location
-
Animate:
- Move the frame slider to a different frame
- Edit curves on that frame (automatically creates keyframes)
- Frames between keyframes will interpolate automatically
-
Adjust Settings:
- Feather Amount: Use the slider to control edge softness (0 = sharp, 100 = very soft)
- Mask Color: Choose the background color for masked areas
-
Render: Set frame range (set to full range by default) to render a specific range of the total loaded clip
Advanced Usage
Independent Curve Interpolation
Each curve maintains its own keyframe timeline. This means:
- Curve A can have keyframes at frames 1, 10, 20
- Curve B can have keyframes at frames 1, 15, 30
- They interpolate independently without interfering with each other
Keyframe Management
- Creating Keyframes: Edit a curve on a non-keyframe frame - only that curve gets a keyframe
- Navigating Keyframes: Use ◀/▶ buttons in the curve list to jump between keyframes for each curve
- Deleting Keyframes: Click 🔑✕ button to remove a keyframe for a specific curve on the current frame
- Deleting Curves: Click ✕ button to remove a curve from all frames
The value is stored in the curve metadata and persists with your workflow.
UI Controls
Toolbar
- Load Frames: Upload multiple images for frame sequences
- Draw (B): Switch to draw mode
- Edit (V): Switch to edit mode
- Add Point: Click to enable, then click on curve edge to add point
- Soften/Sharpen Point: Toggle selected points between smooth and angular
Timeline
- Frame Counter: Shows current frame / total frames
- Frame Slider: Scrub through frames
- Play/Pause: Toggle animation playback at 24fps
Settings Panel
- Mask Visualization Settings:
- Mask Color: Color picker for preview overlay color
- Mask Opacity: Slider to control preview overlay transparency (0-100%)
- Image Output Settings:
- Feather Amount: Slider to control edge softness (0-100)
- Background Color: Color picker for mask background
- Output Frame Range:
- Start Frame: First frame to render
- End Frame: Last frame to render
Curve List Panel
- Shows all curves with their IDs
- Red dot: Indicates curve has a keyframe on current frame
- ◀: Jump to previous keyframe for this curve
- ▶: Jump to next keyframe for this curve
- 🔑✕: Delete keyframe for this curve on current frame
- ✕: Delete curve from all frames
- Click curve name: Select curve on canvas
License
MIT License - see LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.