2 года назад я выпустил игру Generation Streets, в которой можно загрузить любую точку планеты. А недавно состоялся релиз Microsoft Flight Simulator 2020, имеющий такую же возможность, в связи с чем стало интересно сравнить мою 3D-модель и 3D-модель MFS2020.
Игру я разрабатывал в одиночку на самописном движке, поэтому не могу похвастаться современной графикой. Да и детализация мира довольно низкая, во многом из-за того, что я не использовал лицензируемые спутниковые снимки: единственным источником геоданных была свободная карта OpenStreetMap (а также карта рельефа SRTM/NASADEM/ASTERGDEM). Бюджет игры составил приблизительно 0 рублей, плюс 6 евро в месяц за аренду сервера для раздачи геоданных пользователям.
Главный элемент игры — генератор 3D-мира, который, если не вдаваться в подробности, превращает плоскую векторную карту в трёхмерную модель, вот так:
Из-за недостатка данных, а так же для упрощения разработки, рендерер был сделан в псевдо-постапокалиптическом стиле. Таким образом можно сюжетно объяснить серые здания, о реальном цвете которых на самом деле данных нет, и разрушенные мосты, о форме и конструкции тоже нет данных, к тому же писать генератор сложных конструкций слишком долго для разработчика-одиночки.
У Microsoft Flight Simulator другая ситуация. Там роль источника данных играют не векторные карты, а спутниковые снимки Bing. Технология, разработанная компанией Blackshark, распознаёт на изображениях здания и по этим данным генерирует 3D-модель. Задача принципиально другая и требует совершенно других инструментов, в том числе машинного обучения.
Снимки позволяют определить цвет крыш и фасадов, текстуру здания (за это вроде как отвечают и «наземные» фотографии с геолокацией), а так же всё связанное с природой и ландшафтом, что крайне положительно сказалось на качестве 3D моделей.
Что ж, давайте посмотрим, насколько красивая 3D-модель нашего мира получилась у Microsoft и сильно ли от неё отстаёт рендерер Generation Streets, созданный на основе только открытых данных. За неимением возможности запустить MFS самостоятельно, я буду использовать найденные на просторах интернета скриншоты других игроков.
Жилые многоквартирные дома
В первую очередь в глаза бросается озеленение. Я расставлял деревья в случайном порядке и, видимо, можно было бы их расставить и побольше, благодаря озеленению картинка у MFS заметно сочнее. Также в моём рендерере используется довольно скудный набор текстур, в результате чего почти все здания выглядят как старые хрущёвки. Это будет заметно и на дальнейших скриншотах.
Кроме этого, сразу видно, насколько у MFS более современный движок (я про освещение, тени и дальность прорисовки). Но в целом, не смотря на моё очевидное отставание от MFS по всем параметрам, считаю свой результат рендера жилой застройки вполне достойным.
Частные дома и сельская местность
А вот тут начинаются проблемы.
Во-первых, частные дома в OpenStreetMap прорисованы далеко не везде, во многих населенных пунктах нарисованы только дороги. В этом случае дома я расставляю в случайном порядке и, разумеется, ни на какое совпадение с реальной местностью не претендую.
Во-вторых, даже если дома внесены в базу OSM, на участке могут располагаться сад, огород, беседки неизвестно что ещё. В моём рендерере ничего этого нет, а MFS в этих случаях просто ставит подложку со спутникового снимка и дело в шляпе.
Достопримечательности
Начну с маленького повода для гордости.
Вот так выглядит Красная площадь по версии Microsoft:
Почему всё плоское? Почему вместо зданий только их тени? Где Храм Василия Блаженного? Где кремлёвская стена? Где кремлёвские башни? Где исторический музей? А вот где:
Участники OpenStreetMap достаточно тщательно нанесли на карту геометрию зданий средствами OSM 3D Buildings, что позволило моему рендереру довольно достоверно всё отрисовать. Детализация сложных 3D-объектов в OSM как правило довольно низкая, поэтому для по-настоящему красивой картинки такие здания должны отдельно моделироваться вручную.
Разработчики MFS2020 уделили внимание особым достопримечательностям вроде статуи Свободы или Эйфелевой башни, но на московский Кремль, очевидно, времени не хватило. Зато его хватило у пользователей-энтузиастов — уже появился любительский аддон с детализированными московскими достопримечательностями.
Справедливости ради, некоторые исторические здания в MFS всё же прорисованы очень детально, например, МГУ. В моём же рендерере угадывается только контур. Ну и традиционная хрущевская текстура, куда же без неё.
Что касается остальных достопримечательностей, не смоделированных вручную, тут пасуют оба рендера. Достаточно взглянуть на Родину-мать в Волгограде:
Но MFS хотя бы есть тень, за это плюсик Майкрософту.
Ещё кое-что
Хочу обратить ваше внимание ещё на пару интересных моментов.
Во-первых, линии электропередач.
В Generation Streets опоры расставлены вдоль размеченных в OpenStreetMap линий электропередач, всюду висят провода, в том числе между опорами уличного освещения. Результат неплохой, хоть и не всегда выглядит достоверно.
А вот в Microsoft Flight Simulator ЛЭП отсутствуют, видны только тени от опор. И это странно, ведь в малой авиации при полётах на малой высоте провода ЛЭП представляют серьезную угрозу, и пилоту следует научиться уметь их видеть и остерегаться. И раз MFS позиционируется как профессиональный авиасимулятор, такая важная в воздушном пространстве вещь, как ЛЭП, должна была быть реализована. Если я ошибаюсь, поправьте меня в комментариях.
Во-вторых, мосты.
У Microsoft Flight Simulator они местами уходят под воду. Мои мосты тоже далеки от идеала, но я хотя бы обосновал это сюжетно (постапокалипсис), поэтому имею моральное право рисовать мосты кривыми и разрушенными.
Итого
Как видите, для создания игры с возможностью загрузки целой планетой в масштабе 1:1 не обязательно иметь миллионные бюджеты. Благодаря проекту OpenStreetMap доступ к свободным геоданным есть у каждого, причём в Generation Streets я использовал ещё не все возможности OSM. А с более современным движком и доработанным 3D-генератором картинку можно сделать гораздо красивей.
Надо отдать должное и команде Blackshark, которая проделала большую работу по распознаванию объектов на спутниковых снимках, особенно в части цветов и текстур зданий. Будем надеяться, что в дальнейшем все огрехи рендерера будут исправляться, ну а я, в свою очередь, не буду забрасывать идею и, возможно, когда-нибудь представлю миру новую версию. Но это будет уже другая история.
Generation Streets в Steam (бесплатно + 5$ для разблокировки всех территорий)
Анонс и краткая история создания (пост 2018 года)