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)
AlexZHIMuk/comfyui-pose-selector
Nodes1
On cloudLocal install
Categoryutils
Stars6
Updated7 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): Контроль случайности или индекс для последовательного выбора.undressing_mode(BOOLEAN): Динамический режим подстановки одежды.- Поля подстановки (
clothes,undrwr_color,undrwr1...undrwr4): Динамические текстовые поля.
- Логика работы:
- Замена переменных (Undressing Mode): Если включен этот режим, скрипт ищет в сыром тексте позы теги
{CLOTHES},{UNDRWR1}...{UNDRWR4}и заменяет их на значения из соответствующих полей (с автоматическим приклеиванием общего цвета изundrwr_color). - Умная очистка: Если какая-то переменная (например,
undrwr4) пуста, скрипт удаляет её тег и автоматически вычищает висячие запятые и двойные пробелы (например,bra, , panties.превращается вbra, panties.). - IS_CHANGED: Возвращает
seed, если включен рандом или последовательный перебор, чтобы форсировать выполнение ноды. - Синхронизация: Через
PromptServerотправляет событиеpose_selector_updateдля мгновенного обновления UI при серверном рандоме.
- Замена переменных (Undressing Mode): Если включен этот режим, скрипт ищет в сыром тексте позы теги
3. Frontend (js/pose_selector.js)
- Динамическая видимость полей: Скрипт отслеживает состояние чекбокса
undressing_mode. При включении он бережно восстанавливает скрытые текстовые поля (w.type,w.computeSize,w.drawиdisplay: blockдля HTML-элементов). При выключении поля сжимаются (height=0) и ихdraw-функция блокируется (() => {}), предотвращая перехлест HTML-элементов над другими виджетами (DOM visibility isolation). - Динамическая фильтрация: Обновляет список
pose_nameпри сменеcategory. - Кэширование: Все запросы к JSON-файлам дополняются временной меткой (
?t=...), что предотвращает использование устаревших закэшированных данных браузером после правок JSON. - Интерфейс:
- Превью: Отрисовывается в кастомном виджете
pose_preview. - Кнопки Random: Позволяют вручную перемешать позы прямо в интерфейсе без запуска генерации.
- Превью: Отрисовывается в кастомном виджете
Установка и Окружение
- Копировать папку
comfyui-pose-selectorвComfyUI/custom_nodes/. - JSON-файлы — в
js/categories/, изображения — вposes/.