Extensions/comfyui-pose-selector
ComfyUI Extension

comfyui-pose-selector

ComfyUI module for selecting and managing text prompts (poses) from a modular JSON library with visual preview. (Description by CC)

By AlexZHIMuk·Created 4 months ago·Updated 4 days ago· 4
AlexZHIMuk/comfyui-pose-selector
Nodes
On cloudLocal install
Stars4
Updated4 days ago
Readme

Pose Selector for ComfyUI - Developer Guide

Этот модуль предназначен для выбора текстовых промптов (поз) из модульной JSON-библиотеки с визуальным превью и автоматической подстановкой в текст через тег {POSE}.

Архитектура модуля

1. Категории и Данные (js/categories/)

  • Библиотека разделена на .json файлы, каждый из которых представляет отдельную категорию.
  • Стандарты именования (Strict Rules):
    • Имя позы (name): Должно начинаться с имени JSON-файла + порядковый номер (например, в Classic.json позы называются Classic 01, Classic 02).
    • Изображение (image): Имя файла изображения в папке poses/ должно строго соответствовать имени позы (например, Classic 01.jpg).
    • Исключение из рандома: Если имя JSON-файла начинается с подчеркивания (например, _Hidden.json), категория будет доступна для ручного выбора, но не будет участвовать в глобальном рандоме (random_from_all).

2. Backend (pose_selector.py)

  • Динамический импорт: При запуске сканирует JSON-файлы, сортирует их по алфавиту и формирует списки для валидации в ComfyUI.
  • Входы:
    • text: Текст с тегом {POSE}.
    • category & pose_name: Выбор категории и конкретной позы.
    • random_from_category (BOOLEAN): Рандом внутри выбранной рубрики.
    • random_from_all (BOOLEAN): Рандом по всей библиотеке (за исключением файлов с префиксом _).
    • sequential_selection (BOOLEAN): Последовательный перебор поз. Использует формулу index = seed % count. Работает как для отдельной категории, так и для всего списка (если включен random_from_all).
    • seed (INT): Контроль случайности или индекс для последовательного выбора.
  • Логика работы:
    • IS_CHANGED: Возвращает seed, если включен рандом или последовательный перебор, чтобы форсировать выполнение ноды.
    • Синхронизация: Через PromptServer отправляет событие pose_selector_update для мгновенного обновления UI при серверном рандоме.
    • Исключение из выборки: Если в categories положить JSON с подчёркиванием первым символом (_Sample.json), то из этой категории промпты в выборку попадать не будут.

3. Frontend (js/pose_selector.js)

  • Динамическая фильтрация: Обновляет список pose_name при смене category.
  • Кэширование: Все запросы к JSON-файлам дополняются временной меткой (?t=...), что предотвращает использование устаревших закэшированных данных браузером после правок JSON.
  • Интерфейс:
    • Превью: Отрисовывается в кастомном виджете pose_preview.
    • Кнопки Random: Позволяют вручную перемешать позы прямо в интерфейсе без запуска генерации.

Установка и Окружение

Скопировать папку comfyui-pose-selector в ComfyUI/custom_nodes/.