Pull to refresh

«Игрушечная» картография или 3D карты своими руками

Reading time4 min
Views11K
Около полутора лет назад на Хабре был размещен пост про уникальные карты китайского поисковика Baidu (для тех, кто не видел, вот он: http://habrahabr.ru/post/115107/). Я был поражен тем, насколько кропотливо, детально и красиво эти карты сделаны, поэтому однажды мы, вместе с группой товарищей, решили разобраться в процессе создания Baidu-карт и сделать собственные карты всего мира, которые выглядели бы так же круто. Под катом много картинок, раскрытие секрета Baidu-подобных карт и то, что получилось у нас.




Поиски решения (как китайцы это сделали?)


Всем очевидно, что подобные вещи — что-то совсем новое для картографии. Они красивые, они интересные, их можно рассматривать часами. Они понятные, в конце концов, ведь наверняка легче найти здание, где у тебя назначена встреча, если на карте размещена его детальная копия, а не унылый серый прямоугольник. Похожие карты делают не только Baidu; вот навскидку несколько примеров: Edushi (shanghai.edushi.com), город Керчь (http://gorodkerch.com/map/), даже Bing на некоторых уровнях зума показывает не аэрофотографии (http://binged.it/O3F5Ez)

С первого взгляда ясно, что создание карты такого уровня детальности требует огромных ресурсов. Первым делом в голову приходят мысли о труде миллионов специально обученных китайцев, которые старательно, по пикселю отрисовывают каждое здание, дерево и скамейку. Мы начали именно с этого (не с поиска лишнего миллиона китайских художников, а с отрисовки зданий методом пиксель-арта).

Очень скоро стало ясно, что создание даже одного домика требует невероятных затрат времени и сил. Мы все больше убеждались, что Baidu — это 3d-карты, что они рендерятся, а не рисуются пиксель к пикселю старательными китайскими ребятами. На самом деле, о том, что карты были созданы в 3d, говорит многое: затенения между близстоящими зданиями, одинаковые детали и предметы, которые расположены к камере под разным углом. В конце концов, на сайте http://www.o.cn/ (производитель карт для Baidu) мы нашли страницу, которая полностью подтвердила догадки: http://gis.o.cn/en/3d-process.html. Итак, сомнений не оставалось, Baidu — это просто очень качественно отрендеренные 3d- карты.

Наши эксперименты


Но даже выявление технологии не решало всех проблем — оставался открытым вопрос, кто и каким образом станет наполнять подобные карты. Окей, каждый объект не нужно рисовать руками, одинаковые здания можно не перерисовывать с нуля, а лишь перерендерить… Тем не менее, где брать настолько детальные, красивые и подробные модели зданий?

Такие вопросы и поиски привели нас к решению сделать карту коллаборативной, то есть создавать ее вместе с пользователями. Только представьте себе: пользователи рисуют не линии и прямоугольники в OpenStreetMap или Викимапии, а красивые, почти игрушечные модели реально существующих домов!

В качестве тестового объекта был выбран кампус Стэнфордского университета. Чтобы понять, насколько крутые карты можно производить, и разобраться в процессе их создания, мы решили сперва смоделировать местность самостоятельно. За время работы над картой университета было выяснено, что получить картинку уровня Baidu абсолютно реально силами v-ray:

Мы можем рендерить не единственный взгляд на город с севера на юг, а все четыре его вида, а то и больше:

Меняя свет в сцене, легко получить ночной вид:

3d оставляет бешеный простор для детализации и задротства — можно рисовать разметку, фонари, кусты, скамейки, прочие вкусные штуки:

Итак, мы смоделировали на пробу Стэнфордский университет и перешли к созданию карты Сан-Франциско, решив дать доступ к этому процессу всем желающим. Теперь сборка карты происходит следующим образом: пользователи в приложении-3d-конструкторе (мы выбрали Unity 3d) создают модели домов, а на сервере в пакете v-ray standalone рендерятся и отправляются на общую карту красивые картинки.

В итоге, полный цикл работы приложения выглядит так:
  • Пользователь рисует периметр дома поверх спутниковых карт, как в OSM. Мы строим замкнутый контур и передаем его в Unity, а также запоминаем расположение дома на карте.
  • В конструкторе юзер создает модель дома: текстурирует её, размещает окна, двери, эркеры, карнизы, задает форму крыши — словом, превращает прямоугольник в высокодетализированную модель. Когда модель готова, она отправляется на карту. Unity экспортирует сцену в obj и пересылает на сервер.
  • Сервер принимает obj, вычисляет положение дома на карте, размещает его в сцене с картой города, где уже настроен свет и созданы v-ray материалы. Затем сервер высчитывает, какие тайлы карты изменились из-за постановки дома, потайлово рендерит его, рендерит SVG для хайлайтов и отправляет всё это на web-сервер.

Заключение


Сейчас мы готовим к релизу в AppStore бета-версию приложения, с помощью которого пользователи смогут создавать карту Сан-Франциско. Мы научились делать картинки превосходного качества, с мельчайшей детализацией и точным соответствием географическому положению.
В самом начале мы предположили, что пользователям будет очень интересно делать такие карты, но никогда не проверяли это допущение на практике. Сегодня мы первый раз показываем свою работу широкому кругу людей, и поэтому хотим спросить: было бы вам интересно (да-да, лично тебе, хабраюзер) участвовать в наполнении подобных карт? И у нас есть еще один вопрос: как/для чего конкретно вам было бы интересно использовать эти карты/технологию?

Будем рады любому фидбэку!

Посмотреть наши карты вы можете здесь:
  • cutetown.net — сайт с картой Стэнфордского университета
  • cutetown.net/hires — хайрез. На нем можно разглядеть все мелкие детали типа велостоянок, столиков в кафе, разметки и т.д.
  • cutetown.net/sf — карта Сан-Франциско, для которой готовится релиз приложения


p.s. Предвосхищая холивары на тему “фу, карта лишь с четырьмя видами — это фигня, ничто и никогда не заменит real 3d”: просто взгляните на картинку. Здесь изображено одно и то же здание Стэнфордской церкви. Так оно выглядит на свежих 3d-картах от Apple и на нашей карте. Мы думаем, разница очевидна.



p.p.s. Вчера мы уже пытались публиковаться на Хабре, но подвел биллинг GAE и мы вышли из квоты.
Tags:
Hubs:
Total votes 214: ↑202 and ↓12+190
Comments118

Articles