Перейти к основному содержимому

Как использовать плагин с собственными персонажами

Это руководство проведёт вас через процесс настройки Runtime MetaHuman Lip Sync для персонажей, не являющихся MetaHuman. Этот процесс требует знакомства с концепциями анимации и риггинга. Если вам нужна помощь во внедрении этого для вашего конкретного персонажа, вы можете обратиться за профессиональной поддержкой по адресу [email protected].

Важное примечание о моделях липсинка

Совместимость с пользовательскими персонажами

В этом руководстве рассматриваются пользовательские персонажи, не использующие соглашения об именовании морф-таргетов MetaHuman или ARKit.

Модель Realistic (Higher Quality) работает с персонажами, чьи морф-таргеты соответствуют стандартам именования MetaHuman или ARKit; это настраивается через Morph Target Set Selection. Если ваш персонаж уже использует (или может быть экспортирован/конвертирован для использования) имена блендшейпов по стандарту ARKit, вы можете использовать модель Realistic, не выполняя процедуру ручного сопоставления из этого руководства. См. Преобразование персонажей в блендшейпы ARKit для распространённых персонажей, таких как CC4/CC5 и Daz Genesis.

Если ваш персонаж использует другой набор морф-таргетов (например, Daz Genesis, Reallusion CC3/CC4/CC5, Mixamo или упрощенный кастомный риг), то поддерживаемым вариантом является модель Standard (Faster) — далее следуйте шагам, описанным ниже.

Требуется плагин расширения: Чтобы использовать Standard Model с пользовательскими персонажами, необходимо установить плагин Standard Lip Sync Extension, как описано в разделе «Предварительные требования» основного руководства по настройке.

Это расширение обязательно для всех пользовательских реализаций персонажей, описанных в этом руководстве.

Предварительные требования

Прежде чем начать, убедитесь, что ваш персонаж соответствует этим требованиям:

  • Имеет корректный скелет
  • Содержит морф-таргеты (блендшейпы) для мимики
  • В идеале имеет 10+ морф-таргетов, определяющих виземы (чем больше визем, тем лучше качество липсинка)

Плагин требует сопоставления морф-таргетов вашего персонажа со следующими стандартными виземами:

Sil -> Silence
PP -> Bilabial plosives (p, b, m)
FF -> Labiodental fricatives (f, v)
TH -> Dental fricatives (th)
DD -> Alveolar plosives (t, d)
KK -> Velar plosives (k, g)
CH -> Postalveolar affricates (ch, j)
SS -> Sibilants (s, z)
NN -> Nasal (n)
RR -> Approximant (r)
AA -> Open vowel (aa)
E -> Mid vowel (e)
IH -> Close front vowel (ih)
OH -> Close-mid back vowel (oh)
OU -> Close back vowel (ou)

Примечание: Если у вашего персонажа другой набор визем (что вполне вероятно), вам не нужно точное совпадение для каждой виземы. Часто достаточно приблизительных соответствий — например, сопоставление виземы SH вашего персонажа с виземой CH плагина будет работать эффективно, поскольку это близкие постальвеолярные звуки.

Справочник по сопоставлению визем

Ниже приведены соответствия между распространёнными системами визем и виземами, требуемыми плагином:

ARKit предоставляет полный набор блендшейпов для лицевой анимации, включая несколько форм рта. Вот как сопоставить их с висемами RuntimeMetaHumanLipSync:

RuntimeMetaHumanLipSync виземаАналог ARKitЗаметки
SilmouthCloseНейтральное/исходное положение
PPmouthPressLeft + mouthPressRightДля билабиальных звуков используйте обе формы сжатия вместе.
FFlowerLipBiteLeft + lowerLipBiteRight (или mouthRollLower)Нижняя губа касается верхних зубов, как при звуках «f» и «v».
THtongueOutARKit имеет прямое управление языком.
DDjawOpen (mild) + tongueUp (if you have tongue rig)Язык касается альвеолярного гребня; лёгкое опускание челюсти.
KKmouthLeft or mouthRight (mild)Едва заметное оттягивание уголков рта приблизительно воспроизводит велярные звуки.
CHjawOpen (mild) + mouthFunnel (mild)Комбинируйте для постальвеолярных звуков.
SSmouthFrownИспользуйте лёгкое нахмуривание для сибилянтов.
NNjawOpen (very mild) + mouthCloseПочти закрытый рот с лёгким открытием челюсти
RRmouthPucker (mild)Лёгкое округление для звуков «р»
AAjawOpen + mouthStretchLeft + mouthStretchRight (or jawOpen + mouthOpen)Широко открытый рот для звука «а».
EjawOpen (mild) + mouthSmileСреднеоткрытое положение с лёгкой улыбкой
IHmouthSmile (mild)Легкое растягивание губ
OHmouthFunnelОткрытая скруглённая форма
OUmouthPuckerПлотно округлённые губы

Создание собственного Pose Asset

Следуйте этим шагам, чтобы создать пользовательский ассет позы для вашего персонажа, который будет использоваться с узлом Blend Runtime MetaHuman Lip Sync:

1. Найдите скелетную сетку вашего персонажа.

Найдите скелетную сетку, содержащую морф-таргеты (блендшейпы), которые вы хотите использовать для анимации синхронизации губ. Это может быть сетка всего тела или просто сетка лица, в зависимости от дизайна вашего персонажа.

2. Проверьте морф-таргеты и кривые

Прежде чем приступить, убедитесь, что ваша скелетная сетка имеет необходимые морф-таргеты и соответствующие кривые для анимации липсинка.

Проверка морф-таргетов: Убедитесь, что ваша скелетная сетка содержит морф-таргеты (блендшейпы), которые можно использовать в качестве визем для анимации синхронизации губ. У большинства персонажей с поддержкой лицевой анимации должны быть морф-таргеты фонем/визем.

Example of morph targets in a character

Важно: Проверьте вкладку Curves Этот шаг особенно важен для персонажей, экспортированных из Blender или другого внешнего ПО:

  1. Откройте вкладку Curves в редакторе Skeletal Mesh.
  2. Проверьте, видны ли кривые, соответствующие вашим морф-таргетам.
  3. Если вкладка Curves пуста, но морф-таргеты существуют, вручную добавьте новые кривые, используя точно такие же имена, как у ваших морф-таргетов.

Примечание: Эта проблема часто возникает при экспорте из Blender, когда морф-таргеты импортируются успешно, но анимационные кривые не создаются автоматически. Без соответствующих кривых анимация не заполнится корректно после запекания в контрольный риг.

Альтернативное решение: Чтобы избежать этой проблемы при экспорте из Blender, попробуйте включить Пользовательские свойства и Анимацию в настройках экспорта FBX — это может помочь включить анимационные кривые вместе с морф-таргетами.

3. Создайте анимацию референсной позы

  1. Перейдите в Create Asset -> Create Animation -> Reference Pose
  2. Введите описательное имя для анимационной последовательности и сохраните её в подходящем месте
  3. Созданная анимационная последовательность откроется автоматически, показывая пустую анимацию, проигрываемую в цикле

Creating a reference pose asset Naming the reference pose asset

  1. Нажмите кнопку Pause, чтобы остановить воспроизведение анимации для более удобного редактирования.

Pausing animation playback

4. Отредактируйте анимационную последовательность

  1. Нажмите на Edit in Sequencer -> Edit with FK Control Rig
  2. В диалоговом окне Bake to Control Rig нажмите кнопку Bake to Control Rig, не меняя никаких настроек.

Editing with FK Control Rig Baking to Control Rig

  1. Редактор переключится в Режим анимации с открытой вкладкой Sequencer.
  2. Установите View Range End Time равным 0016 (при этом Working Range End автоматически также станет равным 0016).
  3. Перетащите правый край ползунка к правому концу окна секвенсора.

5. Подготовка анимационных кривых

  1. Вернитесь к ассету Animation Sequence и найдите морф-таргеты в списке Curves (если они не видны, закройте и снова откройте ассет Animation Sequence)
  2. Удалите все морф-таргеты, которые не связаны с виземами или движениями рта, которые вы хотите использовать для липсинка.

6. Спланируйте сопоставление визем

Создайте план сопоставления визем вашего персонажа с требуемым набором плагина. Например:

Sil -> Sil
PP -> FV
FF -> FV
TH -> TH
DD -> TD
KK -> KG
CH -> CH
SS -> SZ
NN -> NL
RR -> RR
AA -> AA
E -> E
IH -> IH
OH -> O
OU -> U

Обратите внимание, что допустимо иметь повторяющиеся сопоставления, если в наборе визем вашего персонажа нет точных соответствий для каждой требуемой виземы.

7. Анимируйте каждую визему

  1. Для каждой виземы анимируйте соответствующие кривые морф-таргетов от 0.0 до 1.0
  2. Начинайте анимацию каждой виземы на отдельном кадре
  3. Настройте дополнительные кривые по мере необходимости (открытие челюсти/рта, положение языка и т.д.), чтобы создать естественно выглядящие формы визем.

8. Создайте ассет позы

  1. Перейдите в Создать ассет -> Ассет позы -> Текущая анимация
  2. Введите описательное имя для ассета позы и сохраните его в подходящем месте
  3. Созданный ассет позы откроется автоматически, отображая позы вроде Pose_0, Pose_1 и т. д., каждая из которых соответствует виземе
  4. Просмотрите веса визем, чтобы убедиться, что они работают как ожидается

Creating a pose asset Naming the pose asset Pose asset with visemes

9. Завершите работу над ассетом позы.

  1. Переименуйте каждую позу в соответствии с названиями визем из раздела Предварительные требования.
  2. Удалите все неиспользуемые позы.

Настройка обработки аудио и его смешивания

Как только ваш ассет позы готов, вам нужно настроить обработку аудио и узлы смешивания:

  1. Найдите или создайте Animation Blueprint вашего персонажа.
  2. Настройте обработку аудио и смешивание, следуя тем же шагам, которые описаны в стандартном руководстве по настройке плагина.
  3. В узле Blend Runtime MetaHuman Lip Sync выберите ваш пользовательский ассет позы вместо стандартного ассета позы MetaHuman.

Selecting the custom pose asset

Объединение с анимациями тела

Если вы хотите выполнять липсинк одновременно с другими анимациями тела:

  1. Следуйте тем же шагам, что описаны в стандартном руководстве по плагину
  2. Убедитесь, что вы указали правильные названия костей для скелета шеи вашего персонажа, а не используете названия костей MetaHuman

Результаты

Вот примеры пользовательских персонажей, использующих эту настройку:

Example 1: Lip sync with custom character

Example 2: Lip sync with different viseme system

Example 3: Lip sync with different viseme system

Качество синхронизации губ во многом зависит от конкретного персонажа и от того, насколько хорошо настроены его виземы. Примеры, приведённые выше, показывают, как плагин работает с разными типами нестандартных персонажей, у каждого из которых своя система визем.