Липсинк из Конструктора, или MAYA vs LEGO
Липсинк из Конструктора, или MAYA vs LEGO.
Говорите - мне приятно...
(Эпиграф)
Классная вещь – конструктор LEGO. Сколько всего можно понаделать! Сколько забытого энтузиазма! Сколько вариантов и возможностей! Особенно, если вместо авианосца с картинки на коробке вдруг получится мягкий скульптурный профиль, даже не испорченный отсутствием LEGOвского антиалиасинга! А сколько с искренним интересом убитого времени! Чистое творчество… Full Real 3D… Так что, уважаемые папы и мамы, действующие и потенциальные, покупайте детям LEGO. Осталось добавить какой-нибудь бред в виде слогана, типа «LEGO – МОЕ ТВОРЧЕСКОЕ ЭГО!», или там «LEGO – АЙ-КЬЮ АЛЬФА И ОМЕГА!», и можно ваять рекламу.
О чем это я? Да… Конструктор для липсинка… Кстати, если Вы устали от Wire-деформаторов, Blend Shape и wav-анализа в Motion Builder, то нескучность не гарантируется. Впрочем, интерес возможен в области унификации и попыток конструирования липсинк из «блоков». Но если Вы давно выросли из шортиков, и утверждение: «Забудьте про LEGO! MAYA - вот обалденный конструктор!» вызывает зевоту, то дальше можете не читать.
Глава 1, в которой можно разгрести кучку «кубиков», и выбрать нужные.
Достаточно кликнуть мышом по Майскому шорткату, и на рабочий стол вывалится немаленькая кучка самых разных деталек. В Майке достаточно строительных элементов. Пошарим-ка в них любопытными пальчиками. Для начала найдем какого-нибудь персонажа, хоть со скелетом, а хоть и без него. Например, Heartbreacker из музыкального клипа Arsenium, http://www.professionalheartbreakers.com/
Как бы заставить этого... обрадованного отображать и другие выражения лица (кривить губы и брови, моргать, морщить нос, открывать и закрывать рот). Что для этого нужно? Чтобы у персонажа присутствовала хотя бы нижняя челюсть - этого уже достаточно для выражения эмоций микроцефала. А если на голове есть какие-то дополнительные рельефные подробности (веки, щеки, уши, губы, нос, рот), можно попытаться сымитировать эмоции, отражающие работу мозгов, например, осознанную речь, меланхолию, радость, страх, и т.д. Ну и, конечно, нужны какие-то «кубики», из которых это можно строить. Порыщем... О! Вот и один из них - очень полезная деталь майского конструктора - Wire Tool. Про wire деформатор трудно сказать что-то новое, он замусолен до тошноты, к примеру здесь, и тут, и там. Соответственно, нужны управляющие и ограничивающие кривые в качестве необходимых "кубиков". Следующий базовый элемент конструктора - Blend Shape. Увязывая с помощью Blend Shape достаточное разнообразие групп морфингов, можно организовать системы Целевого или Сегментного морфинга. Чем детализированнее и подробнее наборы Blend Shapes, да чем их больше, тем сложнее ими управлять. Пример системы сегментного морфинга можно посмотреть здесь. И тогда в помощь можно взять самого технологичного из всех базовых "кубиков" майского конструктора - MEL. Опираясь на эти базовые элементы, можно научить персонаж болтовне и не только.
Глава 2. Околонаучное бла-бла, или экскурс в Артикуляционную Фонетику.
По утверждению психологических словарей "Артикуляция — координация действия речевых органов при произнесении звуков речи, которая осуществляется речевыми зонами коры и подкорковыми образованиями головного мозга. При произнесении определенного звука реализуется слуховой и кинестезический, или речедвигательный, контроль." То есть для реализации артикуляции необходимо навязать персонажу свое представление о динамике речи и контроль исполнения этой динамики. Зауми в этой фразе никакой нет, просто посмотрите на себя в зеркало и попытайтесь проанализировать то, как Вы произносите тот или иной звук, или их связку в виде слов. Конечно, после первых пяти минут кривляний мало что прояснится, но со временем опыт придет. По крайней мере, теперь на вопрос "Что такое липсинк?" можно дать вполне однозначный ответ "Липсинк - это синхронизация речи и движений губ, а точнее артикуляции, имитирующей звуковое оформление мысли".
Несложно представить, что команды управления речевым движением формируют последовательность директив, образующих артикуляционную программу, передаваемую Центральным Речевым Аппаратом к Периферическим механизмам.
Этакий, пользуясь геймдев терминологией, HomoSapiens Speech Engine. В его структуру входят:
- дыхательный отдел, который служит для подачи воздуха (как меха аккордеона или фисгармонии);
- артикуляционный отдел, отвечающий за формирование звуков речи (вроде клапанов на саксофоне);
- резонатор, дающий окраску звука и его характер (сравните окружающий Вас дребезг, который многие называют "речью" с голосом Юрия Борисовича Левитана, или Плачидо Доминго, или Олега Булгака с шансоновской "Живой струны").
К слову, интерфейс HS Speech Engine неоднократно пытались направить в русло общения с компьютером посредством распознавания и синтеза речи. Задача, вероятно, далеко не тривиальная, особенно если начитаться материалов по артикуляционной фонетике. А вот и вариант интерфейса, исключающий даже речевое общение: http://www.gizmag.com/go/6971/ , если не брех..ня, конечно, сорри за французский.
Вернемся к липсинк. Наибольший интерес с точки зрения липсинка, разумеется, представляет артикуляционный отдел. Поглядим-ка, чем формируются членораздельные звуки.
1,2. Губы. Роль губ переоценить трудно, с этим согласится каждый. Именно они несут основной груз ответственности за "оформление" артикуляции речи.
3-5. Зубы и альвеолы. Принимают косвенное участие в подготовке "исполнения" звуков вкупе с остальными мышцами в качестве препятствия прохождению звукового потока. Те, кто учился свистеть в сознательном возрасте, очень хорошо должны чувствовать значение этой части аппарата.
6-8. Твердое небо. Как и альвеолы, пассивный компонент артикуляции, не трасформируется визуально в процессе речи и несет похожую функцию.
9. Мягкое небо с отростком - язычком. Тот, кто смотрел Диснеевские мультфильмы, может вспомнить вибрацию язычка при диких воплях персонажей.
10-12. Надставная труба с голосовыми связками.
13-18. Мышцы языка.
19. Не указанные здесь мимические мышцы.
Вот, в общем, и весь инструментарий артикуляционного аппарата.
Базовой единицей языкового общения является звук. С точки зрения акустики ухо ощущает звук, как некий условный сигнал, который можно объявить некоей элементарной частицей речи - фонемой. А вот как дает определение фонемы википедия:
Фонема (греч. «звук») — минимальная единица устного языка, имеющая смыслоразличительность и временную упорядоченность.
Было бы все очень здорово, если бы речь складывалась бы из четких членораздельных фонем. К сожалению, дело обстоит гораздо сложнее - чистых фонем в речи не бывает, то есть - вообще. Каждая фонема в потоке речи подвергается различным модификациям. В результате этих модификаций возникают возможные комбинаторные ряды вариантов фонемы, которые называются аллофонами.
И как же быть? Как анимировать этот бесконечный поток аллофонов? Не надо пугаться. Все таки, можно ограничить количество аллофонов для каждого конкретного языка, приняв условие, что в речи выделяется набор звуков - основных аллофонов, годных для транскрипции этой речи. Основные аллофоны почти не зависят от позиции звука и его фонетического окружения. Например, основным аллофоном является отдельно произнесенный звук гласной. Для твердых согласных - это звук перед ударным "а". Для мягких согласных - перед ударным "и". Также основной аллофон может проявиться для гласных под ударением, а для согласных - перед гласными "а", "о", "у", "ы".
Условимся, что в дальнейшем Фонема будет пониматься как ее основной аллофон. Например, в русском языке, существуют 42 фонемы:
[а э и о у ы п п' б б' м м' ф ф' в в' т т' д д' н н' с с' з з' р р' л л' ш ж щ ц ч й к к' г г' х х']
А в английском - от 40 до 45, опять же по разным критериям группирования основных аллофонов.
А вот в бзыбском диалекте абхазского языка фонем 67, причем гласных звуков только 2. Супер! Кто-то анимировал абхазский!?
Да! От количества фонем даже в русском языке голова может пойти кругом. На самом деле, для приемлемой артикуляции можно ограничиться урезанным набором фонем, который сгодится и для русской, и для английской речи вместе со всеми поволжскими и йоркширскими диалектами.
Некоторую сложность и организационную неразбериху в производства липсинк вносит фонемный анализ, или лучше сказать - фонетическая транскрипция - особый способ записи речи, фиксирующий составляющие речь звуки и их особенности, то есть передающий произношение. Я не возьмусь обсуждать программы выделения из речи фонем, встроенные, например в Motion Builder, или программы распознавания речи производства "Истрасофт". Например, на сайте здесь выглядит все настолько впечатляюще, что возникают сомнения в необходимости "ручной" транскрипции речи. Зато при самостоятельном фонемном анализе Вы можете сами создать свои правила транскрипции сообразно собственному жизненному опыту, словарному запасу и особенностям дикции. Тем паче, что на каком-то уровне это все проходили в начальных классах школы. К сожалению, такая возможность есть только при работе с родным языком, где Вы сами, глядя в зеркало, можете установить связь между обозначенной Вами фонемой и конфигурацией физиономии. Собственно, ничего особо сложного в фонетической транскрипции и нет, сиди себе слушай да записывай, используя при этом некоторые правила. Основное из них - заключайте транскрибируемую речь в квадратные скобки, например,
[зъкл'уч'аjт'э транскр'иб'ируjэмуjу р'эч' фквъдратныjэ скопк'и]
Произведем анализ используемых фонем.
Наиболее "чистого" воспроизведения в рассматриваемой транскрипции требуют основные фонемы:
- [а], [и], [э], [о] (гласные под ударением), [у], [ы], [б'] (мягкая перед ударным [и], еще и сомкнутая), [р] (твердая перед ударным [а]), [ф] (сомкнутая), [в] (сомкнутая), [п] (сомкнутая). Это необходимый минимальный набор звуков для производства липсинк этой фразы. Из него исключим звук [и], его можно смикшировать из [ы] + [у] + [п]. Добавим в этот набор некий усредненный звук, выглядящий на физиономии как улыбка [smile]. Его можно использовать для "фонового" выражения лица и микширования с основными фонемами для получения ряда остальных фонем фразы.
Вот некоторык ссылки на информацию по фонетической транскрипции:
Фонетическая транскрипция английского языка
Для упрямых и любознательных приведу некоторые ссылки, касающиеся фонемного анализа:
Правила англо-русской практической транскрипции
Международный фонетический алфавит
Схема и образцы фонетического анализа
Глава 3, экспериментальная, в которой можно побаловаться с "кубиками" и попытаться их объединить.
Потренируемся на файле boy.mb. Прежде, чем пристутить к делу, несколько слов о "подходящих и неподходящих" для липсинк моделях.
Еще остались энтузиасты, которые станут оспаривать утверждение о том, что для моделирования персонажа нужны базовые знания анатомии? Нет? Тогда надо признать и тот факт, что, приступая к липсинк, неплохо бы поинтересоваться, а чем, собственно, человек формирует эти связные звуки, которые называются речью. Можно отстаивать разнообразные точки зрения по моделированию лиц и голов персонажей. Можно искать оптимальные способы, дающие производительнось, легкий мэппинг или технологичность. А для липсинк, вероятно, наиважнейшим фактором является имитация физиологической топологии мимических мышц. Например, сетка вышеупомянутого персонажа Heartbreacker не имеет круговой структуры в области рта и глаз, что несомненно осложнит работу по липсинк, добавив головной боли по ликвидации нежелательных спонтанных нефизиологических морщин. В связи с этим, не посчитайте за излишество неглубокий дайвинг в медицинскую энциклопедию.
Мимические мышцы.
В подробное описание мимических мышц можно углубиться здесь.
1 - сухожильный шлем;
2 - височная фасция;
3 - височная мышца;
4 - затылочно-лобная мышца: а) лобное брюшко, б) затылочное брюшко;
5 - мышца, наморщивающая бровь;
6 - круговая мышца глаза;
7 - задняя ушная мышца;
8 - носовая мышца: а) крыльная часть, б) поперечная часть;
9 - мышцы скул: а) малая скуловая мышца, б) большая скуловая мышца;
10 - мышца, поднимающая верхнюю губу;
11 - мышца, поднимающая угол рта;
12 - щечная мышца;
13 - круговая мышца рта;
14 - жевательная мышца;
15 - мышца, опускающая угол рта;
16 - подбородочная мышца;
17 - мышца, опускающая нижнюю губу.
Например, Круговая мышца рта (m. orbicularis oris) 13 представляет собой мышечные пучки, кругами располагающиеся в толще губ. При сокращении круговой мышцы закрывается рот и вытягиваются вперед губы. Точка начала располагается в коже угла рта, а место крепления - в коже в области средней линии.
Материалов по моделированию головы в интернете тоже достаточно. Например, здесь, здесь, здесь или здесь.
Какой бы способ моделирования Вы не выбрали, необходимо топологию модели подчинить простому правилу: формообразующие линии должны максимально соответствовать естественному расположению мимических мышц, да и вообще мускулов головы. Проиллюстрировать это правило можно следующим рисунком:
Если при деформациях оболочки лица в отмеченных направлениях не происходит образование неестественных складок, то Ваша модель "совершенна" с точки зрения липсинк. В противном случае - делайте новую модель либо приготовьтесь к дополнительному объему работ по подготовке липсинг рига и анимации.
Итак, Вы загрузили файл boy.ma. Уже при поверхностном взгляде на модель видны огрехи: уже упомянутое несоответствие круговой мышце рта, отсутствие линии вдоль скуловидной мышцы, невнятное расположение щечной мышцы, мышцы смеха, а соответственно, мышцы, поднимающей угол рта. Нет намека на круговую мышцу глаза, бог с ней, глаза - отдельный объект. Мышцы брови - удовлетворительны. Единственное, что не вызывает нареканий - жевательные мышцы.
На этом фоне не могу удержаться, чтобы не похвалить топологию модели, описанную в уроке http://www.render.ru/books/show_book.php?book_id=36&start=0
Вернемся к нашей модели. То что она несовершенна, еще не говорит, что липсинк невозможен.
Выберем несколько нужных кубиков из майского конструктора.
Кубик 1. Создание линий прогнозируемых деформаций, имитирующих работу мышц.
Файл boy.ma еще открыт? Убедитесь, что у объекта body в History узел polySmoothBody в закладке Node Behavior имеет Has No Effect.
Точно так же проверьте брови eyeBrowR и eyeBrowL. Этим можно временно исключить операцию smooth из History, ускорить время отрисовки полигонов в рабочем окне и упростить "управляющие мышцами" кривые. Во-он они, в группе boySmile. Видите? Посмотрим-ка поближе, например, на кривую eyes_. Очевидно, что она построена с привязкой к CV меша body и базируется на круговых мышцах глаза и носовых мышцах. Кривые in_ и l_ очерчивают губы по внутренней и образующей линии и отвечают за работу круговой мышцы рта и мышц губ, отчасти угловых мышц рта.. Кривая out_ имитирует наличие круговой мышцы рта, его углов и мышц губ. Аналогичным образом построены и остальные кривые. Особую роль играет кривая jaw_. Она должна отвечать за работу нижней челюсти. Отказ от воздействия кости нижней челюсти связан с разделением функций аниматора фигуры персонажа и аниматора липсинк. Челюсть оказалась в ведении липсинк, поскольку фонемы и мимика требуют синхронного взаимодействия нижней челюсти и мышц лица, которое не может быть причислено ко вторичному движению. Хотя, челюсть можно было бы повесить и на кость. А! Неважно.
Кубик 2. Формирование wire деформаторов.
Линии, имитирующие мышцы лица, построены. Если их использовать в качестве wire-деформаторов, то, двигая их управляющие вертексы, можно будет деформировать сетку лица. Так и поступим! Выбираем Animation - Deform - Wire Tool Attribute editor, устанавливаем Dropoff Distance 2.5, На предложение в HelpLine WireTool: Select Shape(s) to deform кликаем по body и Нажимаем ENTER, затем на предложение Wire Tool: Select wire curve(s) выбираем все кривые кроме tonq_ (используйте Shift) и нажимаем ENTER to finalize operation. Отдельно вайрим кривую tonq_ на язык tonque и кривую eyes_ на обе брови. Теперь можно побаловаться с кривыми и их управляющими точками, и вовсю поиздеваться над HeartBreacker-ом.
Кубик 3. Создание выражений лица и фонем для последующих целевых morph.
Если строить рожи уже надоело, можно приступить к формированию фонем и выражений лица. Как - понятно! Берем управляющие вертексы и таскаем в разные стороны до получения удовлетворительного результата. Упс! Одну минуточку. Оставьте в покое группу boySmile. Продублируйте ее с помощью Duplicate Special со вкюченной опцией Duplicate input graph. Получите группу-копию с той же наследственностью и генами в виде навешенных wire деформаторов. Обзовите группу и кривые внутри нее по имени эмоции или фонемы и - вот теперь можно таскать вертексы кривых, глядя на деформации мешей группы.
И так до тех пор, пока не будут сформированы все необходимые фонемы и эмоции. Затем, все меши внутри дуплицированных групп можно поубивать вместе с wire деформерами. Достаточно одних оставшихся модифицированных кривых. Можете сами поупражняться, а можете качнуть файл с готовыми вариантами boy01.mb.
Кубик 4. Увязка морф-целей в систему Blend Shapes.
Уже сейчас есть комплект целей, необходимых для морфинга физиономии. Увяжем их в наборы BlendShapes. Открываем все группы и методично формируем набор для каждой кривой. Разумеется, последней в наборе должна выделяться кривая, принадлежащая группе boySmile, которая и является "source" всех морф-таргетов. Сделали набор - формируем Blend Shape. Предлагаю имена наборов кривых поставить в соответствие именам BlendShapes следующим образом:
chL_ - Cheek_L;
chR_ - Cheec_R;
eyes_ - EyeBrows;
fh_ - ForeHead;
hL_ - Hear_L;
hR_ - Hear_R;
in_ - In_Leeps;
jaw_ - Jaw;
jn_ - JawNeck;
l_ - Leeps;
ap_ - NeckApple;
nose_ - Nose;
out_ - OutLeeps;
tonq_- Tonque.
В принципе условности наименования не важны. Но чуть ниже есть описание построения скриптового интерфейса, и лучше придерживаться каких-то соглашений по именованиям. Хотя, имена в скрипте можно и поменять. Может это даже предпочтительнее - при таком опыте станет ясно, как скрипт модифицировать под свои нужды. Для наглядности сравните имена в окне Blend Shape и фрагменте скрипта. Соответствующие друг другу некоторые имена помечены галочками одного цвета.
Но о самом скрипте - в следующем разделе. Тем не менее, во избежание нестыковок со скриптом загрузите проект boy02.mb.
Кубик 5. Построение интерфейса управления липсинк.
Ну, что ж! Баловство с ползунками доставляет некоторое садистское удовольствие. Но как подумаешь, что все это нужно двигать ради получения одной только фонемы, да еще и кеить время от времени, да еще и ключи редактировать да таскать туда-сюда по таймлайну! Как-то кисло на душе. (Слышу голос: "Где-то это было... Просто Дежа-Вю! Сейчас в следующей строке появится слово MEL, зуб даю!")
Хорошо, что в майке за лентяев есть кому потрудиться. Правильно - это MEL. (Опять голос: "Я ж говорил!")
Задание будет выглядеть так - нужен скрипт, который может:
- автоматически формировать основные фонемы;
- автоматически формировать основные эмоции;
- автоматически формировать рабочее пространство для удобства манипуляций;
- накладывать фонемы на выражения лица (и наоборот) вручную;
- редактировать фонемы вручную;
- микшировать и создавать новые фонемы и выражения лица вручную;
- селектировать, устанавливать и резать ключи индивидуально на каждую группу мышц и оптом на все;
- прилично выглядеть.
После некоторого времени, затраченного на удовольствие скриптования, можно взглянуть на результат:
Проверьте, загружен ли проект boy02.mb. Откройте в текстовом редакторе файл Phonems.txt. Это и есть исходный текст скрипта. Его достаточно загрузить в окно Script Editor (Ctrl+C, Ctrl+V) и выполнить Execute - поверх рабочего окна откроется окно Arsenium Face Control. В структуре скрипта ясно проглядываются несколько процедур.
//WorkWindow Creating. Процедура создания рабочего окна.
Состоит из команды создания рабочего окна с наименованием и проверкой наличия его на дублирование в объектах интерфейса (строки 2 - 6).
Далее с помощью элементов описания окна формируем:
- общий размер окна с названием (строка 7);
- верхнюю его часть WinTop, определяющую одноколонную раскладку со "вдавленной" рамкой типа "etchedIn" (строки 8 - 52).
Обратите внимание на "отбивку" верхней части в 52 строке;
- со вложенною конструкцией WinInTop, раскладывающую кнопки по двум колонкам (строки 10 - 51):
- и нижнюю часть. Не забудьте "отбить" нижнюю часть (строка 61) и "вывести" окно на экран, чтобы было на что глядеть (строка 63).
Все предельно просто! Кнопки можно обозвать как угодно в соответствие с любыми фонемами или эмоциями по желанию. Рядом с кнопками в тексте скрипта расположены и команды, которые выполняются при нажатии на кнопку. Например, в строке 24 "батон" с "лэйблом" "Cut Keys" вызовет командой процедуру под названием "CutCurKeys". Эта процедура обязана в текущем кадре "убить" ключи по всем составляющим BlendShapes.
Посмотрите на строки 70 - 71! Кривовато? Не фиг стыдиться "нестильного" скриптования! Главное, чтоб работало. Не нравится? Можно и многословнее, как в строках 73 - 86. Понятно, что ключи режутся в текущем кадре по всем составляющим Blend Shapes от Cheek_L до Tonque. Формат команды:
cutKey [flags] [targetList], где
- t (флаг time);
- интересное выражение для таргет листа. В него можно включить сразу все веса по выбранному Blend Shape, например Cheek_L.weight или коротко Cheek_L.w.
А вот если попытаться добавить в список блендшейпов еще что-нибудь, например, возможность двигать скальпом с помощью дополнительной кривой, то текст процедуры становится неоптимальным. Придется ручками вносить имя нового блендшейпа. Лучше вернуться к "задробленным" строкам и подставить в команду select -r [таргет лист всех блендшейпов, включая новый]. Откуда его выковырять? Воспользуемся возможностью команды ls:
ls -typ blendShape выдаст список всех блендшейпов (будьте внимательнее, если у Вас не один персонаж в сцене).
Выделяем их:
select -r `ls -typ blendShape`
Режем:
cutKey -t `currentTime -query`;
А можно еще короче, если снова взглянуть на формат команды cutKey (строка 88):
cutKey -t `currentTime -query` `ls -typ blendShape`;
Аналогичным образом строятся процедуры delAllKeys иKeyAll.
Некоторый интерес может представить процедура Reset. Как обнулить "ползунки" бленшейпов можно подсмотреть в Script Editor, нажав в окне блендшейпов (Window - Animation Editors - Blend Shape) на одну из кнопок Reset All. Результат приведен в строках . В каждой из них с помощью listAttr подчитывается массив составляющих каждого из блендшейпов, а затем в цикле каждый элемент в списке массива обнуляется.
Очень интересна конструкция с использованием "команды" catch, которая в сущности и не является командой. Catch похожа на процедуру и позволяет отслеживать правильность выполнения фрагмента скрипта, информировать о возникновении ошибки во фрагменте. Скрипт при этом не останавливается, и имеется возможность проанализировать его правильность выполнения "на лету". Без Catch скрипт бы упал, а с нею - благополучно функционирует дальше. Формат: catch ( <Mel expression> )
В качестве <MEL expression> используется конструкция с командой eval. Обычно эта команда юзается в случаях, когда:
- необходима сложная MEL-комбинация, представленная в формате строки, где можно намешать чего угодно, лишь бы синтаксис контроль MEL этот коктейль "схавал";
- необходим автоматический выбор реалтаймовой команды;
Показателен пример из Help:
В комплекте с Catch команда Eval образует надежное звено контроля рантайма. "Настоящие программисты" говорят, что это хороший тон. Приятно, что ни говори, погреть бок в их звездном сиянии.
А вот как организованы процедуры построения фонем.
В начале каждой процедуры, формирующей фонему, обнуляются все ползунки процедурой Reset. Затем, тупо устанавливаются значения атрибутов элементов блендшейпов, соответствующих управляющим wire кривым. В примере использованы значения 1. Напоминаю еще раз, 1 - это зашкаливающее значение, подходит для гримасничанья. Но решать Вам, какой характер у Вашего героя. Побалуйтесь с ползунками и выберите удовлетворяющие Вас значения. Их можно записать карандашиком, но лучше грабить прямо Script Editor оптом для всех ползунков сразу. Добавлю, что комбинациями положений ползунков можно получать новые фонемы и выражения лица. Смело добавляйте их в скрипт в виде процедур и вызывающих их кнопок. Как это сделать, полагаю, уже ясно, а парочка свободных кнопочек есть - Fear, Strange.
Ну вот, уже, кажется, полегче. Можно одним нажатием сформировать выражение лица или фонему. А вот неплохо бы было, если б для для коррекции блендшейпов не приходилось бы все время вызывать их окно, потом схлопывать его, снова открывать. Те же неудовства с окном Graph Editor. Короче - сформировать бы рабочую среду, а! Жмите кнопку Control Workspace, которая вызовет следующую процедуру:
Получаем процедуру тоже просто. Средствами Maya выбираем четырехоконный интерфейс. В окна подгружаем панели Outliner, Blend Shape, Graph Editor, persp. Открываем Script Editor, копируем нужные строки и заносим в текст процедуры. А вид рабочего пространства может при этом выглятеть так:
Кубик 6. Анимация липсинк.
Надо полагать, у Вас есть тактовый или экспозиционный лист, отражающий положение фонем и выражений лица на таймлайне. Остатся переходить в нужный кадр таймлайна, кликать на подходящую кнопку скриптового окна, доводить меш ползунками блендшейпов "до ума" и кеить. Если надо - двигать ключи, резать их. Для "оптовых" манипуляций с ключами предусмотрены кнопки в разделе Current Time под именами Key All, Select All, Cut Keys - для операций в текущем кадре. В качестве Options выделены кнопки Control Workspace, Reset Face и кнопка для отчаявшихся что-либо исправить в липсинк или для любопытных садистов "со стороны" Delete All Keys (убить анимацию), окрашенная в шпионский темно-серый цвет.
Глава 4. Мимические "фишечки".
Как и во все остальной анимации, мимика и липсинк требуют тщательно спланированного тайминга. Если ошибки в анимации ходьбы и бега замечаются глазом без критичных последствий для персонажа, то ошибки анимации мимики коренным образом меняют восприятие характера. Например, замедленное моргание, вызовет ощущение сонливости и лени у персонажа. А убыстренное или с фиксацией фаз - добавит "кукольности". Движение глаз - вообще отдельная песня. Объемы анимации глазных мыщц и глаз - одни из самых больших. Глаза не могут находиться в состоянии покоя никогда. Даже когда персонаж дрыхнет, глаза продолжают движение под веками. Глаза предваряют любое движение головы, а вот фиксация взгляда всегда осуществляется после завершения вторичного движения, если противоположное не требуется по замыслу режиссера.
Глаза не должны оставаться неподвижными более секунды. Движения, а точнее, вращения глазных яблок - акт довольно быстрый, не следует тянуть его больше 3 кадров, а лучше 1-2. Даже многозначительный взгляд в камеру неплохо было бы разнообразить микроскопическими вращениями глаз. Для реализации такой схемы анимации будет ошибкой констрэйнить глаза прямо на камеру, удобнее запарентить их на локатор, который aim constraint на камеру, например. Кликнике на gif, чтобы посмотреть фрагмент.
Это позволить при отслеживании камеры глазами, к примеру, оглядеть ее углы, или кинуть легкие взгляды по сторонам, изобразить смущение, затаить месть, предварить сюрприз и т.д. При каждом движении глаз следует анимировать и веки, имитировать работу круговой мышцы глаза.
Вернемся к морганию. Посмотрите, как работают веки.
Шевелятся оба века. Генеральное движение век - вниз, нижнее веко может немного опаздывать в ожидании смыкания. При этом круговая мышца глаза утягивает веки немного вовнутрь к носу. Это же движение легко, почти намеком повторяет и глазное яблоко. Для моргания достаточно 3 фаз: глаз открыт, глаз полуприкрыт, глаз закрыт. Цикл нормального моргания составляет 5-6 кадров, причем фаза закрытого глаза 2 кадра, чтобы исключить "щелчок" веками (используйте однокадровый "щелчок" для "блымсанья" глазами, подчеркнув его фазой вытаращенных глаз). Можно настроить процесс таким образом, чтобы движение глазных яблок происходило автоматически при каждом моргании веками, например, с помошью Set Driven Key. Кликните по рисунку.
Конечно, суетливые движения глазных яблок и частые моргания добавляют беспокойности и неуверенности в характер персонажа. Но и без них герой становится картонным и неинтересным. Надо искать баланс.
Еще один важный аспект - мышцы лица никогда не движутся изолированно. Даже кривая однобокая ухмылка требует задействования щек, глаз, бровей. А если шевельнуть при этом скальпом! Довольно живенькая физиономия получится.
Тут важно не переусердствовать. Опыт и здравый смысл предостережет от нелепых сочетаний вроде добрых глаз и садистского оскала. Но это еще пол-беды! Несоответсвие взаимных масштабов и последовательности деформаций - обычное дело и настоящий бич липсинк - приводит к отображению мимики эпилептика. К этому же провоцирует и отсутствие вторичной анимации головы, тела, рук, которая поддерживает мимику и липсинк. А без нее очень тяжело не свалиться в крайности. Кликните на анимированный gif, чтобы сравнить его с видео без поддержки вторичной анимацией.
Режиссерская раскадровка, аниматик и референсное видео - просто спасение в такой ситуации. Кстати, на этом этапе подпускать заказчика к полуфабрикату категорически не рекомендуется - без поддержки вторичной анимацией липсинк может выглядеть совершенно иначе.
Точно так же как и любое другое движение лицевая анимация подчиняется тем же законам. Например, смягчение начала и завершения формирования выражения лица. Лицевые мышцы работают очень быстро (смотри ссылку), поэтому фаза подготовки не должна занимать больше 2-3 кадров и не должна приводить к целевому выражению до конца. Потом выражение плавно "дожимается" и удерживается. Переход к новой эмоции - снова легкий импульс и "доформирование".
Принцип "захлестов" - следующее движение должно рождаться из предыдущего (смотри ссылку). Так, анимация глаз тянет за собой анимацию бровей, взгляд в сторону инициирует движение кожи лба, щек, уха и в конце-концов приводит к выражению лица. Все это тесно связано со вторичной анимацией, например, дыхание влечет анимацию ноздрей, век, щек, нижней челюсти, а повороту головы предшествует мгновенный косой взгляд прищуренных глаз. И очень важно утрировать, всемерно подчеркивать каждое движение, доводить липсинк до грани. Никогда лицевые мокапы не будут выразительнее ручного липсинка! В конце концов, если заказчик упрется, можно мимику "притушить", но старайтесь не поддаваться! Если липсинк в фокусе анимации, если он в данный момент важен, защищайте его, ищите доводы не в техниической части, а в художественной, приводите примеры, отстаивайте свою работу и чужим, и своим опытом, демонстрируйте раскадровки и референсы, анализируйте вместе и добавляйте комбинации со вторичной анимацией, в конце концов меняйте липсинк, но в направлении подчеркивания эмоций, а не в угоду заказчику. И это правильная реакция на слова: "Мне не нравится, как он говорит букву Ы (моргает, улыбается, смотрит)!" Нельзя обижаться, молча упираться, говорить - "Я сделаю, как скажете! Но..." Будьте конструктивны, хоть это и может повлечь за собой массу переделок, начиная с моделирования. (В этом страшном месте повествования ощутите, пожалуйста, важность наличия на проекте режиссера и его бумажек).
Мимикой, артикуляцией и широтою души можно наделить и топор. На мой взгляд, есть какая-то глубина в любой чуши, которая изрекается из "уст" деревяхи, хоть, как доказал Псой Короленко, "Буратино был тупой..."
Но, как говорится - Трепицен-зи нихт! Неплохо бы что-нибудь да сделать. Вот она фраза, персонаж есть, скрипт есть - вперед!
После нескольких минут работы начинает получаться - нажал кнопочку, закеил, фонема готова. Переход к сле