Создание станции метро в 3ds max
Масштаб * : в 1 см — 12.3 км (по горизонтали), 8 м (в глубину)
О модели
Трехмерная модель метро построена на основе общедоступных координат станций метро и глубин их заложения. Широта и долгота станций преобразованы в местные координаты относительно точки «нулевого километра». Глубины заложения отсчитываются от локальной высоты поверхности земли над уровнем моря. Таким образом, модель показывает действительное положение станций в пространстве с учетом рельефа местности. Масштаб глубин увеличен в раз по сравнению с масштабом координат.
Реализация
Модель создана на JavaScript с использованием CSS3. Она работает в новейших версиях браузеров Chrome, Firefox * , Internet Explorer ** начиная с IE9, Opera *** , Safari. Вращайте левой кнопкой мыши, масштабируйте правой кнопкой. Выбирайте ветки мышью (можно с Ctrl).
История
Существуют более ранние программы-справочники под Windows, отображающие схемы метро различных городов мира и рассчитывающие маршруты между станциями: pMetro (Борис Мурадов, 2003–2011) — есть 3D-модели станций и схемы с глубинами, схемы регулярно обновляются; MMetro (Константин Штенников, 1999–2008); другие проекты можно найти здесь и здесь. Однако они не показывают трехмерную модель метро в том виде, в котором мне хотелось увидеть.
Источники
Обсудить
О проекте говорят
РУДН 30.11.2018
Евгений Варфоломеев: «3D модель метро – проект для души»
Москва 24 07.09.2018 09:36
Московская подземка появилась в формате 3D
Москва 24 10.11.2017
3D-карта, шутки студентов и защита от пандемии. Самые необычные схемы метро
Московский транспорт 19.02.2021
Учёные из РУДН сделали портал с 3D моделями каждой станции метро
MAXIM Online 03.09.2018
Схема московского метро в правдивом 3D
UPD: По просьбам в комментах добавляю ссылку на вращабельную схему на Javascript
К сожалению, код javascript вставить в тело поста не удалось
Добрый день! Недавно я читал блог одного урбаниста, который рассуждал о том, какая должна быть идеальная схема метро.Схему метро можно рисовать исходя из двух принципов:
- Схема должна быть удобной и простой для запоминания и ориентирования
- Схема должна соответствовать географии города
Достаточно вспомнить, как выглядит схема Московского метро с красивыми кольцами и прямыми линиями:
и сравнить с географически точным планом:
На плане видно что кольца вовсе не являются идеально ровными и концентрическими, линии изгибаются гораздо сильнее, чем в схеме, а плотность станций в центре города настолько велика, что в плане практически невозможно разобраться.
И хотя второе изображение гораздо точнее отображает реальность, видно, что пользоваться для планирования маршрута в метро удобнее первой схемой.
И тут мне в голову пришла следующая мысль: «Как выглядело бы метро, если бы критерием для построения схемы являлось время, требуемое для перемещения от одной станции к другой?». То есть если от одной станции до другой добраться быстро, то пространственно они на схеме располагались бы недалеко.
Очевидно, что в двумерном пространстве невозможно нарисовать такую схему, в которой расстояние между двумя станциями равнялось бы времени путешествия от одной к другой из-за сложной топологии графа метро.
Также есть догадка, что такое точно возможно при построении схемы в пространстве с высокой размерностью (верхняя оценка n-1, где n- число станций). Для пространства с небольшим количеством измерений такую схему можно построить лишь приближенно.
Задача построения карты метро по времени путешествия выглядит типичной задачей оптимизации.
Пусть у нас есть начальный набор координат всех станций (X,Y,Z) и целевая матрица попарных времен (расстояний). Можно сконструировать метрику «неправильность» данного набора координат и далее минимизировать ее методом градиентного спуска по каждой из координат каждой станции. В качестве метрики можно взять простую функцию среднеквадратичного отклонения расстояний.
Что же, осталось дело за малым — нужно получить данные о том, сколько времени следует затратить на путешествие от любой станции московского метро к любой другой.
Первой мыслью было проверить api яндекс метро и вытащить оттуда эти данные. К сожалению, описания api и найти не удалось. Смотреть времена вручную в приложении долго (в метро 268 станций и размер матрицы времен 268*268=71824). Поэтому я решил разобраться в исходных данных Яндекс Метро. Так как доступа к серверу нет, был скачан apk файл с приложением и обнаружены необходимые данные. Вся информация о метро замечательно структурирована и хранится в формате JSON в папке assets/metrokit/ apk-архива приложения. Все данные хранятся в self-explanotary структурах. Meta.json содержит информацию о городах, схемы которых присутствуют в приложении, а также id данных схем.
По id схемы находим папку с JSON, относящиеся и к Москве.
Файл data.json содержит основную информацию о графе метро, включая названия узлов графа, id узлов, географические координаты узлов, информацию о переходах с одной станции на другую (id, время перехода, тип перехода — перегон или пешком, по улицу или нет, время интересующее нас в секундах) а также много дополнительной информации о входах и выходах со станции. С этим достаточно легко разобраться. Начнем писать код для построения нашей схемы.
Импортируем необходимые библиотеки:
Структура словарей и списков python полностью соответствует структуре формата json, поэтому читаем иннформацию о метро и создаем объекты, соответствующие json объектам.
Создаем словарь, ставящий в соответствие узлы графа и станции (это необходима для так как к именам привязаны именно станции, а не узлы графа)
Также на всякий случай сохраним координаты узлов для возможности построения географической карты (нормированы на диапазон 0-1)
Создадим граф метро со связями. Зададим веса каждой связи. Вес соответствует времени в пути. Удалим узлы, не являющиеся станциями (по-моему это выходы из метро а связи к ним нужны для яндекс карт при расчете времени, но точно не разбирался) создадим словарь id узла- реальное название на русском языке
Определим к какой ветке (к какому id ветки) относится каждый узел (это понадобится позже для раскрашивания линий метро на схеме)
библиотека networkx позволяет найти длину кратчайшего пути от одного узла к другому при помощи функции nx.shortest_path_length(G, id1, id2, weight='length'), поэтому можно считать что с подготовкой данных закончили. Следующее, что необходимо сделать — подготовить модель, которая будет оптимизировать координаты станций.
Для этого разберемяся, что будет даваться на вход, на выход и как будем оптимизировать матрицу координат станций.
Предположим, у нас есть матрица всех координат (3x268). Умножение one-hot вектора (вектора, где везде 0, кроме одной единичной координаты на месте n) размерности 268 на данную матрицу координат даст 3 координаты, соответствующие станции n. Если мы возьмем пару one-hot векторов и умножим их на необходимую матрицу, то получим две тройки координат. Из пары координат можно расчитать евклидово расстояние между станциями. Таким образом, можно определить архитектуру нашей модели:
на вход мы подаем пару станций, на выходе получаем расстояние между ними.
После того, как мы определились с форматом данных для обучения модели, подготовим данные с использованием поиска расстояний на графе:
Оптимизируем методом градиентного спуска матрицу координат станций.
Если мы будем использовать фреймворк keras для машинного обучения, то получим следующее:
заметим, что в качестве начальных координат в слое layer1 мы используем реальные географические координаты -это необходимо для того, чтобы не попасть в локальный минимум функции СКО. Третью координату инициализируем ненулевой для получения ненулевого градиента (если в начале карта будет абсолютно плоской, смещение любой станции вверх или вниз будет равнозначно, следовательно градиент равен 0 и оптимизации z не произойдет). Последний элемент нашей модели (Dense(1)) влияет на масштабирование схемы для соответствия временной шкале.
Расстояние будем измерять в часах, а не секундах, так как порядки расстояний — около 1 часа, а для более эффективного обучении модели важно, чтобы все величины (входные данные, веса, targetы) были примерно одного порядка по величине. Если эти значения близки к 1, то можно использовать стандартные значения шага при оптимизации (0.001-0.01).
Строка model.layers[2].trainable=False замораживает координаты станций и на первом этапе варьируется один параметр — масштаб. После подбора масштаба нашей схемы размораживаем координаты и оптимизируем уже их:
видим, что на вход подаем сразу все пары станций, на выходе — все расстояния и наша оптимизация- full batch gradient descent (один шаг на всех данных). Функция loss в данном случае — среднеквадратичное отклонение и можно видеть, что оно составило 0.015 в конце обучения, что значит среднеквадратичное отклонение менее чем в 1 минуты для любой пары станций. Иными словами, полученная схема позволяет точно узнать расстояние, которое требуется, чтобы добраться от одной станции к другой по расстоянию по прямой между станциями сточностью +-1 минута!
Но давайте посмотрим, как выглядит наша схема!
получим координаты станций, возьмем цветовую кодировку линий и построим 3d изображение с подписями (код для красивого отображения подписей взят отсюда):
Так как возникли трудности с конвертацией в интерактивный 3d формат для браузера, выкладываю гифки:
более красиво и узнаваемо выглядит версия без текста:
UPD: Добавим линии метро нужного цвета и создадим гифку. Черные линии — переходы между станциями:
Из данной схемы можно сделать некоторые интересные выводы, которые не столь очевидны из других схем. Для некоторых веток, например зеленой, синей или фиолетовой МЦК (розовое кольцо) практически бесполезно из-за неудобных пересадок, что видно в удалении кольца от этих веток. Самые длинные по времени маршруты — от коммунарки до щелкого или пятницкого шоссе (коней красной и розовая/синяя линии) длинные маршруты так же алмаатинская-рассказовка и бунинская аллея-некрасовка. На севере Москвы, судя по плану, происходит частичное дублирование серой и салатовой ветками — они находятся рядом на схеме. Было бы итересно посмотреть на то, как новые линии (МЦД, БКЛ) и кто чаще будет пользоваться ими. В любом случае, надеюсь, подобные схемы могут быть интересным инструментам анализа, вдохновения и планирования поездок.
Всегда хотел посмотреть на переплетения переходов между станциями. Как оказалось кто-то создал такие модели в 3D.
просто сногсшибательный проект, я когда наткнулся на него был просто поражен!! там ведь всё двигается, поезда ездят, время тикает, ступеньки на эскалаторе ползут.. ппц
Скачал.
Жму в меню 3D. Отображает всю карту метрополитена. А вот так , чтоб как на картинке у автора поста - такого не нашёл.
ЧТО Я ДЕЛАЮ НЕ ТАК ??
Очень круто, заморочился же человек. Столько информации собрано в одной программе, яндекс позавидует :)
выглядит как карта к cs 1.6
В Сеуле такие схемы висят на всех станциях, которые я видел. Показывают все этажи (включая землю), лифты, эскалаторы, куда какие поезда отправляются, номера выходов.Блин. я думал тут расскажут как эти модели выцепить с программы. сами файлы то я нашел, а чем открыть и конвертнуть. увы
Вот ещё хороший сайт по московскому метро - показывает расположение переходов и выходов на поверхность, жаль что не обновляется.
Так, на wine самое интересное не пашет (это на случай если сюда забредут те кому это интересно). Сама прога пашет, а макеты - падают. Надо будет дома под виндой заценить. На маке выглядет как какашка.
да, помню эту программу. Я в ней ещё считал сколько времени от станции до станции ездить.
Интереснее было бы взглянуть на всякие служебные проходы и прочие скрытые от глаз обывателей зоны. Но, работа, конечно колоссальная. Возможно. Качать я ее, конечно, не буду.
Огромное тебе спасибо, всегда мечтал поглядеть на 3D модель метро.
@admin, и вам спасибо за то, что внизу под комментариями есть похожие посты, без этого я бы не увидел этого поста.
я чувствую себя идиотом, но не могу найти где скачать нормальную версию программы, а не пустую
класса с 6-го мечтал об этом! В PMETRO есть? помню отец её юзал ещё когда у меня пейджер был
А я всегда мечтал сделтаь набор карты для CS - Moscow Metro. Потом очень интересные разговоры бы были: я за этим эскалатором аж троих завалил из Глока. И такой текст в реальном метро, проходя мимо не менее реального местного "полицейского". =)
Да пригодятся эти изображения братьям на пути Джихада, альхамдулиЛлях!
в чем 3D делали интересно
очень похоже на скетчап
Еще нужны модельки охраны, которая кричит "Съемка запрещена!"
Картинки в моей голове, когда я слышу слово "муфтий"
Ответ на пост «Муфтий Москвы, просит обустроить метро Москвы для мусульман»
Может сначала сделать в метро туалеты и поставить урны?
Ах да, безопасность.
Муфтий Москвы, просит обустроить метро Москвы для мусульман
Намаз очень удобно совершать у себя дома, на родине!
Русские же не просят построить больше православных храмов на Кавказе или в Средней Азии.
Предлагаю тогда обустроить в метро ещё православные храмы, буддийские датсаны и что там ещё требуется, чтобы уважить чувства всех верующих. Места в метро всем хватит!
Подготовка к прибытию 300 тысяч новых мигрантов в Москву — идет полным ходом!
P.S В Исламе допускается совершать меньше молитв и ракатов в каждой молитве, если человек в пути.
Преподаватель из РУДН Евгений Варфоломеев выложил на днях интерактивную трёхмерную карту московского метро .
На самом же деле кольцевая линия — не круг, а метро — не плоское. Вот он и расставил реальные координаты и глубины.
И изменения по годам — тоже.
Сейчас мы видим схему метро как-то так, только спрямлённую. Скриншот с сайта проекта "Модель Московского метро в 3D" Сейчас мы видим схему метро как-то так, только спрямлённую. Скриншот с сайта проекта "Модель Московского метро в 3D"Что умеет 3D-карта
1. Показывать реальное положение станций друг относительно друга. Можно найти самую глубокую или самую поднятую над уровнем моря. Можно посмотреть информацию по каждой: год постройки, глубина залегания и др. Можно понять, наконец, какой перепад высот надо преодолеть на том эскалаторе, на котором утром успеваете все соцсети прочитать.
Вот "Тёплый стан прямо на возвышенности расположен. Скриншот с сайта проекта "Модель Московского метро в 3D" Вот "Тёплый стан прямо на возвышенности расположен. Скриншот с сайта проекта "Модель Московского метро в 3D"Можно щёлкнуть на любую линию и покрутить её отдельно.
2. Всё то же самое, но за все прошлые годы. Можно посмотреть на самые первые ветки метро.
Год 1935. Скриншот с сайта проекта "Модель Московского метро в 3D" Год 1935. Скриншот с сайта проекта "Модель Московского метро в 3D"Например, когда метро только запустили, в 1935 году, оно было совсем небольшим. И, как мы видим, тот самый переход "Библиотека имени Ленина" — "Арбатская" (тогда станции назывались иначе) соединяет платформы с очень большой разницей по глубине заложения. Синяя ветка выше!
Год 1954. Скриншот с сайта проекта "Модель Московского метро в 3D" Год 1954. Скриншот с сайта проекта "Модель Московского метро в 3D"А вот 1954 год — только замкнули кольцо (на карте можно выключить свет).
Год 2021. Скриншот с сайта проекта "Модель Московского метро в 3D" Год 2021. Скриншот с сайта проекта "Модель Московского метро в 3D"А вот наши дни. Розовое кольцо МЦК поверху — надписи тоже можно отключить, а то современная схема выглядит совсем уж адово, московское метро и так уже давно невозможно объехать за один день.
Модель Московского метро в 3D
Вот ссылка, поиграйте сами. Волшебная же штука.
Использованы реальные данные
Координаты расположения станций, глубина их заложения и данные о рельефе местности — открытая информация. Автор карты собрал её по разным источникам:
Читайте также: