ComfyUI Extension: ComfyUI McKlinton Pack — Mask Node

Authored by McKlinton2

Created

Updated

1 stars

This custom node for ComfyUI enables detailed segmentation of colored mask images into specific anatomical regions for male and female bodies.

Custom Nodes (0)

    README

    ComfyUI McKlinton Pack — Mask Node

    This custom node for ComfyUI enables detailed segmentation of colored mask images into specific anatomical regions for male and female bodies.

    It is mainly intended to be used with Virt-A-Mate plugin SnapshotAnimator, which is able to export depth and segmentation maps from VAM scenes. The plugin is available for my Patreons at https://www.patreon.com/McKlintonProductions. See also the plugin description at https://hub.virtamate.com/resources/snapshot-animator.45689/.

    <img src="./images/masknode.png" alt="Mask Node" width="600">

    Features

    • Reads pre-generated colored segmentation maps and extracts:
      • Female parts: body, face, hair, breasts, hands, genitals
      • Male parts: body, face, hair, hands, genitals, pubic area
    • Generates combined masks for:
      • Entire male and female body masks
      • All genital regions
    • Returns corresponding:
      • RGB color image
      • Depth map
      • Raw segmentation image
      • Prompt text associated with the image set
    • Optional random sample selection from folder
    • Supports resizing and cropping of images with the following modes:
      • Keep original size
      • Resize to specified dimensions
      • Resize and crop to specified dimensions

    Folder Structure

    This node expects a folder containing related image files, named in the following format:

    masks_<image_name>.png
    color_<image_name>.png
    depth_<image_name>.png
    prompt_<image_name>.txt
    

    Each set of files must use the same <image_name> to be grouped together.

    How It Works

    • It reads and processes one image set based on an index (or randomly).
    • The mask image is processed by detecting exact RGB colors defined for each body part.
    • Supports resizing and cropping of images to fit the pipeline requirements.
    • Resulting masks are returned as tensors in the ComfyUI pipeline.

    Input Parameters

    | Name | Type | Description | |----------------|----------|---------------------------------------------------------| | folder | string | Path to folder containing the image sets | | index | int | Which image set to load (if random_index is false) | | random_index | boolean | If true, randomly selects one set from the folder | | resize_mode | string | Resizing mode: keep original, resize, or resize and crop | | width | int | Target width for resizing (if applicable) | | height | int | Target height for resizing (if applicable) |

    Outputs

    | Output Name | Description | |------------------|--------------------------------------| | female_body | Mask for female body (blue) | | female_face | Mask for female face (green) | | female_hair | Mask for female hair (teal) | | female_breast | Mask for female breasts (magenta) | | female_hands | Mask for female hands (yellow) | | female_vag | Mask for female genitals (red) | | male_body | Mask for male body (purple) | | male_face | Mask for male face (pink) | | male_hair | Mask for male hair (olive) | | male_hands | Mask for male hands (orange) | | male_pen | Mask for genitals (lime) | | male_pubic | Mask for male pubic area (aqua) | | female_full | Union of all female parts | | male_full | Union of all male parts | | all_gens | Union of genitals (vag, pen, pubic) | | color | RGB color image (normalized tensor) | | depth | Depth image (normalized tensor) | | segmentation | Raw segmentation image | | prompt | Prompt text (from .txt file) |

    🎨 Mask Identification Colors

    | Mask Name | RGB Value | HEX Code | |------------------|-------------------|------------| | female_body | (0, 0, 255) | #0000FF | | female_face | (0, 255, 0) | #00FF00 | | female_hair | (0, 128, 128) | #008080 | | female_breast | (255, 0, 255) | #FF00FF | | female_hands | (255, 255, 0) | #FFFF00 | | female_vag | (255, 0, 0) | #FF0000 | | male_body | (128, 0, 255) | #8000FF | | male_face | (255, 0, 128) | #FF0080 | | male_hair | (128, 128, 0) | #808000 | | male_hands | (255, 128, 0) | #FF8000 | | male_pen | (128, 255, 0) | #80FF00 | | male_pubic | (128, 255, 255) | #80FFFF |

    Installation

    Clone this repository in the directory:

    ComfyUI/custom_nodes/comfyui-mcklinton-pack
    

    Then restart ComfyUI. The node will appear under:

    McKlinton/masking → Mask Node
    

    Notes

    • Only exact RGB matches are used for mask generation.
    • If a mask image is missing or can't be read, a zero-mask is returned instead.
    • Resizing and cropping options ensure compatibility with different pipeline requirements.

    License

    This project is under the Apache 2.0 License.