Добавление декоративных эффектов дополненной реальности к праздничному дереву с помощью Fritz AI и Lens Studio

Здесь, в Fritz AI, мы делились и демонстрировали наш ассортимент предварительно обученных шаблонов SnapML в течение последних нескольких месяцев или около того. И хотя мы очень довольны нашими первыми двумя раундами готовых проектов, мы не так много экспериментировали с Lens Studio.

Когда дело доходит до машинного обучения, у многих создателей, похоже, остается нерешенный фундаментальный вопрос: Что на самом деле я могу делать с машинным обучением в Lens Studio?

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

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

Частицы снега не зависят от ML и были взяты непосредственно из частиц мира, доступных в библиотеке шаблонов Lens Studio:



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

Если вы хотите продолжить, вы можете присоединиться, зарегистрировав учетную запись Fritz AI (бесплатно и в стадии бета-тестирования на момент написания), создав проект Snap Pre-обученный Fritz AI и загрузив предварительно обученный Christmas Сегментация древовидного изображения в шаблоне Lens Studio.

Использование настраиваемых нейронных сетей непосредственно внутри Lens Studio открывает новые миры погружения и интерактивности. Но часть ML все еще сложна. Узнайте, как мы даем авторам более простой способ создавать и интегрировать модели машинного обучения в их объективы.

Шаг первый: подготовка шаблона

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

Итак, обо всем по порядку, давайте отключим ползунок цвета, что мы можем сделать, сняв отметку со сценария UI Color Picker под объектом Slider Orthographic Camera на панели "Объекты" (вверху слева).

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

Шаг второй: выбор анимированного объекта

Для простоты я добавлю к своему дереву только один декоративный элемент - этот анимированный GIF-файл с блестками:

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

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

Перетащите этот актив на панель ресурсов в Lens Studio.

Шаг третий: создание нового узла параметров 2D-текстуры

Теперь, когда у нас есть готовый декоративный эффект AR, нам нужно придумать способ прикрепить его к маске сегментации дерева (выход ML Component).

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

Мы делаем это, выбирая материал Fritz Segmentation Texture, открывая редактор графика материалов и создавая новый узел параметров текстуры. Я решил изменить имя этого нового параметра на Mask для простоты, но вы можете использовать любые соглашения об именах, какие захотите.

Затем нам нужно подключить это (в конечном итоге) к нашему шейдеру.

Шаг четвертый: подключение узла параметров 2D-текстуры

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

Если вы посмотрите на текущее состояние графика, то заметите, что уже есть двухмерный параметр Mask Color, подключенный к Mixer, который, в свою очередь, связывает все до Shader.

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

Поскольку все, что я хочу сделать, это добавить свой анимированный gif в качестве слоя поверх дерева, я могу полностью удалить параметр Mask Color и просто подключить новый параметр к Mixer.

Если вы хотите добавить в свое дерево более одного эффекта, вам необходимо (как минимум) добавить узел Multiply, подключить к нему каждый уникальный параметр, а затем подключить этот узел Multiply к Mixer.

Итоговый график материалов для Fritz Segmentation Texture должен выглядеть так:

Шаг пятый: добавление gif к параметру 2D текстуры

В Инспекторе материалов теперь у вас есть новый параметр Graph с именем Mask. Установите этот параметр на актив, который мы импортировали ранее (в моем случае это gif).

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

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

А вот как выглядит эффект на неподвижном изображении неукрашенного дерева (источник изображения):

Следующие шаги?

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

Теперь, когда вы впервые познакомились с созданием над сегментированным компонентом машинного обучения, я бы посоветовал вам приступить к делу и посмотреть, что вы можете сделать. Я на 100% уверен, что ты получишь что-нибудь получше, чем мое блестящее дерево.

Поделитесь своими идеями, написав нам в Твиттере @fritzlabs - мы будем рады видеть, что вы создадите!

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

Независимая редакция, Heartbeat спонсируется и публикуется Fritz AI, платформой машинного обучения, которая помогает разработчикам учить устройства видеть, слышать, ощущать и думать. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, переходите к нашему призыву участников. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Fritz AI Newsletter), присоединяйтесь к нам на » «Slack и подписывайтесь на Fritz AI в Twitter , чтобы узнавать обо всех последних новостях в области мобильного машинного обучения.