4 апреля 2014 4.04.14 53 4149

Unlimited Details — фотореализм в играх с помощью обычных точек.

+24

Пишу я значит дипломную работу на тему «3D реконструкция зданий по фотографиям». И вот на очередном этапе написания сфотографировал я значит здание со всех сторон, конвертировал набор фотографий в набор трехмерных точек, вывел все это счастье на экран и осознал, что, скажем так, домик выглядит вполне себе фотореалистично и трансформировать это облако точек в 3D модель сомнительная затея в плане качества конечного продукта. Стоит конечно уточнить, что смотрится это красиво только издалека, при приближении плотность точек оставляет желать лучшего. Но тем не менее зародилась у меня мысля, что почва эта благодатная, использовать набор точек вместо набора полигонов для отображения объектов на экране в компьютерных играх, что это сильно повысит как качество изображения, ибо прямые углы пропадут, так и место, требуемое для хранения информации объектах, так как каждая точка — это всего лишь 9 цифр(3 для координат, 3 для нормали и 3 для цвета), следовательно информация о моделе хранится в обыкновенном текстовом файле, размер которого варьируется в пределах килобайтов. Есть конечно и проблемы, так как только один мой домик состоял из 90 000 точек, а ведь, как я уже упоминал, плотность точек была далека от идеала, то есть можно себе представить, сколько точек потребуется для отображения полноценной модели здания, не говоря уже о целых уровнях. Естественно, обработка такого количества данных весьма затруднительна для процессора. Но я был уверен, что решение проблемы должно существовать, и я засел за Google. И нашел технологию под названием «Unlimited Details», о которой и пойдет мой рассказ…

Итак, для начала стоит сказать, хотя наверное все это и так знают, что в современных играх модели состоят из полигонов. И все бы ничего, сделать красивую реалистичную васокополигональную модель не проблема для дизайнеров, но чем больше полигонов в кадре, тем труднее «железу» рендерить все это в реальном времени. Конечно, из года в год NVidia и ATI выпускают все новые и новые видеокарты, игровые студии оптимизируют свои движки, все это позволяет запихнуть в кадр больше полигонов, чем до этого, гонка технологий, мы покупаем новые дорогие плюшки, чтобы круг в игре состоял не из 10 прямых линий, а из 20. Игры в итоге выглядят все лучше и лучше, но даже в самой высокотехнологичной игре встречаются и трехполигональные деревья с плоскими текстурами, и плоские поверхности, которые вроде как создают эффект 3D, но на самом деле они остаются в двух измерениях.

Технология «Unlimited Details» призвана раз и на всегда свести гонку за количество полигонов на нет. Потому что, максимальное количество полигонов, которое возможно отобразить с помощью этой разработки — не ограничено, то бишь бесконечно. А, как говорят сами разработчики, нельзя сделать чего-то больше, чем бесконечность. В качестве доказательства своих слов, разработчики представили на суд общественности остров, площадью в 1 квадратный километр, состоящий целиком из трехмерных точек. А точек этих, ни много ни мало, 21 062 352 435 000(я не знаю, как назвать эту цифру). Какой современный игровой движок и на какой конфигурации способен вместить столько полигонов в кадр? Допустим есть такой, сможет ли он сделать то же самое на ноутбуке, внимание, БЕЗ видеокарты? А ведь для рендеринга этого острова использовался софтвейрный режим(еще раз, без использования ресурсов видеокарты)!!!
Желающие могут посмотреть следующее видео, где все внятно объяснено. Для тех же, кто не знаком с английским, я кратко опишу масштаб трагедии.

 

Итак, как же они добились такого эффекта? Во первых, повторюсь еще раз, все 3д объекты состоят из вышеупомянутых мною точек. Чем плотнее вы напихаете точек, тем более красивой и реалистичней получится ваша модель. Однако я так же упоминал, что большое количество таких данных очень сложно обрабатывать системе. Как же они смогли добиться свободного отображения ТАКОГО количества точек, еще и без помощи графического железа? Как оказалось очень просто. На самом деле, из скольких бы точек не состоял наш 3D уровень, рендерить нужно исключительно столько, сколько пикселей на вашем мониторе. Допустим у меня монитор 1680 на 1050 пикселей, то есть каждый кадр я увижу только 1680*1050 = 1 764 000 точек. Остальные просчитывать и рендерить совсем не обязательно. Создатели данной технологии сделали поисковый механизм, который из огромного количества точек ищет только то нужное количество, которое способен отобразить монитор в каждом кадре. Вот и все, что скрыто за данной технологией.

Теперь о том, на что же способна «Unlimited Details». Ответ — на все. Нет, правде, создать и отобразить можно объект с контурами и линиями любой сложности. Есть два способа, как это сделать. Первый — с помощью лазерного сканера создать 3D копию реальной модели, а затем конвертировать ее в облако точек. Второй — с помощью 3D художника создать 3D же модель и тоже конвертировать ее. На самом деле разработчики уверены, что в будущем графика в играх будет делиться на две категории — реальные объекты(камень, дерево, машина, все, что можно просканировать в нашем с вами мире) и нереальные объекты(единорог, орк, дракон, все, чего в нашем мире не существует, и для чего понадобятся услуги 3D дизайнера).

Ну и под конец немного скриншотов, которые демонстрируют уровень реализма созданной с помощью технологии «Unlimited Details» компьютерной графики.

И для начала, чтобы оценить уровень детализации — вот это частички грязи на земле с того самого острова:

Пальма, созданная профессиональными художниками для игры Bulletstorm и Just Cause 2, и пальма, созданная программистами для демонстрации «Unlimited Details»:

И еще несколько камней с травой:

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

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


Лучшие комментарии

Технология не новая, первая демонстрация была в 2010, но поделиться хочется, вдруг кто не знает, так как на мой взгляд, все это выглядит невероятно.
Ну вообще это все, конечно, красиво, реалистично и все в этом духе, но суть проблемы заключается в том, что окей, от видеокарты уже не надо так много ресурсов. Но зато теперь процессору весь этот хреналион точек надо как-то обрабатывать. Причем не абы как — игра ведь не статичная фиговина. То есть эти точки надо объединять в группы, прописывать, как каждая из них двигается и все в этом духе. А иначе в распоряжении игрока будет тупо статичная демо-сцена, по которой можно полетать и в которой ничего не сможет измениться.
Тесселяция делает из одного большого полигона кучу маленьких. То есть остаются полигоны. Здесь же полигонов нет как таковых, только точки, которые не скалируются и не исчезают динамически.
Насколько я вижу, речь пока идёт исключительно о статичных объектах. Как заставить что-либо, с использованием этой технологии, передвигаться и сколько он тогда будет жрать ресурсов — непонятно.
И все таки это именно точки, а не воксели
Просто, была надежда, что что-то таки придумали, для упрощения процесса. Иначе, такое просто бесперспективно.
Что именно бесперспективно? Фотореалистичная картинка на софтвейрном режиме?
Эта технология для игрушек в частности.
Ее никто развивать не будет, так что скорее всего это, как ни прискорбно, так
В кино и так уже можно сделать все что угодно, не обращая внимание ни на что, там все перерендеренное
Развивается, это правда, но по уровню картинки даже близко не подошла к точечной технологии. А мы, тем не менее покупаем новые видеокарты, чтобы видеть картинку, которая по сути нифига не реалистична
Вот тут говорят, что игра не статична и так далее. Но почему бы не сделать гибрид точек и полигонов? Если не получится написать алгоритмы передвижения точек, то почему бы не заменить часть этого на полигоны? Но не нужно забывать еще и про созерцательные жанры. В Dear Esther, например, нужно было не стрелять и кидать гранаты, а почитывать записки и смотреть. Анимации мало, разве что колебания травы, волны на воде и т.д. А в классических резидентах вообще задники статичные были, почему бы не сделать что-нибудь подобное, опять же с использованием полигонов, где нужно. Созерцательные игры от первого лица про космос, например. Колыхающийся травы нет, воды нет, только кометы и астероиды летают, но очень медленно, допустим. Раньше ведь исхитрялись оптимизировать графику, так почему бы не исхитриться и сделать что-нибудь играбельное и оптимизированное?
В конце концов, никто не мешает пустить хоть миллиард полигонов на одну травинку. Другой вопрос, что трудозатраты на создание выше, да и к железу требования всё равно будут серьёзнее.

Сам же и говоришь, что требования к железу мешают
Дело в том, что для того, что бы создать модель с помощью данной технологии, ее сначала нужно создать в обычном 3D редакторе, а потом уже конвертировать в точечную модель.
Ну да. Но, скажем, для отображения аналогичного статичного острова, навряд ли понадобится что-то сверх-крутое, недоступное нынче рядовому пользователю.
Для отображения ТАКОГО же острова понадобится ТАКОЕ же количество полигонов! Т.е. 21 062 352 435 000. Среднестатистический, да и даже топовый комп такое не потянет, без подзагрузки, без потери качества удаленных моделей, тем более без видеокарты
И если учесть, что разработчики пошли совершенно в другом направлении, то вряд ли ее будут использовать и развивать для игр. А пошли они туда, так как там был спрос, вот они и сделали софтину для отображения огромных пецзажей, там их поддерживают, туда они и разрабатывают.
Это не игровой движок, это только технология. Так что нет. Но есть програма Geoverse, которуб они разработали на базе этой технологии. Она позволяет за считанные секунды открывать и обрабатывать огромные территории сканированые лазером
Спору нет, все так, и над этим надо работать. Однако, в современных играх достаточно много статичных объектов, и просто заменив их все на объекты из точек, во первых значительно улучшится качество картинки, и во вторых освободятся ресурсы видеокарты для того, чтобы анимированые объекты сделать более качественно. Кроме того, как я уже сказал, работать над этой проблемой никто не запрещает
Нет, полигоны — это набор Мешей(Mesh), другая технология
Читай также