NodeIcon ImageFacialWrapping

Только в Wrap4D

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

Эта нода аналогичен комбинации нод FacialWrapping и OpticalFlowWrapping для изображений. Нода принимает входные изображения и соответствующие им камеры вместо сканов. На данный момент поддерживается работа с одной стереопарой (2 камеры).

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

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

Чтобы облегчить процесс враппинга, очень желательно передать на вход информацию о детектировании лиц и маркерах, полученных в Track.

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

Примечание

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

Мы предлагаем использовать топологию с 20 000–50 000 вершин.

Общий случай использования

Распространенным вариантом использования является сопоставление некоторой исходной геометрии с текстурами для целевых изображений. На данный момент основным вариантом использования является конвейер обработки 4D для HMC. Этот процесс можно разделить на несколько этапов:

  1. подготовка двух калиброванных камер с помощью Инструмент калибровки стереокамеры. Или вы можете использовать камеры, полученные другим способом, подробнее о поддерживаемых форматах можно прочитать в разделе Camera;

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

  3. создание аннотации лица с помощью ноды FacialAnnotation. Этот шаг необходим, если вы собираетесь использовать Распознавание лиц из Track;

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

  5. подгонка исходной геометрии к изображениям с помощью узла ноды ImageFacialWrapping.

  6. результаты постобработки с помощью GuidableHeadStabilization, GuidableReplace, GuidableDeltaMush, GuidableMesh и GuidableTexture;

FacialWrapping против ImageFacialWrapping

ImageFacialWrapping хоть и похож на FacialWrapping, но имеет ряд существенных отличий:

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

  2. использует персонализированные стабилизированные формы смешивания в качестве Эталонные блендшейпы. Это необходимо из-за ограничений камер;

  3. использует персонализированные текстуры. Это необходимо для имитации морщин и кровотока на лице;

  4. использует Illumination Simulation для лучшей визуализации геометрии в целевых изображениях;

  5. использует маски выборки и неопределённости для большего контроля над деформацией.

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

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

Эталонные сетки включают в себя:

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

нейтральное выражение лица эталонного персонажа. Масштаб должен соответствовать исходной геометрии.

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

набор стабилизированных блендшейпов (выражений лица) вашего эталонного персонажа.

../../_images/StabilizedBlendshapes.gif

Все эталонные блендшейпы должны быть выровнены (стабилизированы) по нейтральному эталону и иметь одинаковый масштаб. Желательно, чтобы эталонные блендшейпы охватывали как можно больше разнообразных форм лиц актеров.

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

Примечание

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

Маска выборки

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

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

../../_images/SamplingMask.jpg

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

Маска неопределенности

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

../../_images/UncertaintyMask.jpg

Поэтому мы можем явно указать такие области с помощью маски. Алгоритм аналогичен узлу GuidableReplace. Отмеченные регионы будут более предсказуемыми на основе Эталонные блендшейпы. Размер определяется Весом региона неопределенности.

Совет

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

Динамическая текстура

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

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

Примечание

Эталонная геометрия для текстур может отличаться от основной эталонной геометрии.

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

../../_images/DynamicTexture.png

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

Примечание

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

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

Совет

Вычисление динамической текстуры требует много ОЗУ и времени для расчета, но сам процесс враппинга не требует текстур высокого разрешения.

Поэтому вы можете использовать параметр Понизить разрешение текстуры для уменьшения входных текстур. Разрешение 2048x2048 вполне достаточно. Или вы можете предварительно загрузить текстуры нужного разрешения и установить параметр 1.

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

Имитация освещения

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

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

../../_images/IlluminationSimulation.png

Примечание

Эту опцию можно применять как с включенной, так и отключенной функцией Динамические текстуры. Затем освещение будет применено к текстуре Начальной геометрии.

Совет

Для лучшей производительности Имитации освещения желательно использовать кроссполяризованные текстуры.

Итерации

Расчет выполняется в несколько итераций. Существуют пары параметров ноды со словом “Диапазон”. Значения таких параметров изменяются на каждой итерации, начиная с первого значения и заканчивая вторым значением.

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

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

Редактор

Нода ImageFacialWrapping имеет визуальный редактор с двумя окнами просмотра. Левый отображает изображение через первую камеру. Справа через вторую камеру. Аннотация лица и Обнаружение лица дополнительно отображаются в каждом из окон просмотра, а также маркеры как на изображениях, так и на базовой сетке.

../../_images/ToolBar.jpg

Показать

может использоваться для выбора режима отображения геометрии на целевом изображении

Текстура

выбрать, какую текстуру отображать на геометрии, или не отображать вообще

Точки

включение отображения маркеров на изображении и на геометрии

Имена

включение отображения названий маркеров. Может быть полезно для проверки на совпадения

Обнаружение

включение отображения Распознавания лиц и Аннотаций к лицу

Примечание

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


Входы

Начальная геометрия

Geometry Геометрия, которую нужно деформировать (базовая сетка). Должна быть приблизительно выровнена по отношению к Камерам.

Маркеры на исходной геометрии

NamedPointsOnTriangle (необязательно) Набор именованных точек исходной геометрии. Имена должны соответствовать Точкам на экране

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

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

Камеры

Cameras (несколько) Положение и настройки камер соответствующие Изображениям. На данный момент можно использовать только 2 камеры

Изображения

Image (несколько) Набор изображений, соответствующих Камерам. На их основе будет подогнана Начальная геометрия.

Точки на изображении

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

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

FacialAnnotation (необязательно) Создается с использованием ноды FacialAnnotation и должно соответствовать Обнаружению лиц

Обнаружение лица

FacialDetection (несколько) (необязательно) Создается с использованием Track и должно соответствовать аннотации лица

Маска стабилизации

VertexMask Маска вершин для стабилизации геометрии внутри процесса враппинга. Используется маска, аналогичная маске из ноды GuidableHeadStabilization.

Маска выборки

VertexMask Маска вершин, с помощью которой задается радиус выборки внутри маски и снаружи.

Маска неопределенности

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

Фиксированная маска

VertexMask (необязательно) Маска вершин, показывающая, какие вершины следует зафиксировать для Начальной геометрии. Отличие от Исключенные изменяемые полигоны состоит в том, что в этом случае вершины вообще не перемещаются, тогда как в Исключенные изменяемые полигоны они могут перемещаться максимально жестко.

Примечание

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

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

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

Выход

Geometry Заврапленная геометрия. К этой геометрии прилагается дестабилизирующая трансформация. Если применить обратную самотрансформацию, оно будет приблизительно совмещено с нейтральным эталоном.

Параметры

Вычислить:

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

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

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

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

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

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

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

Параметры враппинга

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

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

Итерации понижения разрешения:

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

Итерации обновления текстур:

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

Вес зафиксированных вершин:

вес, с которым вершины Начальной геометрии остаются на месте согласно Фиксированной маске

Диапазон ширины изображения:

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

Диапазон гладкости веса:

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

Диапазон веса подгонки ширины:

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

Диапазон веса глубины подгонки:

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

Диапазон веса контрольных точек:

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

Диапазон веса обнаружения глаз:

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

Диапазон веса обнаружения внешних губ:

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

Диапазон веса обнаружения внутренних губ:

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

Расширенные параметры враппинга

Итерации повторной выборки:

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

Внешние итерации:

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

Внутренние итерации:

количество итераций локального решения для каждой внешней итерации. Большее значение увеличивает точность решения.

Радиус выборки стабилизации (см):

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

Вес гладкости стабилизации:

вес подгонки стабилизации, соответствующий аналогичной подгонки на соседних участках

Веса регуляризации стабилизации:

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

Вес ограничения блендшейпов:

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

Вес региона неопределённости:

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

Порог доверия к подгонке изображения:

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

Доверительный порог глубины подгонки:

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

Порог нормалей подгонки изображения:

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

Порог нормалей глубины подгонки:

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

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

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

Допуск:

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

Текстуры

Имитация освещения:

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

Динамическая текстура:

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

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

путь к файлу геометрии

Текстура нейтрального эталона:

путь к файлу текстуры

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

список файлов геометрии

Текстуры эталонных блендшейпов:

список путей к файлам геометрии

Цветовое пространство текстуры:
Определить из файла

определяет цветовое пространство по расширению файла. Для файлов jpg, jpeg или png используется цветовое пространство sRGB. Однако если в файле с таким расширением хранится Линейное изображение, явно используйте Цветовое пространство текстуры: Линейное.

Линейное

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

sRGB

предполагает, что файл в пространстве sRGB, затем _ линеаризует его.

Метод оттенков серого:

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

Из красного

оттенки серого рассчитываются на основе красного канала изображения

Из зелёного

оттенки серого рассчитываются на основе зелёного канала изображения

Из синего

оттенки серого рассчитываются на основе синего канала изображения

Светлота

оттенки серого рассчитываются на основе светлоты изображения

Понижение разрешения текстуры:

масштабирование размера входных текстур. Они могут быть большими и занимать много места ОЗУ, а также требовать больше времени для расчета переноса. Для процесса враппинга не нужны слишком качественные текстуры, зачастую достаточно 2048x2048

Радиус выборки (см):

размер участка для Имитации освещения и Динамической текстуры. Чем меньше это значение, тем точнее результат, но дольше расчет.

Выборка

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

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

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

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

Диапазон радиуса внутренней маски (см):

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

Диапазон радиуса внешней маски (см):

размер фрагментов базовой сетки во время Итераций от грубого до мелкого для внешней области в Маске выборки. определяется в сантиметрах. Первое значение указывает значение в начале процесса переноса. Второй в конце

Совет

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

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

Временное дрожание геометрии

Это может произойти по нескольким причинам:

  • слишком низкий Гладкость веса. Имеет смысл увеличить его значение;

  • слишком низкий Радиус выборки. Имеет смысл увеличивать его либо для области внутри маски, либо для области снаружи. В зависимости от ситуации.

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

../../_images/Jitters.gif

Если вы видите дрожание только по краям лица, попробуйте следующее:

  • увеличить Диапазон радиуса внешней маски (см);

  • добавить регион дрожания в Маску неопределенности;

  • увеличить Вес области неопределенности.

Совет

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

Артефакты при использовании динамических текстур или симуляции освещения.

Иногда можно наблюдать артефакты при рендеринге в редакторе ноды, такой пример в сравнении с правильным отображением показан ниже.

../../_images/BadTexture.jpg

Это может быть вызвано следующими вещами, которым стоит уделить внимание:

  • Геометрия не в сантиметровом масштабе

  • Использование нестабилизированных эталонных сеток

  • Слишком маленькое значение Радиуса выборки на вкладке текстур

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

../../_images/BadTexture2.jpg

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

Плохое качество изображения

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

Пример такого шума по сравнению с хорошим изображением показан ниже.

../../_images/Noise.jpg

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

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

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

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

../../_images/BrokenMouth.png

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

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

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

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

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

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

../../_images/HoleMouth.png

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

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

../../_images/HoleMouth2.png

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

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

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

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

../../_images/FitEye.gif

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

Совет

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

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

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

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