Анимация по позе: UniAnimate
Урок «wrapper-unianimate» в группе WanVideoWrapper списка уроков. Шагов: 16.
Сначала согласие
Оживлять так можно только того, кто на это согласен: себя, придуманного героя или человека, который разрешил. Получите разрешение на исходные материалы и учитывайте местные законы. См. Правила содержимого.
Чему вы научитесь
Герой с картинки повторит движения человека из видео. Хватит модели Wan 2.1 и одной LoRA.
Что понадобится
- Файлы моделей, которые урок проверяет:
- модель Wan 2.1 «картинка в видео» (i2v) 14B:
models/diffusion_models, напримерwan2.1_i2v_480p_14B_fp8_scaled.safetensors; - чтение текста Wan, umt5-xxl:
models/text_encoders, напримерumt5_xxl_fp8_e4m3fn_scaled.safetensors; - VAE от Wan 2.1 (wan_2.1_vae):
models/vae, напримерwan_2.1_vae.safetensors; - файл clip_vision_h:
models/clip_vision, напримерclip_vision_h.safetensors; - файл LoRA для UniAnimate:
models/loras, напримерUniAnimate-Wan2.1-14B-Lora-12000-fp16.safetensors.
- модель Wan 2.1 «картинка в видео» (i2v) 14B:
- Ноды: WanVideo Model Loader, WanVideo T5 Text Encoder Loader, WanVideo VAE Loader, WanVideo TextEncode, Load Image, Load CLIP Vision, WanVideo ClipVision Encode, WanVideo Lora Select, Load Video, Get Video Components, WanVideo UniAnimate DWPose Detector, WanVideo UniAnimate Pose Input, WanVideo ImageToVideo Encode, WanVideo Sampler, WanVideo Decode, Create Video, Save Video.
- Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.
Шаги
Слова каждого шага, как их показывает урок. Имена нод выделены.
Что делает UniAnimate (чтение)
UniAnimate устроен как LoRA для модели Wan 2.1 «картинка в видео». С ней модель слушается скелета: из видео с движущимся человеком вынимается поза в каждом кадре, и герой с вашей картинки повторяет эти движения.
В отличие от Wan Animate, лицо и мимику она не переносит, только тело. Зато отдельная модель не нужна.
Оживлять так можно только того, кто на это согласен: себя, придуманного героя или человека, который разрешил. Получите разрешение на исходные материалы и учитывайте местные законы.
Урок собирает граф с пустого холста: «Файл ▸ Новый проект».
Загрузите модель
Добавьте ноду WanVideo Model Loader и выберите в поле
modelмодель Wan 2.1i2v14B, вариант 480p или 720p.Если нужного файла в списке нет, значит, его нет в вашем ComfyUI. Приложение ничего не скачивает. Проще всего открыть в самом ComfyUI любой пример графа Wan 2.1 I2V из папки
example_workflowsпака WanVideoWrapper: он покажет, каких файлов не хватает и куда их положить. Потом выберите здесь в меню «Синхронизация ▸ Синхронизировать сейчас», и файлы появятся в списках.Чтение текста и VAE
Добавьте ноды WanVideo T5 Text Encoder Loader и WanVideo VAE Loader. В поле
model_nameпервой выберите файлumt5-xxl-enc, второй файлwan_2.1_vae.Опишите героя и место
Добавьте ноду WanVideo TextEncode и подключите ко входу
t5выход ноды WanVideo T5 Text Encoder Loader. В полеpositive_promptопишите, кто в кадре, во что одет и где находится.Движение описывать не нужно: его задаст видео.
Загрузите героя
Добавьте ноду Load Image и выберите в поле
imageкартинку с героем. Лучше всего в полный рост и в позе, похожей на первую позу из видео.Покажите картинку модели
Добавьте ноды Load CLIP Vision и WanVideo ClipVision Encode. В поле
clip_nameпервой выберите файлclip_vision_h. Её выход подключите ко входуclip_visionвторой, картинку ко входуimage_1.Модели Wan 2.1 «картинка в видео» без этого не обходятся.
Добавьте LoRA UniAnimate
Добавьте ноду WanVideo Lora Select и выберите в поле
loraфайл UniAnimate для Wan 2.1 14B. Её выход подключите ко входуloraзагрузчика модели.Без этой LoRA скелет подключить нельзя: запуск остановится с ошибкой.
Загрузите видео с движением
Добавьте ноды Load Video и Get Video Components. В поле
fileпервой выберите видео из папкиinput, её выход подключите ко входуvideoвторой.Берите видео, где человек один в кадре и виден целиком.
Выньте позу
Добавьте ноду WanVideo UniAnimate DWPose Detector. Ко входу
pose_imagesподключите выходimagesноды Get Video Components, ко входуreference_pose_imageкартинку с героем.Нода рисует скелет для каждого кадра и отдельно скелет героя с картинки. По второму модель понимает, чем сложение героя отличается от человека в видео.
Две небольшие модели для поиска позы эта нода скачивает сама, когда граф первый раз запускают в ComfyUI. Само приложение ничего не скачивает.
Передайте скелет модели
Добавьте ноду WanVideo UniAnimate Pose Input. Выход poses ноды WanVideo UniAnimate DWPose Detector подключите ко входу pose_images, выход reference_pose ко входу reference_pose_image.
Поле strength оставьте 1: это сила, с которой скелет ведёт героя.
- Подготовьте старт
Добавьте ноду WanVideo ImageToVideo Encode. Ко входу vae подключите выход ноды WanVideo VAE Loader, ко входу start_image картинку, ко входу clip_embeds выход ноды WanVideo ClipVision Encode.
В поле num_frames оставьте 81, это пять секунд. Размер ролика задают поля width и height.
- Добавьте сэмплер
Добавьте ноду WanVideo Sampler и подключите к ней:
- ко входу
modelмодель; - ко входу
text_embedsпромпт; - ко входу
image_embedsвыход ноды WanVideo ImageToVideo Encode; - ко входу
unianimate_posesвыход ноды WanVideo UniAnimate Pose Input.
- Превратите результат в кадры
Добавьте ноду WanVideo Decode. Ко входу samples подключите выход сэмплера, ко входу vae выход ноды WanVideo VAE Loader.
- Соберите ролик
Добавьте ноды Create Video и Save Video, кадры в images, ролик в video. В поле fps поставьте 16.
- Если герой двигается не так (чтение)
Что проверить:
- кадры видео другого размера, чем ролик: поставьте между Get Video Components и WanVideo UniAnimate DWPose Detector ноду изменения размера и задайте те же
widthиheight, что в ноде WanVideo ImageToVideo Encode; - видео длиннее ролика: лишние позы отбрасываются. Если оно короче, уменьшите
num_frames; - скелет пропадает или появляется где не надо: меняйте
score_thresholdв ноде WanVideo UniAnimate DWPose Detector; - герой меняет телосложение: проверьте, что ко входу
reference_pose_imageподключена картинка с героем.
- Граф готов (чтение)
Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.
Первый запуск будет дольше обычного: нода WanVideo UniAnimate DWPose Detector скачает свои модели.
Что проверяет урок
Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:
- Шаг 2, Загрузите модель:
- нода WanVideo Model Loader.
- в поле
modelноды WanVideo Model Loader стоит файл такого вида: модель Wan 2.1 «картинка в видео» (i2v) 14B; такой файл лежит вmodels/diffusion_models, напримерwan2.1_i2v_480p_14B_fp8_scaled.safetensors.
- Шаг 3, Чтение текста и VAE:
- нода WanVideo T5 Text Encoder Loader.
- нода WanVideo VAE Loader.
- в поле
model_nameноды WanVideo T5 Text Encoder Loader стоит файл такого вида: чтение текста Wan, umt5-xxl; такой файл лежит вmodels/text_encoders, напримерumt5_xxl_fp8_e4m3fn_scaled.safetensors. - в поле
model_nameноды WanVideo VAE Loader стоит файл такого вида: VAE от Wan 2.1 (wan_2.1_vae); такой файл лежит вmodels/vae, напримерwan_2.1_vae.safetensors.
- Шаг 4, Опишите героя и место:
- нода WanVideo TextEncode.
wan_t5_modelноды WanVideo T5 Text Encoder Loader во входt5ноды WanVideo TextEncode.positive_promptноды WanVideo TextEncode: не меньше 3 знаков и 2 настоящих слов.
- Шаг 5, Загрузите героя:
- нода Load Image.
imageноды Load Image: значение выбрано.
- Шаг 6, Покажите картинку модели:
- нода Load CLIP Vision.
- нода WanVideo ClipVision Encode.
CLIP_VISIONноды Load CLIP Vision во входclip_visionноды WanVideo ClipVision Encode.IMAGEноды Load Image во входimage_1ноды WanVideo ClipVision Encode.- в поле
clip_nameноды Load CLIP Vision стоит файл такого вида: файл clip_vision_h; такой файл лежит вmodels/clip_vision, напримерclip_vision_h.safetensors.
- Шаг 7, Добавьте LoRA UniAnimate:
- нода WanVideo Lora Select.
loraноды WanVideo Lora Select во входloraноды WanVideo Model Loader.- в поле
loraноды WanVideo Lora Select стоит файл такого вида: файл LoRA для UniAnimate; такой файл лежит вmodels/loras, напримерUniAnimate-Wan2.1-14B-Lora-12000-fp16.safetensors.
- Шаг 8, Загрузите видео с движением:
- нода Load Video.
- нода Get Video Components.
VIDEOноды Load Video во входvideoноды Get Video Components.fileноды Load Video: значение выбрано.
- Шаг 9, Выньте позу:
- нода WanVideo UniAnimate DWPose Detector.
imagesноды Get Video Components во входpose_imagesноды WanVideo UniAnimate DWPose Detector (можно через Upscale Image или Resize Image или ImageResizeKJv2 или ImageFromBatch или GetImageRangeFromBatch).IMAGEноды Load Image во входreference_pose_imageноды WanVideo UniAnimate DWPose Detector (можно через Upscale Image или Resize Image или ImageResizeKJv2 или ImageFromBatch или GetImageRangeFromBatch).
- Шаг 10, Передайте скелет модели:
- нода WanVideo UniAnimate Pose Input.
posesноды WanVideo UniAnimate DWPose Detector во входpose_imagesноды WanVideo UniAnimate Pose Input.reference_poseноды WanVideo UniAnimate DWPose Detector во входreference_pose_imageноды WanVideo UniAnimate Pose Input.strengthноды WanVideo UniAnimate Pose Input: от 0.5 до 1; «Сделать за меня» ставит 1. Почему: это сила, с которой скелет ведёт героя. С 1 герой повторяет позы полностью.
- Шаг 11, Подготовьте старт:
- нода WanVideo ImageToVideo Encode.
vaeноды WanVideo VAE Loader во входvaeноды WanVideo ImageToVideo Encode.IMAGEноды Load Image во входstart_imageноды WanVideo ImageToVideo Encode.WANVIDIMAGE_CLIPEMBEDSноды WanVideo ClipVision Encode во входclip_embedsноды WanVideo ImageToVideo Encode.num_framesноды WanVideo ImageToVideo Encode: от 49 до 121, число кадров вида 4n + 1; «Сделать за меня» ставит 81. Почему: wan берёт число кадров вида 4n + 1: 49, 81, 121. 81 кадр при 16 в секунду даёт пять секунд.
- Шаг 12, Добавьте сэмплер:
- нода WanVideo Sampler.
modelноды WanVideo Model Loader во входmodelноды WanVideo Sampler.text_embedsноды WanVideo TextEncode во входtext_embedsноды WanVideo Sampler.WANVIDIMAGE_EMBEDSноды WanVideo ImageToVideo Encode во входimage_embedsноды WanVideo Sampler.unianimate_posesноды WanVideo UniAnimate Pose Input во входunianimate_posesноды WanVideo Sampler.
- Шаг 13, Превратите результат в кадры:
- нода WanVideo Decode.
samplesноды WanVideo Sampler во входsamplesноды WanVideo Decode.vaeноды WanVideo VAE Loader во входvaeноды WanVideo Decode.
- Шаг 14, Соберите ролик:
- нода Create Video.
- нода Save Video.
IMAGEноды WanVideo Decode во входimagesноды Create Video.VIDEOноды Create Video во входvideoноды Save Video.fpsноды Create Video:16. Почему: wan рисует 16 кадров в секунду. С другим числом ролик пойдёт быстрее или медленнее, чем задумано.
Частые ошибки
- Кадры видео другого размера, чем ролик: поставьте ноду изменения размера с теми же шириной и высотой.
- Картинка героя не подключена к
reference_pose_image: герой принимает телосложение человека из видео.