Мы в Zibra.AI хотели создать продукты, способные ускорить производство видеоигр. У ML-команды была идея задействовать подход, объединяющий искусственный интеллект и 3D.
Проведя ряд исследований и экспериментов, за восемь месяцев мы зарелизили свой первый продукт.
Суть технологии
В чем суть технологии? Для представления объектов в 3D часто используется SDF (Signed Distance Field). SDF обеспечивает менее затратную трассировку лучей, позволяет экономить на текстурах низкого разрешения и обеспечивает более быстрый, плавный геймплей. Но не будем забывать, что все современные методы визуализации ограничиваются памятью. А поскольку SDF представляется как 3D-текстура, она потребляет немало памяти.
К примеру, объект SDF с разрешением 512 x 512 x 512 потребляет 0,5 Гб VRAM оперативная память для временного хранения изображения. Именно поэтому мы пошли в поисках дальше, создав технологию, где 3D-объект архивируется с помощью нейронного представления SDF. Благодаря этому объект становится значительно компактнее. Такой подход позволяет сэкономить огромный объем памяти, сохраняя высокое качество. Следовательно, тот же 3D-объект из вышеупомянутого примера будет занимать всего несколько сотен килобайт. Весь процесс происходит за миллисекунды, поскольку собственный метод не требует тренировки новых сетей для репрезентации невидимого объекта.
Эту технологию можно использовать для симуляции физики игр, которые используют SDF для моделирования частиц, что стало идеей для нашего первого продукта.
Другими словами, мы воплотили в жизнь идею создания доступных инструментов на базе основной ML-технологии. Инструменты предназначены для:
- упрощения процесса разработки игры;
- решения проблемы плохого внешнего вида визуальных эффектов (и отсутствия их интерактивности в играх);
- уменьшения вычислительной стоимости.
Это позволит разработчикам игр и VFX-художникам сосредоточиться на креативности, тратя меньше усилий на этапе оптимизации игры.
Среди трудностей, которые приходится преодолевать — моделирование взаимодействия частиц с 3D-объектами сложной формы. Обычно они должны разделить объект сложной формы на несколько простых объектов, а затем настроить имитацию взаимодействия с каждым из них по отдельности. Этот процесс занимает много времени и усилий. В общем, практически все решения, представленные на рынке, не обеспечивают интерактивности или нуждаются в мощных ПК.
Итак, мы решили предоставить возможность полуавтоматизировать процесс разработки игр. Разработчики смогут улучшить графику и физику в игре с более низкими затратами на вычисления на всех устройствах.
Zibra Liquids — первый на рынке плагин моделирования жидкости на основе ML, доступный для коммерческого использования.
Эта ML-технология будет основой многих инструментов, которые сейчас находятся в разработке. Но уже сейчас существует плагин Zibra Liquids, доступный на Unity Asset Store. Это кроссплатформенный плагин физического моделирования жидкости в реальном времени для разработчиков игр.
Zibra Liquids: под капотом
Zibra Liquids можно использовать для моделирования жидкости в реальном времени и создания взаимодействия жидкости с 3D-объектами любой формы, даже сложной.
Плагин работает в режиме реального времени. Он встроен в игровой движок, что означает, что разработчикам больше не нужно использовать дорогостоящее и трудоемкое программное обеспечение, запекать эффекты и решать проблемы их экспорта. Установка Zibra Liquids занимает всего несколько минут. И вот вода уже становится частью нового игрового процесса.
Как это работает? Плагин — это результат синергии запатентованных солверов, которые позволяют осуществлять физически точное моделирование жидкости и нейронных репрезентаций SDF 3D-объектов (на основе ML).
Технология моделирования жидкости была также разработана собственными силами ZibraAI с помощью метода Moving Least Squares Material Point Method. Первоначальный прототип смог симулировать 300 000 частиц за 7 миллисекунд на ноутбуке с GTX 1050 без какой-либо оптимизации. Но мы хотели ускорить реализацию как минимум втрое.
Еще одним вызовом была реализация техники визуализации частиц. Для первого прототипа команда разработала локальный метод трассировки лучей воксельных частиц, отлично подходящий для симуляции, поскольку он также работает с вокселями на сетке моделирования. Эта версия могла отражать жидкость на том же железе со скоростью 30 кадров в секунду, чего было достаточно для запуска бета-теста. Наша компания начала общаться с потенциальными клиентами, создала первые демо и собрала отзывы от сообщества.
После сочетания жидкостного солвера и основной ML-технологии, ZibraAI создала плагин для Unity с интерфейсом и серверным бэкендом, который мог получать сетку от Unity, генерировать SDF и обрабатывать его с помощью технологии ML, упаковывающей данные в серии нейронных вставок на воксель, которые хранятся на сайте клиента. Это сочетание позволяет пользователям легко настроить эффекты и выйти на новый уровень визуального качества.
Команда хотела, чтобы плагин был нативно скомпонован на C++, чтобы контролировать ресурсы, минимизировать нагрузку на процессор и использовать полный спектр методов для оптимизации шейдеров GPU.
Он включал такие распространенные подходы:
- упаковку ресурсов;
- оптимизацию использования регистров;
- оптимизацию шаблонов доступа к памяти;
- использование косвенных вызовов извлечения/отправки для уменьшения участия CPU.
Но этого было недостаточно, и мы двинулись дальше. Все критически важные части перформанса Zibra Liquids были оптимизированы:
- Обновили алгоритм сортировки с помощью специальной реализации Radix Sort, которая в шесть раз быстрее оригинального Bitonic Sort.
- Вместо того, чтобы рисовать четырехугольные сетки с помощью вершинного шейдера для растеризации сфер, была использована атомарная растеризация.
- Последней оптимизацией был переход от частиц к сетке алгоритма MPM, где команда также использует подход сортировки Atomic+Radix. В целом это позволяет получить примерно шестикратное повышение производительности от частиц к сетке.
В целом новый солвер приблизительно в 3,5-4 раза быстрее предыдущей реализации.
Основные особенности Zibra Liquids
Простота использования
Мы разработали интуитивно понятный и простой интерфейс, чтобы пользователям было проще и приятнее. Чтобы настроить жидкость и увидеть желаемые результаты, достаточно сделать несколько кликов внутри игрового движка.
Симуляция в режиме реального времени
Технология моделирует несколько миллионов частиц на высокотехнологичном оборудовании, сотни тысяч частиц на ноутбуках и десятки тысяч частиц на мобильных устройствах в режиме реального времени. Плагин обеспечивает реалистичность физики и визуальное качество эффектов на уровне CG в реальном времени и лучшую в своем классе производительность.
Визуальные и физические пресеты
Технология способна осуществлять переход в режиме реального времени между физическими и визуальными параметрами, такими как жесткость, сила поверхностного натяжения, граничная сила, металличность, непрозрачность, преломление, отображение и многие другие. Нет необходимости в сложной настройке — пользователи получают желаемое решение «из коробки». Команда предоставляет некоторые готовые комбинации настроек этих параметров — пресеты. То есть пользователь может выбрать необходимый для себя или же настроить самостоятельно.
Контроль гравитации
Теперь под контролем пользователей находится все — даже гравитация. Эта функция позволяет реализовывать новые игровые механики, которые раньше невозможно было создать.
Взаимодействие со сложными 3D-объектами
Основная технология ZibraAI позволяет создавать нейронную SDF-репрезентацию для любой геометрии и использовать ее в качестве коллайдера для жидкого компонента в сцене. Можно настроить взаимодействие частиц с 3D-объектами произвольной формы в несколько кликов.
Силовое взаимодействие
Эта функция позволяет использовать жидкости в качестве игровой механики. Это влияет на внешний вид игры, а также важно для создания реалистических симуляций жидкостей, которые могут передавать силу на объекты в сцене, понимая их вес.
Какие преимущества могут получить разработчики игр от Zibra Liquids
- Работа с водой стала еще проще. Теперь вода может быть интерактивной, нет необходимости прибегать к запеканию.
- Комбинация Gravity Сontrol и Force Interaction позволяет легко настроить перемещение 3D-объектов в сцене с помощью жидкостей.
- Плагин предназначен для использования на любой платформе, включая ПК, игровые консоли (в ближайших релизах) и мобильные устройства.
- Бесплатная версия плагина доступна всем, кто хочет заниматься разработкой игр, имея ограниченный бюджет.
- Теперь создатели могут предполагать производительность игры. Это решающий фактор, поскольку многим VFX-художникам приходится бороться с тем, что их идеи значительно упрощаются, поскольку они не помещаются в вычислительный бюджет. Воду, созданную с помощью нашего плагина, можно перенастроить для повышения производительности, не исключая ее из игры.
- Внешний вид любой игры улучшается благодаря реалистичности симуляции взаимодействия жидкости с 3D-объектами.
- Вычисления перенесены на GPU. Технология может моделировать несколько миллионов частиц на высокотехнологичном оборудовании, сотни тысяч частиц на ноутбуках и десятки тысяч частиц на мобильных устройствах в режиме реального времени. До ZibraAI все эти вычисления базировались на ЦП.
- Процесс разработки игры теперь более доступный и более дешевый. Игры можно разрабатывать и тестировать на любом оборудовании, а пользователи могут играть даже на смартфонах.
Вам не нужно разбираться в машинном обучении, чтобы использовать плагин, но вы должны быть знакомы с интерфейсом игрового движка Unity.
Какие платформы будут следующими?
Плагин Zibra Liquids уже доступен на Unity Asset Store. Скоро будет добавлена поддержка Unreal Engine и Android (iOS будет доступна в ближайшее время, команда проводит тестирование).
Производительность плагина будет улучшена вдвое. Надеемся, что Zibra Liquids станет решением, не зависящим от платформ, доступным для любого игрового движка. Stay tuned!
Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: