Ручная работа, или путь к реалистичным картам
Мы делаем карты более реалистичными, чтобы жителям городов было проще ориентироваться на местности. Для этого мы перерабатываем внешний вид всей окружающей среды: домов и инфраструктуры вокруг, дорог, растительности и всех сопутствующих объектов вроде остановок, боллардов или пожарных гидрантов. И конечно же, делаем красивый 3D-рельеф.
В одном из прошлых постов мы подробно рассказали, что в каждое время реалистичность и иммерсивность карт и определялась возможностями технологий. Сегодня расскажем, как на современных технологиях мы сделали наши карты ещё красивее и реалистичнее.
Первые модели зданий
Первую объёмную модель с детальными элементами мы создали для Театра оперы и балета в 2011 году.
На 2gis.ru мы тогда использовали растровый движок — карта с сервера передавалась отдельными фрагментами и уже в браузере склеивалась в единую картинку. Карту нельзя было покрутить, поэтому 3D-модели зданий можно было увидеть только с одного ракурса. А при их создании учитывалось, не перекроет ли оно другие объекты.
Позже, когда в 2012 году мы перешли на векторный движок, смогли настроить акценты карты на разных масштабов, а трёхмерные объекты сделать полупрозрачными и с тенями.
Всего наши моделлеры за 10 лет создали вручную ≈1500 объектов: зданий, достопримечательностей и инфраструктурных строений. Это были очень лёгкие модели. Первые — совсем упрощённые. Для минимального веса использовалась простая чёрно-белая 8-битовая текстура. В дальнейшем, с развитием движка карты и способов оптимизации размеров, детализацию постепенно получилось повысить.
Делали в 3ds Max, Blender 3D и Maya, а потом прогоняли через плагин, который их ещё сильнее сжимал и добавлял защиту. Одну модель создавали за три-пять дней, в зависимости от размера и количества деталей здания.
Общие принципы
Сегодня технологии позволяют создавать более сложные красивые модели с текстурами и подсветкой. Ещё, конечно, нельзя нарисовать реалистичным весь город, поэтому мы начали со знаковых зданий, достопримечательностей, исторически важных объектов и архитектурных шедевров.
Перед началом работы поставили себе правила:
- Модели должны быть узнаваемыми
У каждого здания — уникальный характер с собственной исторической и культурной ценностью. И это нужно передать. - Модели должны быть лёгкими
Так как они будут отображаться на смартфонах и других мобильных устройствах. - Модели должны быть детализированными
Мы хотели уделить особое внимание деталям каждого здания, чтобы передать их главные архитектурные особенности. - Модели должны быть оптимизированными
Чтобы они занимали минимальное количество памяти и быстро загружались.
Для BIM-сообщества — профессиональных строителей и архитектурных эстетов — облегчённая модель может показаться недостаточно проработанной, ведь мы не отображаем детально все элементы здания: не моделируем капитель с подробным отображением акантов, кауликоли, каннелюр на фусте.
Каждый элемент существенно увеличит количество полигонов, из вершин которых состоит модель. А значит сильно увеличит их размер и снизит скорость загрузки и производительность. Такая детализация будет избыточной, когда нужно построить маршрут, найти товары или банкетный зал, посмотреть режим работы и решить множество других задач, в которых спасает 2ГИС.
Мы постарались подобрать оптимальный уровень детальности — чтобы с одной стороны они были узнаваемыми, с другой — с ними было комфортно и приятно работать на всех устройствах.
Сегодня в 2ГИС 1000 новых высокоточных моделей. Все здания разные с точки зрения архитектурных течений: от неоклассицизма и ампира до модерна и хай-тека.
Точное моделирование
Трёхмерная модель — это тысячи соединённых между собой точек, образующих форму зданий, с наложенными текстурами, которые создают реалистичный облик.
Масштабные модели со сложной архитектурой, конечно, могут занимать больше времени. Если у здания уже отрисована объёмная модель старого типа, как у Театра оперы и балета в Новосибирске, работа сократится в два раза.
В целом движок позволяет добавить даже отражения на окнах и блики на воде в реальном времени, но всё это очень много весит.
Наши 3D-объекты всегда видны в онлайне и в мобильном приложении, да ещё и в дневной и ночной темах. Мы уделяем большое внимание оптимизации — подбираем формат моделей, которые будут максимально детализированы и приемлемого размера. Это важно для скорости загрузки модели при просмотре.
В этом плане наша работа пересекается с геймдев-индустрией: разработчики игр также постоянно оптимизируют подход к моделированию, чтобы предоставить лучшую картинку и «не взорвать» девайс.
Сегодня моделлеры в первую очередь отрисовывают на зданиях те элементы, которые больше 20 см, и используют универсальные модели для популярных объектов, например, лавочек.
Ещё одна важная особенность — мы создаём трёхмерные объекты так, чтобы они гармонично смотрелись на картах и сохраняли удобную навигацию для пользователей. Реалистичные модели отрисованы в общей палитре — реальные цвета сделали бы карту пёстрой и неаккуратной.
Из-за этого пока не получается автоматизировать добавление новых объектов — брать готовые *.gltf-модели со стоков, прогонять их через скрипт и заводить в продукт.
Внимание к деталям
Технология создания 3D-моделей зданий основана на качественных фотографиях. Моделлер должен по фотографиям понять и повторить внешний вид объекта.
Используются все доступные фото- и видеоматериалы, сделанные с разных позиций относительно центра здания с шагом ≈45°. Если здание большое и/или сложной конфигурации, шаг можно уменьшить до ≈30°.
Если кадров не хватает, отправляем своих специалистов, чтобы они сделали фотографии с нужных ракурсов.
Все ключевые/сложные/фигурные/повторяющиеся элементы, которые определяют его узнаваемость, нужно снять чётко — без снега, грязи, падающих теней. Золотое правило — чем больше фото, тем лучше. Даже если здание симметрично, мы просим запечатлеть каждую из его сторон.
Благодаря такому подходу удалось проделать огромный и интересный путь от первой 3D-модели с небольшой детализаций до самых последних сложных шедевров.
Квадратные метры
Естественно, возможность показать объект с красивыми текстурами понравилась и строительным компаниям. В феврале 2023 года мы добавили первую коммерческую 3D-модель, созданную по проектным планам застройщика — ЖК «Грандо» в Новосибирске.
Так как ЖК — это не только дома, но и окружение, мы рисуем и придомовые территории: местность у подъездов, собственные набережные, детские и воркаут-площадки. В этом проекте получилось нарисовать даже зеркальные отражения фасадов — важную часть этих зданий.
Для больших застройщиков и случаев, когда объекты хочется показать более детально, мы подготовили сервис для нашего MapGL JS API. С ним можно добавить карту со своими 3D-моделями на свой сайт или в приложение даже с поэтажным планом.
Озеленение
Первые реалистичные новогодние ёлки появились на картах 50 городов ещё в декабре 2022 года.
Но глобальное озеленение карт — задача посложнее. Важно, чтобы озеленённые объекты и смотрелись красиво, и достоверно отражали реальную среду на местности.
Представим себе какой-нибудь большой городской объект. Например, парк.
Первое, на что мы обратим внимание — это обилие зелени. Если с фотографии убрать деревья, картина будет совсем другая. У нас останется, скорее, план-схема парка — сориентироваться можно, но впечатления уже не те.
Зелёные зоны — самые разные виды растительности, не только абстрактные хвойные или лиственные деревья, но также крупные кустарники или, например, пальмы. На одних территориях деревья высажены аллеями, на других — целыми массивами. И даже одиночно стоящие деревья игнорировать не хочется.
После стольких лет отрисовки зданий разрабатывать растительность оказалось совершенно новым опытом — занимательным и интригующим.
В первую очередь надо было создать 3D-модели деревьев, которые соответствовали бы концепции. Также важно было попробовать разные формы и структуры, подобрать цвет, вид и образ деревьев, которые будут подходить именно для карты 2ГИС. В итоге получилось много разных угловатых ёлок.
Во второй итерации решили посмотреть в другую сторону — сделать модели наряднее и живее. Лиственные деревья стали радикально другими, с длинными стройными стволами и изящными шапками, а ёлки нарядились в ажурные юбочки.
На этом этапе поняли, что хочется видеть в 2ГИС: лаконичный внешний вид деревьев, который дополняет и наполняет карту, но не перегружает и не стягивает на себя внимание. В общем, золотая середина между первой и второй итерациями.
Чтобы массивы деревьев получались более хаотичными и реалистичными, «сажаем» их с помощью рандомизации — деревья повёрнуты под разными углами, разного размера и сдвинуты относительно исходной точки. Кроме этого, мы вручную расставили больше 13 млн деревьев.
И конечно, если мы говорим о реалистичности — деревья меняют цвет в зависимости от времени года. Зарядье в 2ГИС
Дороги
Сложно представить реалистичные карты без объёмных дорог. Добавили объёма дорожным развязкам и тоннелям.
Раньше дороги на карте 2ГИС были одного уровня и пересекались на одной плоскости. Сейчас дороги, которые идут выше, рисуются поверх других:
У дорог, которые уходят в тоннели, появились на карте въезды и выезды, а их «внутренняя часть» спрятана под землёй:
Мосты и эстакады стоят на опорах и отбрасывают тень:
Линия маршрута рисуется полупрозрачной в тех местах, где она идёт под какими-то объектами — под мостами и эстакадами, внутри туннелей:
О технической реализации объёма у дорог можно почитать в нашем посте на Хабре.
Следующим этапом добавим разметку.
Что дальше
Мы в начале большого пути: результаты наших исследований и поисков будут постепенно появляться в ваших девайсах в 2023 году — в проектах, городах или на конкретных территориях.
Карты 2ГИС будут становиться всё более реалистичными, делая жизнь в городе ещё удобнее.