Мы пообщались с потрясающими разработчиками Atomontage, пытаясь разобраться, смогут ли воксели вернуться и победить пиксели.
Воксельная разработка
Бранислав: в 2000-2002 годах я участвовал в соревнованиях европейской демосцены. Я написал несколько 256-байтных демо (также называемых intro) под ником Silique/Bizzare Devs (см. «Njufnjuf», «Oxlpka», «I like ya, Tweety» и «Comatose»). Каждое из интро генерировало в реальном времени воксели или графику из облака точек. И воксели, и облака точек являются примерами сэмплированной геометрии.
Интро выполняли свою задачу всего в 100 инструкциях процессора, таких как ADD, MUL, STOSB, PUSH и им подобных. Однако из-за самой природы такого типа программ на самом деле десятки инструкций использовались просто для правильной настройки, а не для генерации самой графики. Тем не менее этих 50 с лишним инструкций, которые по сути являлись элементарными математическими операциями или операциями с памятью, оказалось достаточно для генерации довольно красивой подвижной 3D-графики в реальном времени. Все эти 256-байтные интро выигрывали с первого по третье места. Это заставило меня осознать, что если такую 3D-графику возможно создавать без полигонов, то в играх и других приложениях можно достичь гораздо большего с помощью того же принципа: использования сэмплированной геометрии вместо полигональных мешей. Решение заключается в простоте. Я понял, что доминировавшая тогда парадигма, основанная на сложных и фундаментально ограниченном (необъёмном) представлении данных, уже готова была упереться в потолок возможностей. То есть настало подходящее время испробовать эту «новую», более простую парадигму: объёмную сэмплируемую геометрию.
Дэн: ещё учась в старшей школе в Швеции, я начал программировать 2D-движок с сайдскроллингом, на котором я в результате создал инди-игру под названием «Cortex Command». Она была похожа на «Worms» или «Liero», но с геймплей был больше в реальном времени и с элементами RTS. Также в игре использовалась более подробная симуляция различных материалов каждого пикселя рельефа. В виде сбоку, похожем на «муравьиную ферму», персонажи игрока могли копать золото в мягкой земле и строить защитные бункеры с твёрдыми бетонными и металлическими стенами. В 2009 году Cortex Command выиграла награду за техническое превосходство и приз зрительских симпатий на Independent Games Festival. Ещё с того времени я мечтал создать полностью трёхмерную версию игры, а это было возможно только с помощью волюметрической симуляции и графики.
Примерно шесть лет назад я искал готовые воксельные решения и нашёл работы Бранислава на его веб-сайте и в видео, в котором он рассказывал о неизбежном переходе от полигональной 3D-графики к чему-то, напоминавшему сделанное мной в 2D: к симуляции всего виртуального мира как небольших блоков-атомов со свойствами материалов. Мне не только показалось правильным его заявление — его технологии, судя по простым, но впечатляющим видео, оказались лучшими и самыми убедительными из существовавших. Я начал спонсировать его проект через его веб-сайт и общаться с ним, что привело к началу многолетней дружбы, а теперь и совместному финансированию нашей компании. Восхитительно чувствовать себя частью этого поворотного периода в таком эпичном проекте, в котором результаты долгих лет исследований и разработок наконец-то можно будет передать людям и произвести революцию в создании и потреблении 3D-контента!
Растущий интерес
Мы считаем, что многие крупные игроки осознали: полигональные технологии упёрлись в потолок сложности больше десятилетия назад. Эта проблема проявляет себя множеством способов: в сложных тулчейнах, в хитрых хаках, позволяющих реализовать взаимодействия и симуляцию разрушений, в сложном представлении геометрии (модель полигональной поверхности + модели коллизии + другие модели для представления внутренней структуры, при её наличии), в переусложнённых подходах к волюметрическому видео, хаках и огромных кодовых базах, и т.д. Из-за этих проблем прогресс почти полностью зависит от мощности видеопроцессоров, а некоторые аспекты вообще недостижимы. Это битва, в которой нельзя выиграть. Это свойственно природе больших компаний: часто они даже не пытаются потратить много времени и ресурсов на развитие рискованных и меняющих условия игры решений; вместо этого их стратегия заключается в покупке маленьких компаний, которым это удалось.
Технология
Существует набор техник, которые люди обычно считают основанными на вокселях. Самые старые из них использовался в играх, основанных на картах высот, где рендерер интерпретировал 2D-карту значений высот для вычисления границ между воздухом и землёй сцены. Это не совсем воксельный подход, потому что здесь не используется волюметрический набор данных (примеры: Delta Force 1, Comanche, Outcast и другие).
В некоторых движках и играх используются большие блоки с собственной внутренней структурой, составляющие виртуальный мир (пример: Minecraft). Эти блоки обычно рендерятся с помощью полигонов, то есть наименьшими их элементами являются треугольники и текселы, а не воксели. Такая геометрия просто упорядочена в сетку из более крупных блоков, но это, строго говоря, не делает их вокселями.
В некоторых играх используются относительно большие воксели, или элементы SDF (signed distance fields, полей со знаковым расстоянием), которые всё равно не обеспечивают реализм, но уже позволят создавать интересный геймплей (примеры: Voxelstein, Voxelnauts, Staxel). Существуют также проекты на основе SDF, обеспечивающие замечательные взаимодействия и симуляцию и имеющие потенциал создания высокой реалистичности (пример: Claybook). Однако пока мы не видели попыток разработки решения для симуляции и рендеринга реалистичных больших сцен, аналогичных тем, на которые способна наша технология.
В Atomontage воксели используются как базовые строительные блоки сцен. Отдельные воксели в нашей технологии практически не имеют структуры. Такой подход обеспечивает простоту, сильно помогающую в симуляциях, взаимодействиях, генерации контента, а также в сжатии данных, рендеринге, кодировании объёмного видео и т.д.
Преимущества
Наше решение на основе вокселей устраняет множество сложностей, с которыми сталкиваются люди, работающие с технологиями на основе полигонов, в том числе саму концепцию ограничения на количество полигонов и множество хаков, используемых для обхода этого ограничения. Наша технология объёмна по самой своей природе и поэтому не требует никого дополнительного представления для моделирования внутри объектов.
В таком подходе существует мощная и неотъемлемая система LOD (level of detail, уровня детализации), позволяющая технологии балансировать производительность и качество в традиционно сложных ситуациях. Одни из множества преимуществ — гранулярный контроль над LOD, foveated rendering и обработка, не требующие почти никаких излишних затрат.
Воксельная геометрия избавляет от бремени сложной структуры: она основана на сэмплировании, а поэтому с ней легко работать (простая и универсальная модель данных для любой геометрии, в отличие от сложной модели данных ресурсов на основе полигонов). Это позволяет быстрее выполнять итерации при разработке мощных методов сжатия, инструментов взаимодействия, генераторов контента, симуляторов физики и т.д. Этого не происходит в полигональных технологиях, потому что они уже не меньше десятка лет бьются о потолок сложности, а их прогресс сильно зависит от экспоненциального роста мощи видеопроцессоров.
Воксельный подход эффективен, поскольку он не тратит ресурсов или пропускной способности на плохосжимаемые компонентов векторов или векторных представлений данных (полигонов, облаков точек, частиц), то есть значений, имеющих почти случайное расположение. В случае вокселей в основном можно кодировать полезную информацию (цвет, информацию о материале и т.д.), а не излишние данные, просто располагая эту информацию в нужном месте пространства. Можно сравнить это с JPEG и каким-нибудь двухмерным векторным форматом, кодирующими большое и сложное изображение. Кодирование JPEG предсказуемо и может хорошо настраиваться под оптимальное качество и малый объём, а векторное изображение потратит бОльшую часть пространства на векторную информацию вместо самих сэмплов цвета.
Наш подход позволит обычным людям дать волю своему творческому таланту без необходимости изучать и понимать внутреннюю технологию и её ограничения. Навыков, которые мы получили, взрослея в реальном мире, будет достаточно для взаимодействий с виртуальными средами полезным и реалистичным образом.
Благодаря системе LOD, являющейся неотъемлемой частью технологии, и простой пространственной структуре воксельных ресурсов легко получить крупномасштабное объёмное видео высокого разрешения. Наш рендеринг на основе вокселей не снижает качество геометрии из-за упрощения меша, а достигаемая на стандартном современном оборудовании производительность несравнима ни с чем.
Сейчас мы находимся на этапе, когда можем вокселизировать не только одну большую высокополигональную модель, но и целую серию таких ресурсов со сборкой из них объёмного видео. Также мы можем делать это с целыми средами: представьте сцену кинематографического качества с персонажами, которую можно использовать в научно-фантастическом или анимационном фильме. Мы можем превратить среду в VR-фильм, в котором пользователь может находиться в одном пространстве с персонажами, свободно перемещая точку обзора (а не просто оглядываясь, как в виртуальном видео) в сцене размером с комнату или даже больше. Пользователь может воспринимать процесс, как это привычно для VR-игр, за исключением интерактивности. Сейчас мы ищем партнёров, которые помогли бы нам сделать первый пробный короткометражный фильм с качественными графическими данными.
Риггинг
Наша технология уже позволяет использовать различные преобразования, влияющие на любой воксель модели, создавая убедительные эффекты деформации мягких тел. Хотя у нас пока нет демо анимации персонажа с полным скиннингом и другими функциями, наша технология безусловно способна на это, если привязать её к любой традиционной системой риггинга. Это уже видно в наших видео с мягкими телами: шины на колёсах автомобиля сжимаются в ответ на симулируемые силы, и такая деформация похожа на то, что происходит в анимации персонажей при влиянии привязанных костей. На ранних этапах сам риггинг может даже выполняться в некоторых из уже имеющихся инструментов ещё до вокселизации, а со временем мы реализуем его и в собственных инструментах.
Текстурирование
Готовые текстурные ресурсы можно вокселизировать различными способами. Наилучшие результаты у нас получаются с двумя из них — с вокселизатором на основе лучей и вокселизатором на основе проецирования. Первый испускает лучи через полигональную модель, распознаёт пересечения между каждым из лучей и мешем, вычисляет относительные позиции на привязанной текстуре, считывает текселы и запекает их в соответствующие воксели, наносимые на модель.
Вокселизатор на основе проецирования рендерит модель с нескольких точек обзора в карты, в том числе и карты глубин. Пересечение объёмов, определяемое картами глубин, предоставляет информацию о вокселях, которые необходимо создать. Другие сгенерированные карты предоставляют остальную часть информации о поверхности (цвет, нормали и т.д.), которая также запекается в воксели поверхности.
Также существуют другие способы создания правильно окрашенных поверхностей — вокселизацией данных облака точек или процедурной генерацией контента/свойств поверхности готовых моделей.
Крупномасштабные ландшафты
Это две отдельные проблемы. Генерация контента с помощью вокселей проста, потому что достаточно всего лишь внести большое множество сэмплов с некими полезными свойствами (цвет, информация о материале и т.д.) в равномерную сетку с заданным пространственным разрешением, или с несколькими разрешениями в случае данных с переменным LOD. Это легко реализуется с помощью вокселей, потому что мы не сталкивается с ограничениями на количество полигонов. Кроме того, текстур тоже нет, поэтому у нас нет проблемы разрешения текстур.
Рендеринг больших сцен тоже выполняется довольно просто благодаря мощной системе LOD. Рендерер может использовать наиболее оптимальную комбинацию LOD небольших сегментов геометрии для рендеринга всей сцены с наибольшей возможной детализацией, сохраняя прим этом высокий FPS. LOD вокселей очень малозатратны и хорошо подходят для сохранения размеров вокселей (а потому и ошибок формы) меньших, чем размер пикселя на экране.
Работа со сканами
Наши вокселизаторы уже достаточно мощны, чтобы вокселизировать очень высокополигональные меши и облака точек с помощью упомянутых выше способов. Мы продемонстрировали первые результаты с данными фотограмметрии ещё в начале 2013 года, вокселизировав меш из 150 миллионов полигонов, который мы рендерили и изменяли в реальном времени на среднем игровом ноутбуке 2008 года. После вокселизации количество полигонов исходной геометрии становится неважным, а изменение модели оказывается простой задачей. Это можно заметить в наших видео; производительность больше зависит от количества пикселей, чем количества полигонов исходных данных. Всё это необходимо, чтобы обеспечить пользователям комфортный рабочий процесс при подчистке огромных отсканированных моделей. Кроме того, воксели в каком-то смысле схожи с пикселями, поэтому мы предвидим применение узкоспециализированного ИИ (с глубоким обучением) для автоматической подчистки данных фотограмметрии.
Будущее VR и стриминга
Представление пространства в виде вокселей является необходимым требованием для создания огромных сетевых интерактивных виртуальных сред, которые в какой-то момент начнут напоминать реальный мир. Ключевым моментом является то, что такие среды не статичны и позволяют пользователям взаимодействовать с ними привычным в реальном мире образом. То есть такие виртуальные среды должны быть полностью симулируемыми и с убедительной физикой. Симуляция и рендеринг сложного, полностью динамического мира требует, чтобы такие миры были волюметрическими, а вся обработка, синхронизация и рендеринг симулируемой геометрии обязаны быть эффективными. Волюметрическая природа такого процесса исключает применение полигонов. Кроме того, как сказано выше, другие векторные формы представления недостаточно эффективны в создании высокого качества при малых затратах.
Мы ожидаем, что такие огромные симулируемые среды будут состоять в основном из вокселей, и только небольшая часть будет симулироваться с помощью частиц для создания некоторых эффектов. Замечательно, что оба этих представления просты и сэмплируемы, и что преобразование из одного в другое будет тривиальными и малозатратным с точки зрения вычислений.
Таковы огромные преимущества вокселей перед другими способами представления, что делает их идеальным решением для описания таких гигантских виртуальных сред. Система LOD замечательно подходит для оптимизации обработки и рендеринга на лету в зависимости от любых сочетаний параметров (расстояния до пользователя, важности симулируемого процесса, соотношения точности/затрат и т.д.). Также благодаря этому они идеально подходят для foveated rendering и очень эффективной потоковой передачи. Также их можно задавать с большей размерностью, что необходимо для выполнения крупномасштабной распределённой физической симуляции. Такие симуляции невозможно выполнять всего в трёх измерениях из-за задержек сети и невозможности обработки большой модели на одном PC и одноразовой передачи большой части геометрии. Сегментированная, изменяемая система LOD воксельной геометрии здесь очень поможет. При изменении небольшой части или нескольких частей большой воксельном модели нет необходимости пересчитыватьь его большой меш и текстуры, а также синхронизировать всю модель по сети — важны только задействованные части, которые можно синхронизировать с наиболее подходящим для передачи по сети LOD.
Все эти требования к огромным виртуальным средам будущего приводят к необходимости и неизбежности сдвига парадигмы в сторону волюметрической сэмплируемой геометрии. Свойства нашей воксельной технологии делают её наилучшим и единственным кандидатом на выполнение сдвига парадигмы в ближайшем будущем.
Команда разработчиков Atomontage. Интервью проведено Кириллом Токаревым.
Автор: PatientZero