Две опоры: первый и последний кадр
Урок «video-flf» в группе Видео: опорная картинка списка уроков. Шагов: 17.
Сначала согласие
Оживлять так можно только того, кто на это согласен: себя, придуманного героя или человека, который разрешил. Получите разрешение на исходные материалы и учитывайте местные законы. Для взрослого (18+) содержимого получите согласие участников и учитывайте местные законы. См. Правила содержимого.
Чему вы научитесь
Даёте две картинки, и модель рисует ролик, который идёт от первой к последней.
Что понадобится
- Урок продолжает Стартовая картинка как опора. Карточка говорит об этом; это подсказка, а не замок.
- Файлы моделей, которые урок проверяет:
- для поля
unet_nameноды Load Diffusion Model (первый проход): файл, в имени которого естьi2vиhigh; - для поля
unet_nameноды Load Diffusion Model (второй проход): файл, в имени которого естьi2vиlow; - для поля
clip_nameноды Load CLIP: файл, в имени которого естьumt5; - для поля
vae_nameноды Load VAE: файл, в имени которого естьwan_2.1_vae.
- для поля
- Ноды: Load Diffusion Model, Load CLIP, Load VAE, CLIP Text Encode (Prompt), ModelSamplingSD3, Load Image, WanFirstLastFrameToVideo, KSampler (Advanced), VAE Decode / VAE Decode (Tiled), Create Video, Save Video.
- Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.
Шаги
Слова каждого шага, как их показывает урок. Имена нод выделены.
Сначала о цене (чтение)
Оживлять так можно только того, кто на это согласен: себя, придуманного героя или человека, который разрешил. Получите разрешение на исходные материалы и учитывайте местные законы. Для взрослого (18+) содержимого получите согласие участников и учитывайте местные законы. Исключайте тех, кто младше 18 лет или так выглядит; обозначайте синтетические изображения, чтобы не вводить людей в заблуждение. Уроки учат технике без откровенных подробностей.
Ролик начинается одной картинкой и заканчивается другой, движение между ними модель придумывает сама. Так хорошо получаются превращения, поворот камеры, день, переходящий в ночь.
Это большая пара Wan 2.2: две модели 14B в файлах
i2v, около 14 ГБ каждая вfp8, плюс текстовый энкодерumt5_xxlиwan_2.1_vae. Удобно с картой на 24 ГБ; с меньшей ComfyUI переносит части в оперативную память, и запуск идёт намного дольше. 81 кадр за 20 шагов на средней карте делается десятки минут. Урок «Быстрое видео за четыре шага» сокращает это в разы и подходит и к этому графу.Если на холсте уже есть другой граф, начните с пустого: «Файл ▸ Новый проект».
Загрузите две модели «картинка в видео»
Добавьте две ноды Load Diffusion Model. В
unet_nameодной выберите файлi2vсо словомhigh_noise, в другой файлi2vсо словомlow_noise.Первая раскладывает движение, вторая дорабатывает детали. Файлы
t2vкартинок не берут.Если нужного файла в списке нет, значит, его нет в вашем ComfyUI. Приложение ничего не скачивает. Проще всего открыть в самом ComfyUI шаблон «Wan 2.2 14B First-Last Frame to Video»: он покажет, каких файлов не хватает и куда их положить. Потом выберите здесь в меню «Синхронизация ▸ Синхронизировать сейчас», и файлы появятся в списках.
Загрузите текстовый энкодер
Добавьте ноду Load CLIP. В
clip_nameвыберите файлumt5_xxl, вtypeпоставьтеwan.Текстовый энкодер превращает промпт в то, что читает модель. Версия файла
fp8занимает вдвое меньше памяти, чем полная, и её берут официальные шаблоны.Загрузите VAE
Добавьте ноду Load VAE и выберите в
vae_nameфайлwan_2.1_vae. Модели Wan 2.2 на 14B работают с VAE версии 2.1.Опишите путь от кадра к кадру
Добавьте две ноды CLIP Text Encode (Prompt) и подключите выход
CLIPноды Load CLIP ко входуclipкаждой. В полеtextодной опишите, что происходит между картинками: как одна становится другой, как движется камера. Вторая для негативного промпта.Задайте сдвиг обеих моделей
Добавьте две ноды ModelSamplingSD3 и пропустите каждую модель через свою: выход
MODELзагрузчика ко входуmodel. В полеshiftобеих поставьте 8.Загрузите две картинки
Добавьте две ноды Load Image. В поле
imageодной выберите картинку, с которой ролик начинается, в другой ту, которой заканчивается.У картинок должны быть одни пропорции и одна сцена или один герой. Чем сильнее они различаются, тем страннее движение между ними.
Подготовьте начало и конец
Добавьте ноду WanFirstLastFrameToVideo и подключите к ней:
- к
positiveиnegativeдва промпта; - к
vaeвыход ноды Load VAE; - к
start_imageпервую картинку, кend_imageпоследнюю.
Поставьте
widthиheight640,length81. Пропорции размера должны совпадать с картинками.- к
Первый проход
Добавьте ноду KSampler (Advanced). Её вход
modelберёт модельhigh_noiseчерез её ноду ModelSamplingSD3; входыpositive,negativeиlatent_imageберут три выхода ноды WanFirstLastFrameToVideo.Второй проход
Добавьте вторую ноду KSampler (Advanced). Её вход model берёт модель low_noise через её ноду сдвига; positive и negative те же выходы ноды WanFirstLastFrameToVideo; latent_image выход первого сэмплера.
- Разделите шаги между двумя
В первом сэмплере: add_noise enable, steps 20, cfg 4, start_at_step 0, end_at_step 10, return_with_leftover_noise enable.
Во втором: add_noise disable, те же steps и cfg, start_at_step 10 (где остановился первый), return_with_leftover_noise disable.
Первый делает половину из двадцати шагов и отдаёт оставшийся шум, второй продолжает с того же шага.
- Превратите результат в кадры
Добавьте ноду VAE Decode. Ко входу samples подключите выход сэмплера, ко входу vae выход ноды Load VAE.
Сэмплер выдаёт ролик в сжатом виде, латенте. Эта нода разворачивает его в кадры.
- Соберите и сохраните ролик
Добавьте ноды Create Video и Save Video. Кадры из ноды VAE Decode идут во вход images ноды Create Video, а её выход во вход video ноды Save Video. В поле fps поставьте 16.
Модели Wan 14B рисуют 16 кадров в секунду. С другим числом ролик пойдёт быстрее или медленнее, чем задумано.
- Что модель придумывает между опорами (чтение)
Две опоры закрепляют первый и последний кадр. Всё между ними придумывает модель: путь движения, поворот головы, то, что скрыто за предметом. Ваш голос здесь только промпт, поэтому описывайте путь, а не снова две картинки.
Чем ближе картинки (тот же свет, те же пропорции, перемена, которую можно сделать одним движением), тем правдоподобнее середина. Две картинки, различные во всём, дают наплыв или резкий скачок вместо движения.
- Петля (чтение)
Поставьте одну и ту же картинку в обе ноды Load Image и опишите движение, которое возвращается: покачивание, вдох, волны, вращение колеса. Ролик закончится там, где начался, и пойдёт по кругу без шва.
В этом уроке приложение просит два разных файла; для петли скопируйте картинку под вторым именем.
- Если результат не тот (чтение)
- Ролик в конце перескакивает на последний кадр: поставьте
length121 или опишите более медленную перемену. - В середине каша: картинки слишком разные; сблизьте их или подробнее опишите путь между ними.
- Плывут цвета: берите картинки с одинаковым светом.
- Граф готов (чтение)
Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.
Что проверяет урок
Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:
- Шаг 2, Загрузите две модели «картинка в видео»:
- нода Load Diffusion Model.
- нода Load Diffusion Model.
- в поле
unet_nameноды Load Diffusion Model (первый проход) стоит файл, в имени которого естьi2vиhigh(заглавные буквы, точки и дефисы не важны). unet_nameноды Load Diffusion Model (второй проход): не тот же файл, что в полеunet_nameноды Load Diffusion Model (первый проход).- в поле
unet_nameноды Load Diffusion Model (второй проход) стоит файл, в имени которого естьi2vиlow(заглавные буквы, точки и дефисы не важны).
- Шаг 3, Загрузите текстовый энкодер:
- нода Load CLIP.
- в поле
clip_nameноды Load CLIP стоит файл, в имени которого естьumt5(заглавные буквы, точки и дефисы не важны). typeноды Load CLIP:wan.
- Шаг 4, Загрузите VAE:
- нода Load VAE.
- в поле
vae_nameноды Load VAE стоит файл, в имени которого естьwan_2.1_vae(заглавные буквы, точки и дефисы не важны).
- Шаг 5, Опишите путь от кадра к кадру:
- нода CLIP Text Encode (Prompt).
- нода CLIP Text Encode (Prompt).
CLIPноды Load CLIP во входclipноды CLIP Text Encode (Prompt) (промпт).CLIPноды Load CLIP во входclipноды CLIP Text Encode (Prompt) (негатив).textноды CLIP Text Encode (Prompt) (промпт): не меньше 3 знаков.
- Шаг 6, Задайте сдвиг обеих моделей:
- нода ModelSamplingSD3.
- нода ModelSamplingSD3.
MODELноды Load Diffusion Model (первый проход) во входmodelноды ModelSamplingSD3 (сдвиг первого прохода) (можно через LoraLoaderModelOnly или EasyCache).MODELноды Load Diffusion Model (второй проход) во входmodelноды ModelSamplingSD3 (сдвиг второго прохода) (можно через LoraLoaderModelOnly или EasyCache).shiftноды ModelSamplingSD3 (сдвиг первого прохода): от 5 до 8; «Сделать за меня» ставит 8.shiftноды ModelSamplingSD3 (сдвиг второго прохода): от 5 до 8; «Сделать за меня» ставит 8.
- Шаг 7, Загрузите две картинки:
- нода Load Image.
- нода Load Image.
imageноды Load Image (первый кадр): значение выбрано.imageноды Load Image (последний кадр): не тот же файл, что в полеimageноды Load Image (первый кадр).
- Шаг 8, Подготовьте начало и конец:
- нода WanFirstLastFrameToVideo.
CONDITIONINGноды CLIP Text Encode (Prompt) (промпт) во входpositiveноды WanFirstLastFrameToVideo.CONDITIONINGноды CLIP Text Encode (Prompt) (негатив) во входnegativeноды WanFirstLastFrameToVideo.VAEноды Load VAE во входvaeноды WanFirstLastFrameToVideo.IMAGEноды Load Image (первый кадр) во входstart_imageноды WanFirstLastFrameToVideo (можно через Upscale Image или Upscale Image By или ImageFromBatch или ImageResizeKJv2 или Resize Image или GetImageRangeFromBatch или ResizeImageMaskNode).IMAGEноды Load Image (последний кадр) во входend_imageноды WanFirstLastFrameToVideo (можно через Upscale Image или Upscale Image By или ImageFromBatch или ImageResizeKJv2 или Resize Image или GetImageRangeFromBatch или ResizeImageMaskNode).widthноды WanFirstLastFrameToVideo: от 480 до 1280; «Сделать за меня» ставит 640.heightноды WanFirstLastFrameToVideo: от 480 до 1280; «Сделать за меня» ставит 640.lengthноды WanFirstLastFrameToVideo: от 49 до 121; «Сделать за меня» ставит 81.
- Шаг 9, Первый проход:
- нода KSampler (Advanced).
MODELноды ModelSamplingSD3 (сдвиг первого прохода) во входmodelноды KSampler (Advanced) (первый проход) (можно через LoraLoaderModelOnly или EasyCache).positiveноды WanFirstLastFrameToVideo во входpositiveноды KSampler (Advanced) (первый проход).negativeноды WanFirstLastFrameToVideo во входnegativeноды KSampler (Advanced) (первый проход).latentноды WanFirstLastFrameToVideo во входlatent_imageноды KSampler (Advanced) (первый проход).
- Шаг 10, Второй проход:
- нода KSampler (Advanced).
MODELноды ModelSamplingSD3 (сдвиг второго прохода) во входmodelноды KSampler (Advanced) (второй проход) (можно через LoraLoaderModelOnly или EasyCache).positiveноды WanFirstLastFrameToVideo во входpositiveноды KSampler (Advanced) (второй проход).negativeноды WanFirstLastFrameToVideo во входnegativeноды KSampler (Advanced) (второй проход).LATENTноды KSampler (Advanced) (первый проход) во входlatent_imageноды KSampler (Advanced) (второй проход).
- Шаг 11, Разделите шаги между двумя:
add_noiseноды KSampler (Advanced) (первый проход):enable.stepsноды KSampler (Advanced) (первый проход): от 10 до 40; «Сделать за меня» ставит 20.cfgноды KSampler (Advanced) (первый проход): от 1 до 5; «Сделать за меня» ставит 4.start_at_stepноды KSampler (Advanced) (первый проход):0.end_at_stepноды KSampler (Advanced) (первый проход): от 1 до 20; «Сделать за меня» ставит 10.return_with_leftover_noiseноды KSampler (Advanced) (первый проход):enable.add_noiseноды KSampler (Advanced) (второй проход):disable.stepsноды KSampler (Advanced) (второй проход) равно полюstepsноды KSampler (Advanced) (первый проход).cfgноды KSampler (Advanced) (второй проход) равно полюcfgноды KSampler (Advanced) (первый проход).start_at_stepноды KSampler (Advanced) (второй проход) равно полюend_at_stepноды KSampler (Advanced) (первый проход).return_with_leftover_noiseноды KSampler (Advanced) (второй проход):disable.
- Шаг 12, Превратите результат в кадры:
- нода VAE Decode или VAE Decode (Tiled).
LATENTноды KSampler (Advanced) (второй проход) во входsamplesноды VAE Decode или VAE Decode (Tiled).VAEноды Load VAE во входvaeноды VAE Decode или VAE Decode (Tiled).
- Шаг 13, Соберите и сохраните ролик:
- нода Create Video.
- нода Save Video.
IMAGEноды VAE Decode или VAE Decode (Tiled) во входimagesноды Create Video.VIDEOноды Create Video во входvideoноды Save Video.fpsноды Create Video:16.
Что дальше
Этот урок продолжают: Образец на весь ролик: Wan VACE, Длинное видео частями.