OpticalFlowWrapping
Нежестко подгоняет текстурированную сетку к текстурированному скану, анализируя сходство между их текстурами.
Общий случай использования
Распространенный вариант использования — подогнать базовую сетку к набору сканов выражений лица одного и того же актера. Этот процесс обычно можно разделить на два этапа:
подгонка общей базовой сетки к нейтральному выражению, что можно сделать с помощью ноды Wrapping. Текстура от сканирования затем проецируется на базовую сетку;
подгонка полученной нейтральной сетки к каждому выражению лица с помощью ноды OpticalFlowWrapping.
Виртуальные камеры
Нода использует набор виртуальных камер, которые смотрят на модель с разных углов. Для каждой камеры, рендерится два изображения: одно для основной сетки, другое для скана. Оптический поток просчитывается для каждой пары изображений, давая на выходе набор решений о том, куда двигать каждый пиксель. Решения со всех камер затем объединяются в глобальное решение.
Отличия Wrapping и OpticalFlowWrapping
Несмотря на то, что ноды Wrapping и OpticalFlowWrapping имеют схожие входные данные и параметры, между ними существует большая разница. В то время как узел Wrapping ищет только геометрическое сходство между моделями, нода OpticalFlowWrapping также ищет сходство текстур. Например, нам нужно учитывать сходство текстур при обертывании набора выражений лица одного и того же актера. Для каждой вершины нейтральной сетки мы должны найти соответствующую позицию в целевом выражении. Если данная вершина соответствует некоторой конкретной поре кожи на нейтральной текстуре, мы должны найти точно такую же пору кожи на целевой текстуре. Подход оптического потока автоматически находит сотни таких соответствий, обеспечивая точность выравнивания почти на уровне пикселей.
Примечание
Важно, чтобы обе входные сетки имели одинаковые текстуры. Для этого текстуры должны быть сняты при одинаковых условиях освещения с минимальными бликами.
Кожа может кардинально изменить свой внешний вид, особенно в экстремальных выражениях. Морщины и эффекты кровотока затрудняют поиск правильного решения для оптического потока. В таких случаях рекомендуется использовать контрольные точки и технику ретаргетинга.
Итерации
Расчет выполняется в несколько итераций. Существуют пары параметров узла, оканчивающиеся на «начальное» и «конечное» слово. Значения таких параметров изменяются на каждой итерации, начиная с «начального» значения до «конечного» значения. Например, параметр начальное разрешение равен разрешению рендеринга камеры на первой итерации. Затем разрешение камеры увеличивается до тех пор, пока на последней итерации оно не достигнет конечного разрешения.
Projection Mask
Оптический поток часто вызывает появление артефактов на границах сетки, особенно на шее. Это приводит к плохой подгонке и искажениям сетки на границах исходной геометрии.
Опция маски проекции помогает предотвратить артефакты оптического потока на границах. Этот метод работает только в том случае, если исходная геометрия очень похожа на целевую, т. е. когда исходная геометрия была предварительно перенесена в целевую.
Маска вычисляется путем проецирования исходной геометрии на цель. Затем она окрашивает все пиксели целевой текстуры в черный цвет, если пиксели расположены за пределами области проекции. В качестве последнего шага к целевой текстуре также добавляются отступы, чтобы предотвратить артефакты рендеринга на UV-швах. Это небольшое изменение значительно улучшает качество на границах для OpticalFlowWrapping.
Редактор
Редактор можно использовать для настройки положения камеры, добавления или удаления существующих камер. Один щелчок по камере или выбор имени камеры из списка камер переключит редактор в Режим Камеры. В Режиме Камеры точка обзора переключается на выбранную точку обзора камеры. Вы можете панорамировать, масштабировать и вращать окно просмотра, чтобы отрегулировать положение камеры. Используйте кнопку Выход из режима камеры, чтобы вернуться в стандартный режим.
Нажмите CTRL + ЛКМ на камере, чтобы удалить ее.
Используйте гизмо преобразования для управления положением и ориентацией всей системы камер.
Панель камер
Список камер |
используется, чтобы выбрать камеру по имени |
Создать камеру |
создает камеру, используя текущее положение обзора |
Удалить камеру |
удаляет текущую камеру |
Выйти из режима камеры |
выходит из режима камеры |
Примечание
Подгонка работает только в тех областях сетки, которые видны хотя бы одной камерой. Остальная часть сетки деформируется максимально жестко. Увеличьте масштаб и добавьте новые камеры в интересующих вас областях, где вы хотите, чтобы подгонка была более точной.
Входы
- исходная геометрия
Геометрия
Базовая сетка, которую нужно деформировать. Сетка должна иметь текстуру.- целевая геометрия
Геометрия
Целевой скан с текстурой. Предполагается, что текстуры одинаковы и должны быть сняты при одинаковых условиях освещения- соответствия точек
PointCorrespondences
(необязательно) Набор точечных соответствий между исходной и целевой геометрией- свободные полигоны
PolygonSelection
(необязательно) Набор полигонов, которые будут исключены из процесса подгонки, т. е. они не будут пытаться соответствовать целевой геометрии, но будут деформированы максимально жестко, чтобы соответствовать остальным полигонам.- Маска фиксированных вершин
VertexMask
(необязательно) Маска вершин, определяющая, какие вершины Исходной геометрии не должны перемещаться в процессе подгонки.
Выход
Геометрия
Подогнанная сетка
Параметры
- Автовычисление:
если установлено, узел будет пересчитываться каждый раз при изменении параметра или входных данных.
- Вычислить:
если автопросчёт отключен, процесс враппинга начинается в окне предварительного просмотра
Вкладка параметров камеры
- Глобальное перемещение:
Перемещение системы камер. Оно так же может управляться, используя гизмо трансформации во вкладе Визуальный редактор
- Глобальный поворот:
поворот системы камер. Он также может управляться с помощью гизмо трансформации во вкладке Визуальный редактор
- Исходное разрешение:
разрешение камер во время первой итерации. Оно управляет размером отрендеренных изображений, которые затем используются для просчёта оптического потока.
- Конечное разрешение:
разрешение камер во время последней итерации. Увеличение этого разрешения приводит к лучшему качеству подгонки, но в то же время сильно увеличивает время просчёта и потребление оперативной памяти. Мы рекомендуем использовать значения не выше 900x900. Увеличивая разрешение, также рекомендуется увеличивать параметр конечная гладкость.
- Угол обзора:
угол обзора виртуальных камер
- Размер иконки:
размер иконки камер во вьюпорте
- Диапазон обрезки:
диапазон обрезки камеры
Вкладка генератора камер
Виртуальные камеры генерируются на поверхность сферического сектора, определенного следующими параметрами:
- Угол:
угол сферического сектора
- Кольца:
количество колец камер внутри сектора
- Камер на сектор:
количество камер внутри кольца
- Радиус:
радиус сферы
- Очистить существующие камеры:
если установлено, все существующие камеры будут удалены после щелчка на кнопку Сгенерировать камеры
- Сгенерировать камеры:
Генерирует камеры, используя параметры выше
Вкладка «Параметры враппинга»
- Итерации:
количество итераций алгоритма
- Начальная гладкость:
жёсткость сетки во время первой итерации
- Конечная гладкость:
жёсткость сетки во время последней итерации. Увеличение данного параметра усложнит деформацию сетки во время враппинга, тем самым давая более гладкий результат. В то же время, это ухудшит качество подгонки, так как мелкие детали скана будут иметь меньшее влияние на конечный результат.
- Начальная подгонка:
управляет силой подгонки базовой сетки к скану во время первой итерации
- Конечная подгонка:
управялет силой подгонки к скану во время последней итерации. Сила подгонки уравновешивена силой гладкости.
- Начальная гладкость оптического потока:
управляет гладкостью алгоритма оптического потока во время первой итерации
- Конечная гладкость оптического потока:
управляет гладкостью алгоритма оптического потока во время последней итерации. Увеличение этого значения приведёт к более надёжной, но менее точной подгонке. Рекомендуется увеличить данный параметр для экстремальных выражений лица, когда оптический поток может выдать неверные результаты из-за сильных изменений на коже.
- Вес вертексной маски:
масштаб для указанной вертексной маски
- Сэмплинг оптического потока:
значение 10 означает, что будет использоваться каждое 10-е соответствие пикселя, найденное алгоритмом оптического потока. Значение 1 означает, что будет использоваться каждый пиксель. Уменьшение этого значения приводит к повышению точности, но значительно увеличивает скорость вычислений и потребление памяти.
- Порог угла:
отбрасывает соответствие пикселей, если угол между соответствующими нормалями поверхности больше определенного значения
- Порог расстояния:
отбрасывает соответствие пикселей, если расстояние между соответствующими точками поверхности больше определенного значения. Имейте в виду, что этот параметр указывается в сантиметрах и, следовательно, зависит от масштаба. Если вы используете масштаб, отличный от сантиметров, измените этот параметр соответствующим образом.
Вкладка «Проекционная маска»
- Использовать Проекционную маску:
если установлено, используется проекционная маска
- Дистанция проекционной маски:
определяет максимальную длину проекции
- Отступы:
определяет отступ для целевой текстуры в пикселях. Отступ помогает избежать артефактов рендеринга на UV-швах.
Примечание
Параметр Порог расстояния указывается в сантиметрах и отбрасывает все соответствия, длина которых превышает определенное значение. Значение по умолчанию 1,8 см оптимизировано для моделей сантиметрового масштаба и должно быть изменено при работе с моделями разных масштабов.
Совет
Наиболее распространенные параметры для подстройки:
- конечное разрешение:
повышает качество, но значительно увеличивает время вычислений и потребление памяти. Рекомендуется оставить это значение ниже 900x900. Для больших значений рекомендуется увеличить конечная гладкость.
- конечная гладкость оптического потока:
может быть увеличено для экстремальных выражений лица, когда из-за резких изменений внешнего вида кожи оптический поток не может найти хорошее соответствие. Не влияет на время просчёта. Увеличьте его, если финальная сетка имеет артефакты искажения
- окончательная гладкость:
может быть увеличено при использовании больших значений конечного разрешения. Увеличьте его, если финальная сетка имеет артефакты искажения