Образец на весь ролик: Wan VACE

<!-- lesson: anchor-reference -->

Урок «anchor-reference» в группе Видео: опорная картинка списка уроков. Шагов: 16.

Сначала согласие

Оживлять так можно только того, кто на это согласен: себя, придуманного героя или человека, который разрешил. Получите разрешение на исходные материалы и учитывайте местные законы. Для взрослого (18+) содержимого получите согласие участников и учитывайте местные законы. См. Правила содержимого.

Чему вы научитесь

Человек или предмет с вашей картинки остаётся собой в каждом кадре, а не только в первом.

Что понадобится

  • Урок продолжает Две опоры: первый и последний кадр. Карточка говорит об этом; это подсказка, а не замок.
  • Файлы моделей, которые урок проверяет:
    • для поля unet_name ноды Load Diffusion Model: файл, в имени которого есть vace;
    • для поля lora_name ноды LoraLoaderModelOnly или Load LoRA: файл, в имени которого есть causvid;
    • для поля clip_name ноды Load CLIP: файл, в имени которого есть umt5;
    • для поля vae_name ноды Load VAE: файл, в имени которого есть wan_2.1_vae.
  • Ноды: Load Diffusion Model, LoraLoaderModelOnly / Load LoRA, ModelSamplingSD3, Load CLIP, Load VAE, CLIP Text Encode (Prompt), Load Image, WanVaceToVideo, KSampler, TrimVideoLatent, VAE Decode / VAE Decode (Tiled), Create Video, Save Video.
  • Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.

Шаги

Слова каждого шага, как их показывает урок. Имена нод выделены.

  1. Прежде чем начать (чтение)

    Оживлять так можно только того, кто на это согласен: себя, придуманного героя или человека, который разрешил. Получите разрешение на исходные материалы и учитывайте местные законы. Для взрослого (18+) содержимого получите согласие участников и учитывайте местные законы. Исключайте тех, кто младше 18 лет или так выглядит; обозначайте синтетические изображения, чтобы не вводить людей в заблуждение. Уроки учат технике без откровенных подробностей.

    Стартовая картинка закрепляет первый кадр. Вход образца модель читает на каждом кадре: герой с картинки появляется в ролике и сохраняет облик, а сцена, поза и камера могут быть совсем другими. Wan VACE делает это на нодах самого ComfyUI.

    Цена: модель VACE 14B, около 33 ГБ в fp16 (файл fp8 вдвое меньше), в models/diffusion_models, с LoRA CausVid в models/loras, umt5_xxl и wan_2.1_vae. Рассчитывайте на 24 ГБ видеопамяти или на медленный запуск с переносом в оперативную память. С LoRA хватает 4 шагов, и ролик из 81 кадра на большой карте делается минуты.

    Если на холсте уже есть другой граф, начните с пустого: «Файл ▸ Новый проект».

  2. Загрузите модель VACE

    Добавьте ноду Load Diffusion Model и выберите в unet_name файл wan2.1_vace_14B.

    Если нужного файла в списке нет, значит, его нет в вашем ComfyUI. Приложение ничего не скачивает. Проще всего открыть в самом ComfyUI шаблон «Wan VACE Reference to Video»: он покажет, каких файлов не хватает и куда их положить. Потом выберите здесь в меню «Синхронизация ▸ Синхронизировать сейчас», и файлы появятся в списках.

  3. Добавьте LoRA CausVid

    Добавьте ноду LoraLoaderModelOnly и подключите выход Load Diffusion Model к её входу model. В lora_name выберите файл CausVid и поставьте strength_model 0.3.

    Она даёт модели закончить за 4 шага; на полной силе она делает движение плоским.

  4. Задайте сдвиг

    Добавьте ноду ModelSamplingSD3 и подключите выход LoraLoaderModelOnly к её входу model. В поле shift поставьте 8.

  5. Загрузите текстовый энкодер

    Добавьте ноду Load CLIP. В clip_name выберите файл umt5_xxl, в type поставьте wan.

    Текстовый энкодер превращает промпт в то, что читает модель. Версия файла fp8 занимает вдвое меньше памяти, чем полная, и её берут официальные шаблоны.

  6. Загрузите VAE

    Добавьте ноду Load VAE и выберите в vae_name файл wan_2.1_vae. VACE построена на Wan 2.1.

  7. Напишите промпт

    Добавьте две ноды CLIP Text Encode (Prompt) и подключите выход CLIP ноды Load CLIP ко входу clip каждой. В поле text одной опишите ролик: кто или что в кадре, что происходит, как движется камера. Вторая для негативного промпта: чего в ролике быть не должно.

    Для видео важнее всего действие. «Кошка запрыгивает на подоконник, камера следует за ней» работает лучше, чем «кошка на подоконнике».

  8. Загрузите картинку-образец

    Добавьте ноду Load Image и выберите в image картинку героя: человека, персонажа, предмет.

    Лучше всего простой фон: всё, что на картинке, модель считает частью героя.

  9. Сведите всё вместе

    Добавьте ноду WanVaceToVideo и подключите к ней два промпта, VAE и картинку ко входу reference_image. Поставьте width и height 768, length 81 и strength 1.

    strength это то, насколько крепко держит образец. Остальные входы (control_video, control_masks) здесь пустые; в других уроках по ним приходит движение.

  10. Добавьте сэмплер

Добавьте ноду KSampler. Её вход model берёт выход ноды ModelSamplingSD3; positive, negative и latent_image берут одноимённые выходы ноды WanVaceToVideo.

  1. Настройте сэмплер

Поставьте steps 4, cfg 1 и sampler_name uni_pc, как в шаблоне. Без LoRA модели нужно около 20 шагов и cfg около 6.

  1. Отрежьте образец

Добавьте ноду TrimVideoLatent и подключите выход KSampler к её входу samples. Выход trim_latent ноды WanVaceToVideo подключите к её входу trim_amount.

VACE кладёт образец в начало ролика лишними кадрами; эта нода их отрезает, и картинка не мелькает в начале.

  1. Превратите результат в кадры

Добавьте ноду VAE Decode. Ко входу samples подключите выход TrimVideoLatent, к vae VAE.

  1. Соберите и сохраните ролик

Добавьте ноды Create Video и Save Video. Кадры из ноды VAE Decode идут во вход images ноды Create Video, а её выход во вход video ноды Save Video. В поле fps поставьте 16.

Wan VACE рисует 16 кадров в секунду. С другим числом ролик пойдёт быстрее или медленнее, чем задумано.

  1. Что держит образец и что ещё делает то же (чтение)
  • Он держит облик героя: лицо, волосы, одежду, цвета. Позу и место с картинки он не держит, и это не первый кадр.
  • Лицо, мелкое на образце, выходит размытым; крупная чёткая картинка держит лучше.
  • Другие способы держать героя во всех кадрах: Wan Animate берёт картинку-образец и движение из видео (урок «Анимация по позе: Wan Animate»); HuMo держит человека, пока он говорит (урок «Портрет, который говорит: HuMo»).
  • Цена: образец заставляет модель читать больше на каждом шаге, а модель VACE большая. Ролик делается дольше, чем простая «картинка в видео».
  1. Граф готов (чтение)

Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.

Дальше в этой линии: «Длинное видео частями».

Что проверяет урок

Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:

  • Шаг 2, Загрузите модель VACE:
    • нода Load Diffusion Model.
    • в поле unet_name ноды Load Diffusion Model стоит файл, в имени которого есть vace (заглавные буквы, точки и дефисы не важны).
  • Шаг 3, Добавьте LoRA CausVid:
    • нода LoraLoaderModelOnly или Load LoRA.
    • MODEL ноды Load Diffusion Model во вход model ноды LoraLoaderModelOnly или Load LoRA.
    • в поле lora_name ноды LoraLoaderModelOnly или Load LoRA стоит файл, в имени которого есть causvid (заглавные буквы, точки и дефисы не важны).
    • strength_model ноды LoraLoaderModelOnly или Load LoRA: от 0.2 до 1; «Сделать за меня» ставит 0.3.
  • Шаг 4, Задайте сдвиг:
    • нода ModelSamplingSD3.
    • MODEL ноды LoraLoaderModelOnly или Load LoRA во вход model ноды ModelSamplingSD3 (можно через LoraLoaderModelOnly или EasyCache).
    • shift ноды ModelSamplingSD3: от 5 до 8; «Сделать за меня» ставит 8.
  • Шаг 5, Загрузите текстовый энкодер:
    • нода Load CLIP.
    • в поле clip_name ноды Load CLIP стоит файл, в имени которого есть umt5 (заглавные буквы, точки и дефисы не важны).
    • type ноды Load CLIP: wan.
  • Шаг 6, Загрузите VAE:
    • нода Load VAE.
    • в поле vae_name ноды Load VAE стоит файл, в имени которого есть wan_2.1_vae (заглавные буквы, точки и дефисы не важны).
  • Шаг 7, Напишите промпт:
    • нода 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 знаков.
  • Шаг 8, Загрузите картинку-образец:
    • нода Load Image.
    • image ноды Load Image: значение выбрано.
  • Шаг 9, Сведите всё вместе:
    • нода WanVaceToVideo.
    • CONDITIONING ноды CLIP Text Encode (Prompt) (промпт) во вход positive ноды WanVaceToVideo.
    • CONDITIONING ноды CLIP Text Encode (Prompt) (негатив) во вход negative ноды WanVaceToVideo.
    • VAE ноды Load VAE во вход vae ноды WanVaceToVideo.
    • IMAGE ноды Load Image во вход reference_image ноды WanVaceToVideo (можно через Upscale Image или Upscale Image By или ImageFromBatch или ImageResizeKJv2 или Resize Image или GetImageRangeFromBatch или ResizeImageMaskNode).
    • width ноды WanVaceToVideo: от 480 до 1280; «Сделать за меня» ставит 768.
    • height ноды WanVaceToVideo: от 480 до 1280; «Сделать за меня» ставит 768.
    • length ноды WanVaceToVideo: от 49 до 121; «Сделать за меня» ставит 81.
    • strength ноды WanVaceToVideo: от 0.5 до 1.5; «Сделать за меня» ставит 1.
  • Шаг 10, Добавьте сэмплер:
    • нода KSampler.
    • MODEL ноды ModelSamplingSD3 во вход model ноды KSampler (можно через LoraLoaderModelOnly или EasyCache).
    • positive ноды WanVaceToVideo во вход positive ноды KSampler.
    • negative ноды WanVaceToVideo во вход negative ноды KSampler.
    • latent ноды WanVaceToVideo во вход latent_image ноды KSampler.
  • Шаг 11, Настройте сэмплер:
    • steps ноды KSampler: от 4 до 30; «Сделать за меня» ставит 4.
    • cfg ноды KSampler: от 1 до 6; «Сделать за меня» ставит 1.
    • sampler_name ноды KSampler: uni_pc.
  • Шаг 12, Отрежьте образец:
    • нода TrimVideoLatent.
    • LATENT ноды KSampler во вход samples ноды TrimVideoLatent.
    • trim_latent ноды WanVaceToVideo во вход trim_amount ноды TrimVideoLatent.
  • Шаг 13, Превратите результат в кадры:
    • нода VAE Decode или VAE Decode (Tiled).
    • LATENT ноды TrimVideoLatent во вход samples ноды VAE Decode или VAE Decode (Tiled).
    • VAE ноды Load VAE во вход vae ноды VAE Decode или VAE Decode (Tiled).
  • Шаг 14, Соберите и сохраните ролик:
    • нода Create Video.
    • нода Save Video.
    • IMAGE ноды VAE Decode или VAE Decode (Tiled) во вход images ноды Create Video.
    • VIDEO ноды Create Video во вход video ноды Save Video.
    • fps ноды Create Video: 16.

См. также

Страница перенесена из wiki репозитория приложения (docs/wiki/lessons/Anchor-Reference.ru.md, ревизия b8e3f71). То же руководство встроено в приложение: «Справка ▸ Руководство».

Чтобы обновить её, выполните npm run import, а затем npm run build в папке сайта.