Пишу я значит дипломную работу на тему «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»:
И еще несколько камней с травой:
Я думаю коментарии излишни. Обязательно посмотрите оставленное мною выше видео, чтобы оценить красоту созданных с помощью простых точек моделей.
А я надеюсь, что разработчики игр когда-нибудь вооружаться данной технологией, и мы не будем регулярно обновлять видеокарты, чтобы насладиться новой красивой игрой.
Лучшие комментарии
Сам же и говоришь, что требования к железу мешают