NodeIcon FacialWrapping

Только в Wrap4D

Нода FacialWrapping лежит в основе конвейера 4D-обработки. Чтобы обработать 4D-последовательность, нужно просто вычислить ноду FacialWrapping для каждого кадра последовательности. Каждый кадр может вычисляться независимо, поэтому вся последовательность может вычисляться параллельно.

При обработке 4D-последовательностей мы обычно работаем с сотнями или тысячами кадров. Идея ноды FacialWrapping заключается в том, чтобы иметь возможность выдавать результат, не требующий ручной чистки.

Однако эта нода может значительно упростить процесс враппинга сканов лицевых выражений.

Нода FacialWrapping аналогична ноде BlendWrapping.

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

Вы можете использовать персонализированные блендшейпы, обобщённые блендшейпы, или даже блендшейпы, созданные для другого персонажа. Если к моменту 4D-обработки у вас будет набор персонализированных блендшейпов актера, это значительно улучшит качество подгонки. Однако этот метод очень хорошо работает даже с обобщёнными блендшейпами.

Особенностью ноды FacialWrapping является то, что она также использует результаты распознавания лица для контуров губ и век в процессе подгонки.

Контуры губ и век сначала должны быть аннотированы на нейтральной базовой модели с помощью ноды FacialAnnotation.

Обнаружение контуров губ и век обычно выполняется с помощью приложения Track (с использованием персонализированного детектора) или с помощью ноды FacialDetection (с использованием универсального детектора). Однако можно передать результаты пользовательского детектора, используя последовательность файлов JSON в специальном формате.

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


Редактор

Нода FacialWrapping имеет визуальный редактор с двумя окнами просмотра. В левом окне просмотра отображаются входные модели, точки и FacialAnnotation в 3D. В правом окне просмотра отображаются те же данные, а также результаты FacialDetection через вид с камеры.

Визуальный редактор имеет следующие режимы отображения:

Отобразить основную модель

В обоих окнах просмотра отображается только базовая модель. Вы можете использовать этот режим для проверки точности FacialAnnotation.

../../_images/ShowBasemesh.jpg

Показать цель

В обоих окнах просмотра отображается только целевой скан. Вы можете использовать правое окно просмотра, чтобы проверить точность контуров FacialDetection.

../../_images/ShowTarget.jpg

Показать всё

Отображаются как базовая модель, так и целевой скан. Используйте этот режим, чтобы убедиться, что FacialAnnotation точно соответствует FacialDetection в нейтральном кадре последовательности.

../../_images/ShowAll.jpg

Входы

Изменяемая геометрия

Geometry Геометрия, которую нужно деформировать (базовая модель)

Фиксированная геометрия

Геометрия Целевая геометрия для соответствия изменяемой геометрии (скан)

Соответствующие точки

PointCorrespondences (необязательно) Набор соответствий точек между изменяемой геометрией и Фиксированной геометрией

Исключить изменяемые полигоны

PolygonSelection (необязательно) Набор полигонов, которые будут исключены из процесса враппинга, т. е. они не будут пытаться соответствовать Фиксированной геометрии, но будут деформироваться максимально жестко, чтобы соответствовать остальным полигонам модели.

Точки выравнивания

PointsOnTriangle Набор точек, выбранных либо на Изменяемой геометрии, либо по Нейтральном эталоне (поскольку они имеют одинаковую топологию).

Если параметр Использовать жесткое выравнивание включен, точки будут использоваться для жесткого выравнивания нейтрального эталона к изменяемой геометрией по ориентации и масштабу. Затем то же преобразование будет применено к каждому эталонному блендшейпу.

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

Лицевая аннотация

FacialAnnotation (необязательно) Лицевая аннотация

Распознавание лица

FacialDetection (необязательно) Обнаружение лица

Камера

Камера (необязательно) Положение и настройки камеры для интерпретации входных данных аннотаций и обнаружения

Совет

Если все входы FacialAnnotation, FacialDetection и Camera подключены, нода будет использовать обнаруженные контуры во время подгонки.

Если ни один из входов не подключен, нода будет использовать тот же метод, что и нода BlendWrapping.

Если некоторые, но не все входы подключены, нода вернет ошибку.

Выход

Geometry Заврапленная геометрия

Параметры

Вычислить:

запускает процесс враппинга в окне предварительного просмотра

Автовычисление:

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

Нейтральный эталон:

имя файла модели нейтрального эталона

Эталонные блендшейпы:

список имён файлов эталонных блендшейпов

Использовать разрешение камеры:

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

Разрешение камеры:

пользовательская ширина и высота камеры, которые будут использоваться, если флажок Использовать разрешение камеры не установлен.

Количество компонентов:

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

Количество узлов для использования:

косвенно контролирует, насколько гибкой является базовая модель. Увеличение этого значения сделает базовую модель менее гибкой и значительно увеличит время вычислений. Рекомендуется не изменять это значение и использовать Гладкость и Финальный радиус выборки для управления гибкостью базовой сетки.

Гладкость:

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

Алгоритм ближайших точек:

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

Вес контрольных точек:

определяет влияние контрольных точек на процесс враппинга. Более высокие значения приводят к более точной привязке контрольных точек к их целям.

Вес обнаружения:

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

Итерации АБТ:

количество итераций алгоритма ближайших точек

Итерации от грубого к тонкому:

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

Допуск:

критерий остановки враппинга. Чем выше значение, тем раньше будет завершена подгонка, тем менее точной будет подгонка.

Начальный радиус выборки:

размер частей базовой модели во время первой итерации от грубого к мелкому. Определяется в сантиметрах

Финальный радиус выборки:

размер частей базовой модели во время последней итерации от грубого к мелкому. Определяется в сантиметрах. Этот параметр значительно

Использовать жесткое выравнивание:

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

Использовать перенос:

если установлено, для каждого эталонного блендшейпа вычисляется разница вершин от нейтрального эталона до эталонного блендшейпа и добавляется разница в базовую модель (изменяемая геометрия), создавая персонализированный набор блендшейпов

Порог изменения формы:

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

Совет

Все параметры откалиброваны для работы на моделях сантиметрового масштаба. Настоятельно рекомендуется масштабировать модель до сантиметров (вы можете восстановить масштаб после обработки). Если ваша модель не в сантиметровом масштабе, вам необходимо соответствующим образом настроить все параметры, отмеченные меткой «(см)».

Исправление проблем

Внутренняя часть рта сломана

Убедитесь, что FacialAnnotation и результат детектора Track для нейтрального кадра очень похожи. Если они не похожи, измените аннотацию или повторите обнаружение лица, чтобы добиться аналогичных результатов.

Если это не помогает, уменьшите параметр Вес обнаружения.

Это также может быть вызвано неточным FacialDetection. Используйте ноду EditFacialDetection, чтобы вручную настроить результаты FacialDetection из ноды LoadFacialDetection. Если это поможет, вам нужно исправить обнаружение лица в Track и снова экспортировать результаты FacialDetection.

Отверстие в ротовой полости

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

Если в ротовой полости есть отверстие, и это отверстие видно с фронтальной камеры, алгоритм определения контуров может дать сбой. Мы предлагаем использовать твердые ротовые полости. Если в ротовой полости для рта есть отверстие, убедитесь, что это отверстие не видно с передней камеры, подключенной к ноде FacialWrapping.

Шумный скан

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

Второе, что вы можете попробовать, — это увеличить параметр Гладкость.

Подгонка не очень точная

Подгонка ноды FacialWrapping должна быть чистой и стабильной, но не обязательно должна быть очень точной, поскольку она используется в качестве инициализации ноды OpticalFlowWrapping.

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

Плохая посадка глаз

Убедитесь, что кривые FacialAnnotation точно соответствуют результату FacialDetection, экспортированному из Track для нейтрального кадра. Если они не совпадают, попробуйте настроить FacialAnnotation или обнаружение в Track.

Убедитесь, что ваша FacialAnnotation для век очень точна. Мы настоятельно рекомендуем наносить контур века точно на краевую петлю, соответствующую линии прикрепления ресниц, а не на переход между веком и склерой. Также убедитесь, что вы отслеживаете линию прикрепления ресниц (а не границу склеры) внутри Track.

Я хочу использовать эталонные блендшейпов от нескольких персонажей

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

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

Вероятно, это означает, что ваши эталонные блендшейпы не содержат похожих выражений. Чтобы исправить это, вы можете расширить набор эталонных блендшейпов новым выражением.

Вы можете сделать это, вручную очистив проблемное выражение с помощью ноды Brush и добавив полученную модель в параметр Эталонные блендшейпы. Если вы используете обобщённые блендшейпы, вы можете перенести очищенную модель на обобщённую нейтральную модель, прежде чем добавлять ее в эталонные блендшейпы.