Hi to everyone!
I have done tutorial about simple lip sync in Synfig Studio, but it in Russian. I’d like to make Eng version, but my skill in English is to weak. Maybe someone would help me with translating better then google. In this case i will be able to resound my video with English narration.
my tutorial: youtube.com/watch?v=waI3AwXfIy4
full text in Russian:
intro
Girl:
Эй, парни,
типа, привет!
Тут, вопрос есть:
Как можно с кожи фломастер отчистить?
END of intro
И в самом деле как?..
Да, здравствуйте дорогие ютубозрители! Речь у нас сегодня пойдет все же не о фломастерах, которые как известно на вкус и цвет все разные, а о простом методе синхронизации рта анимированного персонажа с записанным голосом.
Моделью нам послужит персонажек моего старого трехкадрового комикса. Недавно я пытался его анимировать используя шаблон стикмен разработанный Константином Дмитриевым.
Однако, для освещения сегодняшней темы подобная сложность модели, пожалуй, избыточна и будет только отвлекать от главного.
Поэтому я специально изготовил сильно упрощенную версию.
Сцена состоит из девочки и фона нужного, чтобы героиня не болталась в сером ничто.
Сама девочка так же состоит из png картинки и рта.
Причем рот вынесен в отдельный экспортированный слой. Хотя для данного примера это, конечно, не обязательно, просто мне так привычней и удобней.
Итак, рот у нас присутствует в двух экземплярах. Один нужен, чтобы молчать, другой – чтобы говорить. Ну да, почти как в том анекдоте про программиста и пустой и полный стаканы.
Оба рта устроены одинаково: губы, внутренняя область, зубы и язык.
Причем, верхние три точки внутренней область полностью связаны с верхней губой, а нижние три точки с нижней. Полностью – это значит не только точки, но и касательные. Таким образом всем ртом можно оперировать как единым объектом прямо на уровне точек.
Для зубов и языка применен режим смешивания “OnTo”, в русской версии он может называться “на”. Это сделано, чтобы они не высовывались наружу: Вот как-то так.
Режим смешивания “OnTo”.
Тоже самое для языка.
Так, убираем это безобразие, что мы тут по-натворили.
Казалось бы почему для молчащего рта не обойтись просто черточкой? А потому, что молчащий рот еще улыбается, ухмыляется и артикулирует междометия. В нашем случае вот это самое начальное “э-э!”
Говорящий рот состоит из таких же элементов:
губы, зубы и внутренняя область.
Однако, он еще и анимирован, и все эти элементы находятся в непрерывном движении.
Суть такова, что каждые три кадра рот принимает формы характерные для различных фонем. Причем система расстановки этих фонем, как таковая, отсутствует. Точнее, единственное требование, чтобы соседние формы были резко друг на друга не похожи.
Вся эта последовательность укладывается в секунду и пять кадров.
Соответственно, чтобы ее растянуть на всю длину сцены, в говорящий рот добавляется слой “петля времени” с такой же длинной действия: секунда и пять кадров.
Делаем предпросмотр.
Смотрим.
first insert
Резюмируем первый подготовительный этап.
Нужно создать два рта: один молчит, иногда кривляется экает, нукает, второй – беспрерывно тараторит.
END of first insert
Что же, мы научили нашу героиню говорить, теперь осталось научить её молчать. Точнее, говорить только тогда, когда надо.
Нам нужно связать прозрачности двух ртов. Но не напрямую, а так, что бы, когда у одного ноль, у другого единица, и наоборот.
Преобразовываем параметр величина в переключатель (switch).
Тоже самое делаем и для говорящего рта.
Разворачиваем получившийся составной параметр и разбиваем связь между LinkOff и LinkOn.
LinkOn это значение которое будет принимать прозрачность, когда переключатель включен, а LinkOff, соответственно, когда выключен.
Нужно, чтобы молчащий рот был виден, если переключатель включен и не виден в противном случае.
Вот как-то так.
Тоже самое, только с противоположными значениями LinkOff и LinkOn повторяем с говорящим ртом.
Возвращаемся в рот молчащий и экспортируем переключатель, точнее его значение.
Затем с этим экспортированным значением связываем переключатель говорящего рта.
Все. Подготовительный этап завершен.
second insert
Резюмируем второй подготовительный этап.
Нужно через переключатель связать оба рта таким образом, чтобы в любой момент времени видимым был только один.
END of second insert
Дальше нам нужно работать с записанным голосом. И, поскольку Synfig Studio не поддерживает (пока!) звуковую дорожку, нам придется воспользоваться сторонними приложениями.
Например, есть замечательный звуковой редактор Audacity, кстати он работает и под виндосом.
Однако есть одна проблема: время в редакторе отображается в секундах и долях секунды, тогда как в синфиг студио в секундах и кадрах. То есть придется каким-то образом переводить доли секунды в кадры.
Лично у меня под рукой имеется еще один вариант: загрузить звуковую дорожку в синелеру. Фишка в том, что в этом редакторе можно настроить таймлайн таким образом, чтобы он отображал время в том же самом формате, что и синфиг.
“Установки” (setings) -> “параметры” (preferences) -> и вкладка “вешний вид” (interface)
Вот здесь это настраивается. И, поскольку я все равно использую синелеру для любой более менее сложной работы с виде (в том числе и этот урок я тоже монтирую здесь), правило бритвы Окама я не нарушаю.
Зато, насколько упрощается задача синхронизации анимации со звуком!
Просто ставим курсор в нужное место и смотрим отметку времени.
Переключаемся в Synfig и выставляем в нужном месте ключи анимации.
Правда, из-за некоторых особенностей работы синфига с булевыми значениями, что бы включить говорящий рот нужно ставить один ключ, а чтобы выключить – два.
Но так даже лучше: сразу видно при беглом взгляде на таймлайн, где у нас герой начал говорить, а где закончил.
last insert
Резюмируем третий основной этап.
Нужно, используя сторонний софт, определить по звуковой дорожке моменты времени, когда персонаж молчит, а когда говорит. В Synfig Studio расставить соответствующие ключи в режиме анимации.
Ну, и подводя итоги уже всему процессу, следует обратить внимание на такой момент, что темп смены фонем говорящего рта должен быть согласован с темпом речи говорящего персонажа. При этом и то и другого должны быть достаточно быстрыми, иначе, просто, в сознании зрителя не произойдет синхрона одного с другим.
Метод имеет ограничения.
Вам категорически не удастся таким образом анимировать поющего персонажа. Именно поющего, не читающего, там, речитатив или рэп какой-нибудь, а, вот, там, где есть протяжные гласные и тому подобные вещи.
Thanks
Хочу выразить благодарность Константину Дмитриеву и проекту “Моревна” за создание шаблона стикмена и непрекращающуюся работу по его усовершенствованию.
Особое спасибо Олегу Куваеву. Именно анализируя по кадрам его мульты, я и дошел до мысли о ленивом липсинке. Да! Масяня, Хрюндель, Лохматый и прочие говорят именно так, как описано в этом ролике, ну с поправкой на другой инструмент, стиль и прочие детали.
Также огромное спасибо всем вам, дорогие мои ютубозрители! Оценивайте, комментируйте, если захотите.
Всем пока, всем до свидания!